
[Database] 분산환경 데이터베이스 일관성
2023. 11. 4. 12:30
Database/Database 필수
이번 포스팅에서는 분산 환경에서의 데이터베이스 일관성에 대해 살펴보겠습니다. 먼저 "일관성"이란 시스템에서 규정한 규칙을 지킬 수 있는 능력을 의미합니다. 이 규칙은 문맥에 따라 달라지므로 일관성 있는 시스템의 조건도 문맥에 따라 의미를 달리합니다. 분산 환경의 데이터베이스에서 말하는 "일관성"은 데이터베이스 ACID의 C(일관성)와는 다른 의미를 지닙니다. 아래에서 이 차이를 살펴보겠습니다. 데이터베이스 ACID의 C는 애플리케이션에서 규정한 규칙 및 데이터베이스 규칙을 지킬 수 있는 능력을 의미합니다. 그러나 ACID의 C는 애플리케이션 도움 없이 데이터베이스 자체적으로 갖출 수 있는 특징이 아니기 때문에 종종 ACID가 아닌 AID가 되어야 한다는 주장이 존재합니다. 분산 환경에서의 데이터베이스의 ..

[필D상] Chapter 1. 실제 DBMS 사례를 통해 기본 개념 익히기 - MySQL Redo Log & Checkpoint
2023. 9. 9. 16:01
Database/필수 DBMS 상식
INSERT, UPDATE, DELETE 등의 DML이 수행될 때 디스크상의 데이터 파일에 변경사항을 즉시 반영하는 것은 성능에 부정적인 영향을 미칠 수 있습니다. 이는 변경해야 하는 데이터 파일이 디스크에 랜덤 하게 위치하기 때문입니다. MySQL은 리두 로그와 체크포인트를 활용해 변경사항을 일괄적으로 처리해 성능을 최적화합니다. Redo Log 트랜잭션은 ACID 속성을 지니고 있습니다. ACID를 풀이하면 다음과 같습니다. A(Atomicity): 원자성을 의미합니다. 트랜잭션으로 묶인 작업은 모두 성공하거나 모두 실패해야 한다는 속성입니다. C(Consistency): 트랜잭션에 의해 조작된 데이터는 일관성을 유지할 수 있음을 의미합니다. 주의할 점은 데이터의 일관성을 유지하기 위해서는 트랜잭션뿐..

[필D상] Chapter 1. 실제 DBMS 사례를 통해 기본 개념 익히기 - MySQL 아키텍처
2023. 9. 8. 06:15
Database/필수 DBMS 상식
Chapter 1에서는 MySQL의 아키텍처에 대해 살펴보겠습니다. MySQL의 기본 아키텍처는 다음과 같습니다. MySQL Connectors & Shell MySQL connector는 애플리케이션이 MySQL과 연결되어 작동할 수 있도록 도와주는 소프트웨어입니다. API를 통해 MySQL의 기능(쿼리 실행, 데이터 조회, 데이터 수정 등)을 활용할 수 있습니다. MySQL connector는 프로그래밍 언어에 따라 구현이 다르며, 대표적인 예시로 Java의 경우 JDBC(Java Database Connectivity)를 사용합니다. MySQL shell은 CLI(Command Line Interface) 또는 스크립트를 사용하여 MySQL을 다룰 수 있는 또 다른 방법입니다. MySQL Engin..

[필D상] 소개 및 목차
2023. 9. 6. 17:05
Database/필수 DBMS 상식
"필수 DBMS 상식(필D상)" 포스트 시리즈는 DBMS를 사용하는 개발자라면 반드시 알아야 하는 DBMS 상식에 대해 다룹니다. 이 시리즈는 단순한 정보 전달을 넘어, DBMS가 내부적으로 어떻게 동작하는지와 개발자의 시각에서 DBMS의 동작 방식을 바라보는 방법 등을 다룹니다. DBMS는 Database Management System의 약자로, 일반적으로 데이터베이스라고 불리지만 사실상 데이터베이스와는 엄연히 다른 개념입니다. 데이터베이스는 구조화된 정보 또는 데이터의 조직화된 모음으로서 디스크에 저장되는 반면, DBMS는 이러한 데이터베이스의 데이터를 효율적으로 관리하기 위해 사용되는 소프트웨어입니다. 시리즈 목차는 다음과 같습니다. Part 1. 단일 프로세스 DBMS Part 1에서는 단일 프..

