본문 바로가기

스터디/데이터 중심 애플리케이션 설계12

[데이터 중심 애플리케이션 설계] 06. 파티셔닝 [데이터 중심 애플리케이션 설계] 06. 파티셔닝 1. 복제 VS 파티셔닝 복제 동일한 데이터 복사본 여러 개를 다른 노드에 저장 파티셔닝 데이터셋이 매우 크거나 질의 처리량이 매우 높아 복제만으로는 부족할 때 데이터를 파티션으로 나누어 저장 (= 샤딩) 복제와 파티셔닝의 혼합 보통 복제와 파티셔닝을 함께 적용해 각 파티션의 복사본을 여러 노드에 저장한다. 각 레코드는 정확히 한 파티션에 속하더라도 이를 여러 다른 노드에 저장해서 내결함성을 보장할 수 있다. 한 노드에 여러 파티션을 저장할 수도 있다. 리더 팔로워 복제 모델의 파티셔닝과 복제의 조합 각 파티션의 리더는 하나의 노드에 할당되고 팔로워들은 다른 노드에 할당된다. 각 노드는 어떤 파티션에게는 리더이면서 다른 파티션에게는 팔로워가 된다. 2. .. 2023. 1. 2.
[데이터 중심 애플리케이션 설계] 05. 분산 데이터와 복제 [데이터 중심 애플리케이션 설계] 05. 분산 데이터와 복제 1. 분산 데이터 여러 장비 간 분산된 데이터베이스를 필요로 하는 이유는 아래와 같다. 1.1 확장성 데이터 볼륨, 읽기/쓰기 부하가 단일 장비에서 다룰 수 있는 양보다 커지면 부하를 여러 장비로 분배할 수 있다. 1.2 내결함성/고가용성 장비 하나가 죽더라도 애플리케이션이 계속 동작해야 한다면 여러 장비를 사용해 중복성을 제공할 수 있다. 장비 하나가 실패하면 다른 하나가 이어받는다. 1.3 지연 시간 전 세계에 사용자가 있다면 사용자와 지리적으로 가까운 곳에 서버를 두어 서비스를 빠르게 제공할 수 있다. 2. 고부하로 확장 2.1 수직 확장(scale up) 더 강력한 장비를 사용하는 것 많은 CPU, 메모리 칩, 디스크를 하나의 운영체제로.. 2022. 12. 29.
[데이터 중심 애플리케이션 설계] 04. 부호화와 발전 [데이터 중심 애플리케이션 설계] 04. 부호화와 발전 1. 데이터 부호화 형식 프로그램은 보통 두 가지 형태로 표현된 데이터를 사용 메모리에 객체, 구조체, 배열, 해시 테이블 등으로 데이터를 유지 -> CPU에서 효율적으로 접근하고 조작할 수 있게 최적화됨 데이터를 파일에 쓰거나 네트워크를 통해 전송하기 위해서는 바이트열의 형태로 부호화 필요 인메모리 표현에서 바이트열로의 전환을 부호화(직렬화 또는 마샬링)라고 함 바이트열에서 인메모리 표현으로의 전환을 복호화(파싱, 역직렬화, 언마샬링)라고 함 1.1 언어별 형식 프로그래밍 언어에 내장된 부호화 라이브러리는 편리하지만 문제점도 많음 부호화는 보통 특정 프로그래밍 언어와 묶여 있어 다른 언어에서 데이터를 읽기가 매우 어려움 동일한 객체 유형의 데이터를.. 2022. 12. 28.
[데이터 중심 애플리케이션 설계] 03. 저장소와 검색 [데이터 중심 애플리케이션 설계] 03. 저장소와 검색 관계형 DB와 NoSQL DB에 사용되는 저장소 엔진에 대해 공부한다. 로그 구조(log-structured) 계열 저장소 엔진과 (B-tree 같은) 페이지 지향(page-oriented) 계열 저장소 엔진을 검토한다. 1. 데이터베이스를 강력하게 만드는 데이터 구조 많은 데이터베이스는 내부적으로 추가 전용(append-only) 데이터 파일인 로그(log)를 사용한다. 로그 : 연속된 추가 전용 레코드(an append-only sequence of records) 추가 전용 파일은 조회시 풀스캔을 하기 때문에 데이터베이스에 많은 레코드가 있으면 성능이 매우 나쁘다. 데이터베이스에서 특정 키의 값을 효율적으로 찾기 위해서는 색인(index)이 필.. 2022. 12. 21.
[데이터 중심 애플리케이션 설계] 02. 데이터 모델과 질의 언어 [데이터 중심 애플리케이션 설계] 02. 데이터 모델과 질의 언어 1. 데이터 모델의 중요성 데이터 모델은 소프트웨어 개발에서 제일 중요한 부분이다. 데이터 모델은 소프트웨어가 어떻게 작성됐는지, 해결하려는 문제를 어떻게 생각해야 하는지 지대한 영향을 미친다. 데이터 모델은 그 위에서 소프트웨어가 할 수 있는 일과 할 수 없는 일에 영향을 주므로 적합한 데이터 모델을 선택하는 작업은 굉장히 중요하다. 데이터 모델의 큰 범주 관계형 모델 문서 모델 그래프 모델 2. 관계형 모델과 문서 모델 관계형 모델 데이터는 관계(relation)으로 구성 각 관계는 순서없는 튜플(tuple)의 모음 SQL 은 정규화된 구조로 데이터를 저장하고 질의할 필요가 있을 때 사용 NoSQL의 탄생 : Not Only SQL 대.. 2022. 12. 14.
[데이터 중심 애플리케이션 설계] 01. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 [데이터 중심 애플리케이션 설계] 01. 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 1. 데이터 시스템 오늘 날의 어플리케이션은 계산 중심(compute-intensive)보다 데이터 중심(data-intensive) 적이다. CPU 성능보다는 데이터 양, 데이터 복잡도 등이 더 문제다. 많은 애플리케이션은 다음을 필요로 한다. 데이터베이스 : 영속성 스토리지 캐시 : 읽기 속도 향상, 값비싼 수행 결과 기억 검색 색인 : 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로 필터링할 수 있게 제공 스트림 처리 : 비동기 처리를 위해 다른 프로세스로 메세지 보내기 일괄(batch) 처리 : 주기적으로 대량의 누적된 데이터를 분석 1.1 데이터 시스템에 대한 생각 데이터베이스, 큐, 캐시.. 2022. 12. 13.
728x90
반응형