전체 글

Database/General

트랜잭션 격리 수준(Transaction Isolation Level)

Transaction이란? 트랜잭션(Transaction)은 하나의 작업 단위를 의미한다. 데이터베이스에 저장되어 있는 데이터를 CRUD(Create/Read/Update/Delete)를 통해 제어하는데, 단건이 아니라 여러 변경사항을 하나의 작업으로 취급하기 위해 트랜잭션을 사용한다. 예를 들어, 은행 시스템에서 돈을 송금하는 로직을 구현할 때, A 계좌에서는 돈을 차감하고 B 계좌에서는 돈을 증가 시키는 작업은 하나의 단위로 취급되어야한다. 즉, All or Nothing에 대한 개념이 도입되는 것이고 일괄성을 보장하기 위한 용도로 트랜잭션이 사용되는 것이다. 그런데 일관성을 보장하기 위해서는 병행성을 Trade-Off로 내어줘야한다. 당연한 결과이다. 데이터를 일관되게 보장하기 위해서 하나의 ses..

Database/MongoDB

MongoDB _id 필드와 Sharded Cluster에서 Unique 보장하는 방법

데이터의 설계 단계에서 특정 필드에 고유성을 보장해야하는 요구사항이 발생한다. 이 때 Primary Key가 떠오르는데, MongoDB에서는 Collection의 "_id"라는 필드를 Primary Key로 사용할 수 있다. 단, Standalone과 Replica Set 배포 형태에서만 보장되는 조건이다. MongoDB의 Primary Key _id 필드 먼저 _id 필드에 대한 특징을 알아본다. 명시적으로 입려하지 않아도 자동 생성된다. // document 삽입 test> db.test1.insertOne({a: 1}) // _id 명시해서 document 삽입 test> db.test1.insertOne({_id: 123, a: 1}) // 데이터 확인 test> db.test1.find() [ ..

lake.yoo
레이크