데이터베이스 5

데이터베이스 소개 및 훑어보기

데이터베이스 시스템의 선택은 중요합니다. 성능, 일관성 문제, 운영의 어려움과 같은 이유로 데이터베이스를 변경하게 되는 경우가 발생할 수 있습니다. 데이터베이스를 변경할 때 마이그레이션이 쉽지 않을 수도 있기 때문에 초기 설계 단계에서 애플리케이션의 특성에 알맞는 데이터베이스를 선택해야 합니다. 데이터베이스를 선택함에 있어 다음과 같은 변수를 통해서 어떤 데이터베이스를 선택할지 예측할 수 있습니다. 스키마와 레코드 크기 클라이언트 수 쿼리 형식과 접근 패턴 읽기와 쓰기 쿼리 비율 위 변수들의 변동폭 그리고 위의 변수들을 기준으로 다음과 같은 체크리스트에 관한 답을 내려서 선택할 수 있습니다. 요청된 쿼리를 수행할 수 있는가? 데이터를 모두 저장할 수 있는가? 단일 노드는 몇 건의 읽기와 쓰기 요청을 처리..

Big Data/Database 2021.03.21

03. 저장소(Storage)와 검색(Retrieval) - 4

벌써 4번째 포스트입니다. 3장 저장소와 검색은 정리하면서 중요한 개념들이 많이 나와 있어 자세히 정리를 하고 있습니다. 이번 포스트에서는 데이터베이스에 접근하는 방식의 차이에 따라 구분되는 온라인 트랜잭션 처리(online transaction processing, OLTP)와 온라인 분석 처리(online anlaytic processing, OLAP)에 관해 살펴보겠습니다. 트랜잭션 처리와 분석 처리 초창기 비즈니스 데이터 처리는 데이터베이스 쓰기가 보통 상거래(commercial transaction)에 해당했습니다. 그러나 이러한 상거래가 아닌 영역으로 데이터베이스가 확장되었어도 트랜잭션이라는 용어는 그대로 사용하고 있습니다. 데이터베이스에서 트랜잭션은 논리 단위로 읽기와 쓰기와 같은 상호작용의..

03. 저장소(Storage)와 검색(Retrieval) - 3

이전 포스트에 이어서 세 번째 포스트입니다. 이전 포스트에서는 SS테이블과 LSM 트리에 관해 알아보았습니다. 이번 포스트에서는 데이터베이스에서 가장 많이 사용하고 일반적인 색인 유형인 B 트리에 대해서 살펴보겠습니다. B 트리 B 트리는 거의 대부분의 관계형 데이터베이스에서 표준 색인 구현으로 사용할 뿐만 아니라 비관계형 데이터에서도 사용합니다. B트리는 SS테이블과 같이 키로 정렬된 key-value 쌍을 유지하지 때문에 key-value 검색과 range query에 효율적입니다. 이와 같이 LSM 트리와는 유사한 점은 이게 다이고 B 트리의 설계 철학은 매우 다릅니다. LSM 트리는 일반적으로 수 메가바이트 이상의 가변크기를 가진 세그먼트를 나누고 순차적으로 세그먼트를 기록합니다. 반면 B 트리는..

03. 저장소(Storage)와 검색(Retrieval) - 2

이전 포스트에 이어서 저장소와 검색을 계속 살펴보겠습니다. 이전 포스트 마지막 부분에 대한 설명은 해시 테이블을 통한 색인이 가진 제한사항에 대해 살펴보았습니다. 이러한 제한이 없는 색인 구조를 이어서 살펴보도록 하겠습니다. SS 테이블과 LSM 트리 위 그림과 같이 log-structured 저장소 세그먼트는 key-value 쌍의 시퀀스입니다. key-value 쌍은 쓰여진 순서대로 저장되며 로그에서 같은 키를 갖는 값 중 나중 값이 최신 값이 됩니다. 여기에 간단한 변경사항을 적용해 봅시다. 세그먼트를 key를 기준으로 정렬하는 것입니다. 일단 이러한 변경은 순차적으로 쓰는 것을 못하게 할 것 같습니다. 그러나 이러한 문제는 조금 더 뒤에 살펴보도록 하겠습니다. 먼저 세그먼트를 정렬하는거에 집중해봅..

03. 저장소(Storage)와 검색(Retrieval) - 1

이전 포스트에서는 데이터 모델과 질의 언어에 대해 알아보았습니다. 예를 들어 애플리케이션 개발자 관점에서 데이터베이스에 저장하는 데이터 포맷과 데이터를 다시 요청하는 메커니즘과 같은 것들을 살펴보았습니다. 이번 장에서는 데이터베이스 관점에서 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법에 대해서 살펴볼 예정입니다. 일반적으로 애플리케이션 개발자는 처음부터 자신의 저장소 엔진을 구현하기 보다는 사용가능한 저장소 엔진중에 애플리케이션 요구사항에 적합한 데이터 모델을 처리할 수 있는 저장소 엔진을 선택합니다. 특정 작업부하(workload) 유형에서 좋은 성능을 내도록 저장소 엔진을 조정하려면 어느 정도 저장소 엔진의 내부적인 이해가 필요합니다. 일반적으로 트랜잭션 작업 부하에 최적화..

반응형