Computer Science

    트랜잭션의 본질 (DB 스터디 7주차)

    트랜잭션의 본질 (DB 스터디 7주차)

    "관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행 목표 트랜잭션의 기본을 파악 RDB에서 트랜잭션을 사용해 데이터 정합성을 보장하는 방법 14.1 트랜잭션 데이터를 올바르게 보장하기 위해 고안된 방법 실제 애플리케이션 개발에서는 관계형 모델(정규화)와 트랜잭션을 모두 구현해야 데이터의 정합성을 보장 가능 트랜잭션의 기능 트랜잭션이 필요한 상황 DB 서버에 여러 개의 클라이언트로부터 동시에 엑세스가 발생하는 경우 DB 서버 or 애플리케이션이 갱신 처리 도중에 중단되어 데이터 부정합이 발생하는 경우 ex) 은행 계좌 입/출금 처리 잔액 100만원, A 트랜잭션은 30만원 입금 처리, B 트랜잭션은 20만원 출금 처리 트랜잭션 A 잔액 조회 : 100만원 트랜잭션 B 잔액 조회 ..

    웹 응용프로그램을 위한 데이터 구조 (DB 스터디 6주차)

    웹 응용프로그램을 위한 데이터 구조 (DB 스터디 6주차)

    "관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행 목표 대규모 엑세스를 감당해야하는 애플리케이션은 RDB를 이용해서는 성능의 한계를 직면한다. 데이터 모델을 유지하면서 물리적인 한계에 대응하는 법을 알아본다. 12.1 캐시라는 개념 캐시가 사용되는 곳 CPU 캐시 메모리 TLB(Translation Lookaside Buffer, 가상 메모리의 논리 주소와 물리 주소 매핑하는 캐시 메모리) 디스크 캐시, 파일 시스템 캐시 브라우저 콘텐츠 캐시, DNS 캐시 DB 버퍼 풀 등 캐시는 확실한 장점과 단점을 갖기 때문에 확실하게 성능을 향상시킬 수 있을 때 적용하는 것이 바람직하다. 캐시의 장점 캐시의 본질은 비용이 많이드는 작업을 비용이 낮은 동일한 행위로 처리하는 작업 높은 비..

    인덱스 설계 전략 (DB 스터디 5주차)

    인덱스 설계 전략 (DB 스터디 5주차)

    11.1 인덱스의 동작 인덱스와 색인은 비슷 색인이 커지는 경우 키워드를 찾는데 시간이 걸림 색인 : 키워드가 문자 순서로 정렬돼 있고 해당 키워드가 있는 페이지의 번호가 기록되어 있다. RDB의 인덱스 RDB의 인덱스는 일반적으로 B+트리로 구성 B+트리는 데이터(인덱스의 값)가 저장된 리프 노드 + 리프 노드까지의 경로 역할을 하는 논리프 노드 탐색 경로의 출발점은 루트 노드 논리프 노드에는 자식 노드가 보유한 값 중에 최솟값이 저장 자식 노드는 페이지 ID에 대한 포인터가 저장 인덱스의 노드 수 = 테이블의 행 수 인덱스의 왼쪽과 검색 범위 B+트리는 등가 비교와 범위 검색(Between)에 사용 가능 LIKE 절 검색의 경우 와일드카드 위치에 따라 검색이 달라지므로 전방 일치를 권장한다. B+트리..

    이력 데이터와 친해지기 (DB 스터디 4주차)

    이력 데이터와 친해지기 (DB 스터디 4주차)

    9.1 이력 데이터의 문제점 응용프로그램이 로그 데이터를 테이블에 저장하거나,과거부터 현재에 이르는 데이터를 저장할 때 생성되는 것 일반적으로 타임스탬프나 버전 번호와 같이 저장 이력과 관계형 모델의 상성 문제 릴레이션은 집합이므로 각 요소간 순서가 존재하지 않는다. 이력에는 어느 쪽이 오래된 쪽인지, 새로운 것인지에 관한 순서가 존재한다. 이력 데이터는 쉽게 테이블이 커지므로 성능 저하가 나타날 수 있다. 이력 데이터의 예 # 현재 날짜가 2014-12-31인 경우, 턱걸이 기계의 현재 가격 구하는 쿼리 SELECT PRICE FROM PRICE_LIST WHERE ITEM = '턱걸이 기계' AND NOW() BETWEEN START_DATE AND END_DATE; 이력 데이터는 릴레이션이 시간축과..

    SELECT를 공략하자 (DB 스터디 4주차)

    SELECT를 공략하자 (DB 스터디 4주차)

    목표 SELECT에 대한 이해 8.1 SELECT는 SQL의 심장부 SELECT는 릴레이션이 연산 단위 한 개 이상의 릴레이션을 조합해 새로운 릴레이션을 뽑음 릴레이션 : 테이블 → 테이블의 데이터 조회는 "SELECT”만 가능 SELECT의 기본 구조 SELECT 컬럼 목록 # Projection FROM 테이블의 목록 # Product WHERE 검색 조건 # Restrict SELECT는 Projection, Product, Restrict의 연산이 한번에 이루어짐 Projection : 속성을 선택하는 연산 Product : 해당하는 릴레이션의 곱집합 Restrict : 특정 조건에 맞는 튜플을 포함한 릴레이션 반환 연산 SELECT 내 연산의 논리적인 순서 : Product → Restrict ..