본문 바로가기

데이터 중심 애플리케이션 설계

(3)
[데이터 중심 애플리케이션 설계] 3장 3. OLTP와 OLAP, 데이터 웨어하우스, 정리 인메모리 데이터베이스 디스크는 전원이 꺼져도 데이터가 손실되지 않으며 램보다 가격이 저렴했다. 하지만 램이 점점 저렴해지며 데이터셋 대부분을 메모리에 보관하는 방식이 생겨났다. 혹은 여러 장비 간 분산해서 보관할 수 있는데 이런 이유로 인메모리 데이터베이스가 개발됐다. 인메모리 데이터베이스는 지속성을 목표로 하는데, 이를 위한 방법은 특수 하드웨어 사용 디스크에 변경 사항의 로그 기록 or 디스크에 주기적인 스냅숏 기록 다른 장비에 인메모리 상태 복제 트랜잭션 처리나 분석? OLTP(온라인 트랜잭션 처리) 보통 애플리케이션은 색인을 사용해 일부 키에 대한 적은 수의 레코드를 찾는다. 레코드는 사용자의 입력을 기반으로 삽입되거나 갱신된다. (사용자 대상) OLAP(온라인 분석 처리) 데이터베이스를 데이터 ..
[데이터 중심 애플리케이션 설계] 3장 2. LSM 트리와 B 트리 해시 색인의 한계를 없앤 색인 구조를 살펴보자. SS 테이블과 LSM 트리 그림 3-3에서 로그 구조화 저장소 세그먼트는 키-값 쌍의 연속이다. 여기에 일련의 키-값 쌍을 키로 정렬해보자. 이런 형식을 정렬된 문자열 테이블 또는 SS테이블 이라고 부른다. 보다 나은 의 장점 세그먼트가 정렬되어 있기 때문에 병합 정렬이 가능하다. 특정 키를 찾기 위해서 메모리에 모든 키의 색인을 유지할 필요가 없다. 이미 정렬이 되어있기 때문에 키 B의 오프셋을 몰라도 A와 C의 오프셋 위치만 알면 그 사이에서 B를 찾으면 된다. 읽기 요청은 해당 레코드들을 블록으로 압축할 수 있다. 디스크 공간을 절약하고 I/O대역폭 사용도 줄일 수 있다. 디스크 상에 정렬된 구조를 유지하는 일은 가능하지만, 메모리에 유지하는 편이 훨..
[데이터 중심 애플리케이션 설계] 3장 1. 색인 3장은 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법을 설명한다. 가장 간단한 데이터베이스 구조 bash 함수 2개를 만들어 구현한 key-value 저장소. #!/bin/bash db_set(){ echo "$1, $2" >> database } db_get(){ grep "^$1, " database | sed -e "s/^$1,//" | tail -n 1 } “db_set {key} {value}” 호출 시, key와 value가 어느 것이든 저장할 수 있다. (value는 JSON도 가능) “db_get {key}” 호출 시, 해당 key의 가장 최근 value를 찾아 반환해줍니다. 로그 로그는 뒤쪽에 추가만 가능한 추가 전용(append-only) 데이터 파일이다. db..