[Database] Isolation level에 따른 동시성 문제 분석
2023. 4. 30. 23:42
Database/Database 필수
데이터베이스 트랜잭션은 설정된 isolation level에 따라 방지할 수 있거나 방지할 수 없는 동시성 문제가 존재합니다. ANSI SQL(미국 표준 협회의 SQL 표준)은 isolation level에 따라 방지해야 하는 최소한의 동시성 문제를 다음과 같이 정의합니다. Isolation level Dirty ReadNonrepeatable ReadPhantom ReadSerialization Anomaly Read uncommittedOOOORead committedXOOORepeatable read XXOOSerializableXXXX데이터베이스 구현체(MySQL, PostgreSQL 등)는 위 ANSI SQL을 따르기도 하지만 각각의 구현 방법에 따라 방지할 수 있는 동시성 문제가 달라질 수 있..

[Database] DBA급 개발자로 - #0 소개
2022. 12. 18. 13:27
Database/DBA급 개발자로
DBA급 개발자로 시리즈는 데이터베이스를 더 깊게 학습하고 싶은 개발자들을 위한 시리즈입니다. 해당 시리즈는 Youtube의 CMU Database Group 강의를 기반으로 작성됐습니다. 목차 1. Relational Model 2022.08.31 - [Database] - [Database] DBA급 개발자로 - #1 Relational Model Relational model Tuple VS Record 2. Intermediate SQL 2022.08.31 - [Database] - [Database] DBA급 개발자로 - #2 Intermediate SQL Aggregation functions Window functions CTE(Common Table Expressions) 3. Databa..

[Database] DBA급 개발자로 - #23 Distributed Database 3/3
2022. 12. 16. 09:23
Database/DBA급 개발자로
이번 포스팅에서는 분산 환경에서의 OLAP, 쿼리 실행 모델 및 그 외 알아두면 괜찮은 것들에 대해 살펴보겠습니다. OLAP OLAP란 On-Line Analytical Processing의 약자입니다. OLAP는 OLTP처럼 단순한 CRUD 유형의 작업이 목적이라기보다는 분석 등의 복작한 작업을 수행하는 데 사용됩니다. Schema OLAP용 스키마는 fact 테이블과 dimenstion table로 구성됩니다. Fact 테이블은 dimention 테이블의 모든 키와 종합된 데이터를 가지고 있습니다. Dimension 테이블의 경우 fact 테이블의 종합된 데이터를 생성하기 위한 정보를 가지고 있습니다. Star Schema 별 모양을 닮은 스키마를 의미합니다. 다음에 살펴볼 snowflake sche..

[Database] DBA급 개발자로 - #22 Distributed Database 2/3
2022. 12. 10. 09:54
Database/DBA급 개발자로
이전 포스팅에서 분산 데이터베이스에 대해 간략히 살펴봤습니다. 이번 포스팅에서는 분산 트랜잭션 커밋을 어떻게 atomic 하게 처리할지, 복제는 어떻게 하는지 그리고 CAP 이론에 대해 살펴보겠습니다. Atomic Commit Protocol 분산 트랜잭션을 커밋하기 위해서는 모든 노드가 작업을 정상적으로 처리했는지 확인해야 합니다. 분산 환경에서 atomic 한 커밋을 보장하기 위한 프로토콜에는 two phase commit, three phase commit, paxos, raft, ZAP(apache zookeeper)과 viewstamped replication 등이 존재합니다. 이번 포스팅에서는 two phase commit과 paxos에 대해 살펴보겠습니다. Two Phase Commit Tw..