[Database] 분산환경 데이터베이스 일관성
2023. 11. 4. 12:30
Database/Database 필수
이번 포스팅에서는 분산 환경에서의 데이터베이스 일관성에 대해 살펴보겠습니다. 먼저 "일관성"이란 시스템에서 규정한 규칙을 지킬 수 있는 능력을 의미합니다. 이 규칙은 문맥에 따라 달라지므로 일관성 있는 시스템의 조건도 문맥에 따라 의미를 달리합니다. 분산 환경의 데이터베이스에서 말하는 "일관성"은 데이터베이스 ACID의 C(일관성)와는 다른 의미를 지닙니다. 아래에서 이 차이를 살펴보겠습니다. 데이터베이스 ACID의 C는 애플리케이션에서 규정한 규칙 및 데이터베이스 규칙을 지킬 수 있는 능력을 의미합니다. 그러나 ACID의 C는 애플리케이션 도움 없이 데이터베이스 자체적으로 갖출 수 있는 특징이 아니기 때문에 종종 ACID가 아닌 AID가 되어야 한다는 주장이 존재합니다. 분산 환경에서의 데이터베이스의 ..
[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] Storage Engine의 꽃 InnoDB
2022. 11. 21. 11:42
Database/Database 필수
InnoDB는 MySQL의 기본 storage engine입니다. 우리가 사용하는 데이터베이스의 기능(transaction, isolation level 등)은 InnoDB에서 제공하고 있는 만큼 InnoDB를 이해하면 데이터베이스의 기능을 더 효율적으로 활용할 수 있습니다. 이번 포스팅을 통해 InnoDB가 어떤 기능을 어떻게 제공하는지 살펴보겠습니다. 이번 포스팅은 MySQL 경험이 있고 MySQL 기능을 어느 정도 이해한 분들이 대상입니다. InnoDB 란? InnoDB는 MySQL과 MariaDB에서 사용하는 storage engine입니다. InnoDB는 트랜잭션 기능, row-level locking, clustered index를 활용한 효율적인 데이터 저장과 검색 그리고 데이터 정합성을 위..