2024/06 5

[고투런1기] 데이터 중심 애플리케이션 설계 (7장 트랜잭션)

[2부 분산 데이터]07장: 트랜잭션1. 애매모호한 트랜잭션의 개념1.1 ACID의 의미1.2 단일 객체 연산과 다중 객체 연산2. 완화된 격리 수준2.1 커밋 후 읽기2.2 스냅숏 격리와 반복 읽기2.3 갱신 손실 방지2.4 쓰기 스큐와 팬텀3. 직렬성3.1 실제적인 직렬 실행3.2 2단계 잠금(2PL)3.3 직렬성 스냅숏 격리(SSI)[정리: 여러 장비로 분산해 저장하는 데이터]- 트랜잭션=> 애플리케이션이 어떤 동시성 문제와 어떤 종류의 하드웨어와 소프트웨어 결함이 존재하지 않는 것처럼 동작할 수 있게 도와주는 추상층=> 트랜잭션이 없으면 다양한 방법으로 데이터가 일관성이 깨질 수 있음- 동시성 제어 - 경쟁 조건1) 더티읽기: 한 클라이언트가 다른 클라이언트가 썼지만 아직 커밋되지 않은 데이터를 ..

[고투런1기] 데이터 중심 애플리케이션 설계 (6장 파티셔닝)

[2부 분산 데이터]06장: 파티셔닝1. 파티셔닝과 복제2. 키-값 데이터 파티셔닝2.1 키 범위 기준 파티셔닝2.2 키의 해시값 기준 파티셔닝2.3 쏠린 작업부하와 핫스팟 완화3. 파티셔닝과 보조 색인3.1 문서 기준 보조 색인 파티셔닝3.2 용어 기준 보조 색인 파티셔닝4. 파티션 재균형화4.1 재균형화 전략4.2 운영: 자동 재균형화와 수동 재균형화5. 요청 라우팅5.1 병렬 질의 실행 [정리: 여러 장비로 분산해 저장하는 데이터]- 파티셔닝=> 대용량 데이터셋을 더 작은 데이터셋으로 쪼개는 것=> 저장/처리할 데이터가 너무 많아 장비 한 대로 처리하는 게 불가능해지면 파티셔닝이 필요=> 핫스팟이 생기지 않게 하면서 데이터와 질의 부하를 여러 장비에 균일하게 분배하도록 해야 함* 핫스팟? 불균형적으..

[Scala 찍먹하기] 시작하기: 설치부터 프로젝트 생성/실행/종료까지

0. Scala란?2004년에 발표된 객체지향/함수형 프로그래밍의 요소가 결합된 멀티 패러다임 프로그래밍 언어이다. Scala는 확장 가능하다는 의미의 단어 'Scalable'에서 유래되었다. JRE(자바 실행 환경)와 서로 잘 호환되도록 설계되어 JVM(자바 가상 머신)에서 실행할 수 있고, Java 언어와도 호환된다.Scala는 Spring의 초대량 요청 처리에서의 한계를 극복하는 데 도움이 될 수 있다고 한다. 함수형 프로그래밍으로 불변성, 순수 함수를 강조하기 때문에 예측 가능한 코드를 작성할 수 있기 때문이다. 또한 강력한 타입 시스템으로 런타임 안정성을 높여주기도 한다. Scala에서 많이 사용되는 Akka 프레임워크는 액터 모델을 기반으로 하여 분산 시스템과 동시성 처리를 쉽게 할 수 있도록..

언어/Scala 2024.06.03

[고투런1기] 데이터 중심 애플리케이션 설계 (5장 복제)

[2부 분산 데이터]1. 고부하로 확장1.1 비공유 아키텍처1.2 복제 대 파티셔닝5장 복제1. 리더와 팔로워1.1 동기식 vs 비동기식 복제1.2 새로운 팔로워 설정1.3 노드 중단 처리1.4 복제 로그 구현2. 복제 지연 문제2.1 자신이 쓴 내용 읽기2.2 단조 읽기2.3 일관된 순서로 읽기2.4 복제 지연을 위한 해결책3. 다중 리더 복제3.1 다중 리더 복제의 사용 사례3.2 쓰기 충돌 다루기3.3 다중 리더 복제 토폴로지4. 리더 없는 복제4.1 노드가 다운됐을 때 데이터베이스에 쓰기4.2 정족수 일관성의 한계4.3 느슨한 정족수와 암시된 핸드오프4.4 동시 쓰기 감지 [정리: 여러 장비로 분산해 저장하는 데이터]- 복제의 용도1) [고가용성] 한 장비(또는 여러 장비나 전체 데이터센터)가 다..