기술 서적/데이터 중심 애플리케이션 설계

    3장. 저장소와 검색

    3장. 저장소와 검색

    개요데이베이스가 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법을 확인한다.로그 구조 저장소 엔진과 페이지 지향 저장소 엔진에 대해서 알아본다. 데이터베이스를 강력하게 만드는 데이터 구조색인(Index)은 데이터베이스에서 특정 키의 값을 효율적으로 찾을 수 있는 방법이다.색인은 기본 데이터에서 파생된 추가적인 구조이기 때 쓰기 과정에서 오버헤드가 주로 발생한다. (데이터를 쓸 때마다 색인도 함께 갱신해야 하기 때문이다.)해시 색인데이터 파일에 오프셋을 추가하는 전략키/값 저장소에서 가장 간단한 색인 전략은 키를 데이터 파일의 바이트 오프셋에 매핑해 인메모리 해시 맵을 유지하는 전략이다.키/값 쌍이 추가될 때마다 방금 기록한 데이터의 오프셋을 반영하고 맵을 갱신한다.디스크 공간이 유..

    2장. 데이터 모델과 질의 언어

    2장. 데이터 모델과 질의 언어

    개요데이터 저장과 질의를 위한 다양한 범용 데이터 모델을 알아보자.관계형 모델, 문서 모델, 그래프 기반 모델을 비교해보자.관계형 모델과 문서 모델관계형 모델: 데이터가 관계(테이블)로 구성되고 각 관계는 순서 없는 튜플(Row)의 모음관계형 모델은 관계형 데이터베이스(RDBMS)로 발전했으며 정규화된 구조를 데이터를 저장하고 질의할 때 사용되었다.관계형 모델의 목표는 정리된 인터페이스 뒤로 구현 세부사항을 숨기는 것이다.NoSQL의 탄생NoSQL의 등장 배경은 다음과 같다.대규모 데이터셋이나 쓰기 연산에 대한 처리량을 관계형 데이터베이스보다 쉽게 도달할 수 있게하는 확장성의 필요도관계형 모델에서 지원하지 않는 특수 질의 동작제한적인 관계형 스키마에 비해 동적이고 표현력이 풍부한 데이터 모델에 대한 바람..

    1장. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션

    1장. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션

    개요데이터가 중심이 되는 애플리케이션에서 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 데이터 시스템을 구축하기 위해 필요한 내용을 알아보자.신뢰성, 확장성, 유지보수성의 의미를 명확히 알아보자데이터 시스템비교적 최근에 등장한 다양한 데이터 저장/처리를 위한 도구 (e.g Kafka, Redis 등)들은 전통적인 데이터 저장소 분류(e.g 큐, 캐시, 데이터베이스)를 위한 경계가 흐려졌다.애플리케이션에서는 다양한 데이터 저장/처리 도구를 사용한다.다양한 도구들을 애플리케이션 코드를 이용해단일 도구에서 작업을 효율적으로 수행하기 위한 여러 태스크를 생성한다.데이터 시스템를 올바르게 설계하기 위해선 신뢰성, 유지보수성, 확장성을 중점을 둬야 한다.신뢰성(Reliability): 하드웨어, 소프트웨어, 휴먼..