jinsusong / CS-Study

CS
3 stars 5 forks source link

데이터베이스 트랜잭션이란 & 처리방법 #91

Open SW-H opened 1 year ago

SW-H commented 1 year ago

데이터베이스 트랜잭션이란

데이터베이스의 일관성있는 상태를 다른 것으로 변경하는 작업 순서를 데이터베이스 트랜잭션이라고합니다. 트랜잭션 완료 후 성공적인 완료가 시스템에 반영되거나 트랜잭션이 실패하고 변경 사항이 반영되지 않습니다.

트랜잭션의 4가지 성질

Atomicity(원자성) 는 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이되지 않던지 둘중에 하나만 수행해야한다. Consistency(일관성) 는 트랜잭션이 성공적으로 완료된 후에는 언제나 일관성 있는 DB상태로 변환되어야한다. Isolation(독립성) 은 수행중인 트랜잭션이 완전히 완료되기 전에는 다른 트랙잭션에서 수행 결과를 참조할 수 없다. Durablility(지속성) 는 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

처리방법

그렇다면 nosql에는 transaction 개념이 없는가?

https://da-nyee.github.io/posts/nosql-with-transaction/

yerimstar commented 1 year ago

http://happinessoncode.com/2017/07/29/cap-theorem-and-pacelc-theorem/

jungmiin commented 1 year ago

일반적으로 NoSQL 데이터베이스는 ACID 트랜잭션을 지원하지 않습니다. ACID는 관계형 데이터베이스 시스템에서 사용되는 전통적인 데이터베이스 트랜잭션 모델입니다.

그러나 최근에는 몇몇 NoSQL 데이터베이스에서 트랜잭션을 지원하고 있습니다. 예를 들면, MongoDB에서는 4.0 버전부터 트랜잭션을 지원하고 있습니다. 이전에는 MongoDB에서 여러 문서를 업데이트하거나 삽입하는 경우 일관성 문제가 발생할 수 있었지만, 트랜잭션을 사용하여 이러한 문제를 해결할 수 있습니다.

그러나 NoSQL 데이터베이스의 대부분은 높은 가용성, 확장성 및 성능을 위해 ACID보다는 BASE (Basically Available, Soft-state, Eventually consistent) 모델을 채택합니다. 이 모델은 일관성보다는 가용성과 분산 처리를 우선시합니다. 따라서 NoSQL 데이터베이스에서는 ACID 트랜잭션보다는 다른 방식으로 데이터 일관성을 보장하려고 노력합니다.

출처 : chatGPT

jungmiin commented 1 year ago

예를 들어, MongoDB에서는 4.0 버전부터 멀티-도큐먼트 트랜잭션을 지원합니다. 이를 통해 여러 도큐먼트를 업데이트하거나 삽입하는 작업에서 데이터 일관성을 보장할 수 있습니다. MongoDB에서는 명시적인 트랜잭션 시작과 커밋 또는 롤백을 지원하며, 여러 개의 도큐먼트를 포함하는 작업을 단일 트랜잭션으로 그룹화할 수 있습니다.

또 다른 예로, Apache Cassandra에서는 트랜잭션 대신 Paxos 및 Quorum 기반의 일관성 모델을 사용합니다. 이 모델은 다수결을 통해 데이터 일관성을 보장하며, 모든 노드에서 동시에 업데이트되는 것을 방지합니다.

결론적으로, NoSQL 데이터베이스에서는 다양한 방식으로 데이터 일관성을 보장하며, 트랜잭션을 지원하는 경우도 있지만, 전통적인 ACID 트랜잭션 모델을 사용하는 것이 아니기 때문에 관계형 데이터베이스와는 다소 다른 방식으로 데이터 일관성을 보장합니다.

출처: chatGPT ㅎㅎ