독서

[데이터 중심 애플리케이션 설계] 3장

오렌지색 귤 2023. 11. 13. 23:05
반응형

핵심 내용

 

  • 로그 구조화 관점에서 파일에 추가와 오래된 파일의 삭제만 허용하고 한 번 쓰여진 파일은 절대 갱신하지 않는다. 비트캐스크, SS테이블, LSM 트리, 레벨 DB, 카산드라, HBase, 루씬 등이 이 그룹에 속한다.
    • 임의 접근 쓰기를 체계적으로 디스크에 순차 쓰기로 바꾼다
    • 하드드라이브와 SSD의 성능 특성에 맞춰 쓰기 처리량을 높이는 것이 가능하다

 

  • 제자리 갱신 관점에서 덮어쓰기 할 수 있는 고정 크기 페이지의 셋으로 디스크를 다룬다. 이 관점에서 가장 큰 예가 B 트리다. B 트리는 모든 주요 관계형 데이터베이스와 많은 비정형 데이터베이스에서도 사용한다.

 

 

배운 내용

 

1. 정렬되어 있으면 적어도 두가지 값 사이에 있다는 것만으로도 이진 탐색이 가능해진다. 인덱스가 범위를 나타내는 페이지로 구성되어 있는 이유다.

 

2. 키 값 색인에서 값은 질문의 실제 로우거나 다른 곳에 저장된 로우를 가리키는 참조다. 전자의 경우, 색인에서 힙 파일로 접근하는 것은 읽기 성능이 저하를 일으키므로 색인 안에 바로 색인된 로우를 저장하는데, 이를 clustered index라 한다. 후자의 경우, 여러 보조 색인이 존재할 때 데이터 중복을 피하므로 일반적인 방식이다.

 

 

 

찾아본 내용

 

1. join 연산 컬럼의 일부에만 인덱싱이 걸려있을 때, 인덱싱으로 선별된 모든 로우를 메모리에 적재한 다음, 구문을 해석해 필요한 나머지 조건을 충족하지 않은 로우를 필터링한다. 이 때의 메모리는 데이터베이스 서버의 메모리이며, 특정 조건 하에서는 OOM 오류가 발생할 수 있다. 따라서 데이터베이스 서버는 메모리 관리 및 최적화 기법을 통해 대부분의 경우에 OOM 오류를 방지한다.

 

 

 

궁금한 내용

 

1. 페이지 88쪽에서 많은 관계형 데이터베이스에서 트랜잭션 격리는 키 범위의 잠금을 사용해 구현한 반면, B 트리 색인에서는 트리에 직접 잠금을 포함시킨다 라는 구문을 이해하기 어려운데, 무슨 뜻일까?

 

 

키 범위 잠금은 더 넓은 범위의 데이터에 대한 잠금을 제공하며, 아직 존재하지 않는 데이터에 대해서도 잠금을 걸 수 있습니다. 이 방식은 특히 격리 수준이 높은 환경에서 중요하며, 트랜잭션이 서로 간섭하지 않도록 보장합니다.

 

반면, B-트리 색인의 직접 잠금은 트리 구조 내의 특정 노드에 초점을 맞추며, 실제로 존재하는 노드에만 잠금을 적용합니다. 이 방식은 트리의 구조적 무결성을 유지하는 데 중점을 두며, 트리의 특정 부분에 대한 접근을 제어합니다.

 

 

 

2. 다른 팀에서는 ETL을 통해서 집계된 데이터를 실시간 서비스에서 사용하는 경우가 있으신가요? 있다면 어떤식으로 가져와서 사용하시나요? 다중 질의에 의해서 유저군을 선별해야하는 로직이 필요하다면, 비동기 통신 가정하에 인덱싱을 하는게 낫다고 판단하시나요? 아니면 책에서 말한 것처럼 데이터를 매우 작게 부호화하는 것이 필요할까요?

반응형