NoSQL 데이터베이스가 종종 트랜잭션을 지원하지 않는 이유와 해결 방법
게시 됨: 2022-11-21트랜잭션은 동시 업데이트에 직면하여 데이터 무결성과 일관성을 보장하는 방법을 제공하는 모든 데이터베이스 시스템의 중요한 부분입니다. 그러나 모든 데이터베이스가 트랜잭션을 지원하는 것은 아닙니다. 특히 NoSQL 데이터베이스는 트랜잭션을 수행하는 방법을 제공하지 않는 경우가 많습니다. 이는 데이터 손상 및 불일치로 이어질 수 있으므로 트랜잭션 지원 이 필요한 애플리케이션의 경우 주요 문제가 될 수 있습니다. 그러나 NoSQL 데이터베이스에 대한 트랜잭션 지원을 제공하는 데 사용할 수 있는 몇 가지 해결 방법이 있습니다. 이 기사에서는 트랜잭션이 무엇인지, NoSQL 데이터베이스가 종종 트랜잭션을 지원하지 않는 이유와 이 제한을 해결하는 방법에 대해 살펴보겠습니다.
NoSQL 솔루션의 트랜잭션 시맨틱은 관계형 데이터베이스의 시맨틱보다 가볍지만 여전히 일정 수준에서 원자적 작업을 제공합니다. Node.js 또는 Ruby/Rack 사용법을 알고 있다면 Heroku.com에서 작은 목업을 빠르게 만들 수 있습니다. 아직 어떤 식으로든 이를 구현하지 않았음을 알려드리게 되어 유감입니다. 트랜잭션을 실행하려면 ACID 속성을 달성할 수 있어야 합니다. 대부분의 NoSQL 도구는 내결함성 및 확장 가용성을 달성하기 위해 작업의 일관성 기준을 줄입니다. VoltDB와 같이 인메모리, 열 지향 및 분산형 SQL/ACID 데이터베이스를 사용하는 것이 좋습니다. ' 낙관적 트랜잭션 '을 사용하여 이를 달성할 수 있지만 계속 진행하기 전에 데이터베이스 구현의 원자성 보장(예: 한 행에 몇 개의 단어를 쓰고 읽어야 하는지)을 이해해야 한다고 생각합니다.
일부 토론 포럼에 따르면 인터넷에서 진행 중인 일부 HBase 트랜잭션 이 있습니다. 일반적으로 NoSQL 데이터베이스에는 키/값 및 분산 데이터 저장소의 두 가지 유형이 있습니다. 둘 다 선호하는 RDBMS에서 구현되며 DBA의 지원과 NoSQL의 유연성 및 성능을 통해 최신 상태로 유지할 수 있습니다. NoSQL 솔루션에 비교 및 일치가 포함되어 있으면 그 위에 낙관적 트랜잭션을 사용할 수 있습니다.
NoSQL 데이터베이스의 경우 이 시간이 특히 중요했습니다. 지분이 더 높았고 마침내 분산 트랜잭션을 구현할 때였습니다. 그때까지 트랜잭션은 일반적으로 한 서버에서 커밋된 다음 이전과 동일한 방식으로 나머지 클러스터에 복제되었습니다.
Nosql이 트랜잭션에 적합하지 않은 이유는 무엇입니까?
ACID 트랜잭션은 NoSQL 데이터베이스에서 수행되지 않습니다. 오늘날의 애플리케이션에서 이러한 속성은 NoSQL로 수행해야 하는 트랜잭션에서 사용하기 쉽지 않습니다. 구조화된 데이터는 지원되지 않으며 구조화된 쿼리 언어를 사용하지 않습니다.
개발 시 NoSQL 데이터베이스를 사용하면 개발자가 메모리 내 구조를 관계형 구조로 변환하지 않고도 동일한 수준의 동시성을 달성할 수 있습니다. 또한 높은 수준의 데이터 보안을 제공하지만 최신 IT 조직에서 그렇게 하는 것이 중요합니다. 매우 큰 데이터베이스를 더 작고 관리하기 쉬운 부분으로 분리하는 샤딩 프로세스는 모든 데이터베이스에서 자동화할 수 없습니다. NoSQL 데이터베이스를 사용하면 데이터가 여러 노드에 걸쳐 분할되므로 더 효율적으로 액세스할 수 있으므로 더 큰 컴퓨팅 성능으로 더 큰 데이터 세트에 선택적으로 액세스할 수 있습니다. 데이터베이스의 높은 수준의 확장성, 안정성 및 가용성을 요구하는 최신 애플리케이션은 관계형 데이터베이스의 높은 수준의 안정성과 확장성을 요구하고 있습니다. NoSQL의 단점은 오늘날의 애플리케이션을 위한 다양한 전략을 사용하여 극복할 수 있습니다.
필요에 맞는 올바른 NoSQL 데이터베이스를 선택하려면 다양한 고려 사항이 필요합니다. 이 목록에는 필요한 데이터 유형, 필요한 안정성 수준, 필요한 속도 및 확장성과 같은 요소가 포함됩니다. MongoDB, Cassandra 및 Redis는 가장 널리 사용되는 NoSQL 데이터베이스입니다. 이러한 각 데이터베이스에는 고유한 강점과 약점이 있으므로 가장 적합한 데이터베이스를 선택해야 합니다. NoSQL 데이터베이스가 요구 사항에 가장 적합한 옵션이라는 보장은 없습니다. NoSQL 데이터베이스의 주요 단점 중 하나는 관계형 데이터베이스에서 발견되는 안정성 기능을 기본적으로 지원할 수 없다는 것입니다. 신뢰성의 특성 중 원자성, 일관성, 격리성, 내구성이 모두 중요합니다. 트랜잭션을 수행해야 하는 경우 MongoDB는 최상의 데이터베이스가 아닙니다. 트랜잭션을 필요로 하는 애플리케이션은 점점 줄어들고 있지만 일부는 여러 문서/컬렉션을 업데이트하기 위해 트랜잭션을 필요로 합니다. 이 경우 MongoDB는 팀에서 필요하므로 피해야 합니다. 작업 중인 데이터 유형, 필요한 안정성 수준, 데이터베이스의 성능 및 확장성을 포함하여 NoSQL 데이터베이스를 선택할 때 여러 요소를 고려하는 것이 중요합니다. MongoDB, Cassandra 및 Redis는 현재 사용 가능한 NoSQL 데이터베이스 중 일부에 불과합니다.
재무 데이터에 Mongodb가 권장되지 않는 이유
재무 데이터에 MongoDB를 사용하면 안 되는 이유는 무엇입니까?
트랜잭션 지원이 부족하기 때문에 MongoDB는 재무 데이터에 사용하지 않는 것이 좋습니다. 데이터 신뢰성과 일관성이 트랜잭션을 수행하는 데 중요합니다. 데이터베이스와의 일관성 또는 동기화를 보장하기 위해 트랜잭션이 필요하지만 항상 수행되는 것은 아닙니다.
Nosql 트랜잭션 산성
NoSQL 데이터베이스는 관계형 데이터베이스와 같은 방식으로 트랜잭션을 지원하지 않습니다. 이는 NoSQL 데이터베이스를 사용할 때 트랜잭션의 ACID 속성에 의존할 수 없음을 의미합니다. 그러나 일부 NoSQL 데이터베이스는 원자성 작업과 같은 일부 트랜잭션 기능을 지원합니다.
서로 다른 Nosql 데이터베이스는 서로 다른 수준의 트랜잭션 지원을 제공할 수 있습니다.
다양한 Nosql 데이터베이스는 다양한 수준의 트랜잭션 지원을 제공할 수 있습니다. 예를 들어 일부 데이터베이스는 완전한 트랜잭션 지원 을 제공하는 반면 다른 데이터베이스는 제한된 지원만 제공할 수 있습니다. 이것은 Nosql 데이터베이스를 선택할 때 고려해야 할 중요한 요소가 될 수 있습니다.
데이터는 개발자가 객체 지향 데이터베이스와 관계형 데이터베이스 간의 차이점을 더 잘 이해할 수 있도록 관계형 데이터베이스에 저장되지 않고 객체 지향 관점에서 모델링됩니다. 문서 지향 데이터베이스(예: MarkLogic, MongoDB 및 CouchDB)는 이러한 임피던스 불일치를 완전히 제거했습니다. NoSQL 데이터베이스의 단점은 민첩성과 확장성 측면에서 이러한 기능을 제공하지 않는다는 것입니다. 실제로 ACID 속성의 중요성은 시장에서 적용되거나 해결되는 방식으로 입증됩니다. NoSQL 데이터베이스인 MarkLogic은 NoSQL 데이터베이스의 한 예이며 이것이 Java의 다중 문 트랜잭션을 어떻게 지원하는지 살펴보겠습니다. MarkLogic은 문서 지향적인 NoSQL 데이터베이스입니다. 복잡한 매핑을 거치지 않고도 개체를 언어 중립적이고 자기 설명적인 형식으로 직렬화할 수 있습니다.
다음 예에서 JAXB는 지속성을 위해 POJO를 MarkLogic에 제공하는 데 사용됩니다. MarkLogic의 ACID 속성을 사용하면 항목을 구매할 때 인벤토리에 구매(재고 감소 형태)가 반영됩니다. 데이터베이스는 자신의 관점에서 이 작업을 전부 아니면 전무(all or nothing) 작업으로 수행합니다. 이 트랜잭션은 다중 문 트랜잭션이기 때문에 MarkLogic은 처음으로 읽기 작업을 수행하여 문서 수준 잠금을 만듭니다. 위의 프로그램을 성공적으로 실행하면 항목 수를 줄이기 위해 재고 항목에 대한 업데이트뿐만 아니라 3개의 라인 항목이 포함된 주문을 받게 됩니다. 프로그램이 다시 실행되면 인벤토리가 없다고 주장하여 트랜잭션에 대한 예외(다소 가짜이긴 하지만)를 강제할 수 있습니다. 결과적으로 이 경우 전체 트랜잭션을 중단하면 다음과 같은 오류가 발생합니다.
업데이트하려는 의도로 개체를 읽을 때 작업을 완료하기 전에 다른 스레드가 해당 상태를 변경하지 않도록 해야 합니다. 읽기 작업은 이를 보장하기 위해 트랜잭션 컨텍스트 외부에서 수행될 때 암시적으로 잠기지 않습니다. 작업을 완료하려면 DocumentDescriptor 객체로 작업해야 합니다. 우리는 후속 업데이트를 수행할 때 운영 체제가 변경되지 않을 것이라고 확신하기 때문에 낙관적 잠금을 믿습니다. 이 건물에서 격리 위반이 발생하는 것은 드문 일이 아닙니다. 그러나 문제가 있는 경우 조사해야 합니다. MarkLogic은 업데이트된 버전을 추적하고 이를 통과한 경우 이메일을 보냅니다. MarkLogic 서버의 목표는 개발자가 기능을 희생하지 않고 사용할 수 있는 방식으로 강력한 기능을 제공하는 것입니다. 이러한 주제 및 기타 주제에 대한 추가 정보를 보려면 웹사이트를 자유롭게 탐색하십시오. 이 기사에서 사용된 다중 명세서 트랜잭션 예제는 GitHub 페이지를 참조하십시오.
Mongodb가 최고의 문서 데이터베이스인 이유
문서 데이터베이스는 많은 데이터를 저장하는 애플리케이션에 적합합니다. 지구상에서 가장 인기 있는 문서 데이터베이스는 MongoDB입니다.
키-값 저장소는 데이터를 단순 데이터 모델에 저장해야 하는 애플리케이션에 유용합니다. Redis와 같은 키-값 저장소가 가장 인기 있는 저장소 중 하나입니다.
열 기반 데이터베이스는 데이터를 저장하기 위해 테이블이 필요한 경우 탁월한 선택입니다. MySQL은 가장 널리 사용되는 열 지향 데이터베이스입니다.
데이터는 그래프 데이터베이스를 사용하여 그래프에 저장할 수 있습니다. 가장 인기 있는 그래프 데이터베이스이자 가장 인기 있는 NoSQL 데이터베이스 중 하나입니다.
몽고디비 트랜잭션
MongoDB에서 트랜잭션은 데이터베이스에 대한 하나 이상의 작업으로 구성된 단일 작업 단위입니다. 트랜잭션은 데이터 무결성을 보장하고 데이터가 예상한 순서대로 처리되도록 하는 데 유용합니다.
MongoDB는 두 가지 유형의 트랜잭션을 제공합니다.
1. 단일 작업: 가장 일반적인 트랜잭션 유형이며 단일 문서를 업데이트, 삽입 또는 삭제하는 데 사용됩니다.
2. 다중 문서 트랜잭션: 이러한 트랜잭션은 여러 문서를 업데이트, 삽입 또는 삭제할 수 있으며 데이터가 특정 순서로 처리되도록 하는 데 유용합니다.
트랜잭션을 시작하려면 db.collection.startTransaction() 메서드를 사용합니다. 이 메서드는 트랜잭션에 대한 읽기 문제 및 쓰기 문제를 지정할 수 있는 몇 가지 매개 변수를 사용합니다. 읽기 문제는 MongoDB가 트랜잭션의 데이터를 읽는 방법을 지정하고 쓰기 문제는 MongoDB가 트랜잭션의 데이터를 쓰는 방법을 지정합니다.
트랜잭션을 시작한 후에는 일반적으로 데이터베이스에서 실행하는 모든 작업을 실행할 수 있습니다. 트랜잭션 내에서 실행하는 모든 작업은 동일한 작업 단위의 일부가 됩니다.
트랜잭션을 커밋하려면 db.collection.commitTransaction() 메서드를 사용합니다. 이 방법은 트랜잭션 내에서 수행한 모든 변경 사항을 데이터베이스에 기록합니다.
트랜잭션을 중단하려면 db.collection.abortTransaction() 메서드를 사용합니다. 이 방법은 트랜잭션 내에서 수행한 모든 변경 사항을 롤백합니다.
트랜잭션이라는 용어는 여러 문서의 읽기 또는 쓰기와 같이 데이터베이스에서 하나 이상의 작업을 처리하는 논리적 프로세스 그룹을 나타냅니다. 트랜잭션은 여러 문을 함께 그룹화하고 격리하여 통합 작업을 생성하는 데 사용됩니다. 데이터베이스 원자성 및 격리는 ACID 준수를 달성하는 데 사용됩니다. MongoDB에는 트랜잭션 처리를 위한 두 가지 API가 있습니다. 핵심 API는 첫 번째 API일 뿐만 아니라 관계형 데이터베이스와 유사한 구문을 가지고 있습니다. 두 번째 옵션은 MongoDB의 트랜잭션 처리를 사용하는 것입니다. 트랜잭션은 일반적으로 애플리케이션 언어의 적절한 MongoDB 드라이버에 정의된 API 메서드 중 하나를 사용하여 작성되고 실행됩니다.
MongoDB에서 세션을 생성하는 것은 트랜잭션 생성을 위한 첫 번째 단계입니다. startTransaction() 메서드는 readConcern과 writeConcern의 두 부분으로 나뉩니다. 이러한 옵션은 대부분 커밋된 상태의 데이터가 실시간으로 동기화되도록 합니다. 오류가 있으면 트랜잭션이 중단됩니다. 자세한 내용은 첨부된 목록을 참조하십시오. 이와 관련하여 우리는 저자를 운영할 수 있습니다. 저자는 당사에서 관리합니다. 이 세션에서는 추가와 함께 이전 결과를 반환할 것이므로 지금 바로 find()를 호출하십시오.
이 가이드는 MongoDB에서 트랜잭션과 최상의 사용 사례를 정의합니다. 개념적으로 MongoDB의 트랜잭션 세션 프로세스도 살펴보았습니다. MongoDB 및 Prisma에 대해 자세히 알아보려면 처음부터 시작하기 가이드 또는 기존 프로젝트에 추가하는 방법 가이드를 만들었습니다. 트랜잭션에 MongoDB를 사용하려면 여러 모범 사례가 필요합니다. 트랜잭션 데이터는 ACID 호환 트랜잭션 에 의해 유효하지 않은 데이터베이스 상태로부터 보호됩니다. 트랜잭션을 시작하자마자 60초 동안 계속 실행되도록 최적화해야 합니다. 작업 수는 트랜잭션에서 1,000개 문서를 초과할 수 없습니다.
MongoDB의 원자 트랜잭션 보장 은 데이터 일관성과 데이터 무결성이 필요한 애플리케이션에 탁월한 선택입니다. 또한 트랜잭션은 데이터에 대한 지속적인 액세스가 필요한 애플리케이션에 필요한 ACID 표준의 핵심 구성 요소입니다.
Mongodb의 힘: 트랜잭션
NoSQL 데이터베이스인 MongoDB를 사용하여 다중 페이지 트랜잭션을 실행할 수 있습니다. 트랜잭션을 사용하여 단일 또는 여러 컬렉션에서 여러 문서에 대한 여러 읽기 및 쓰기가 원자적이 되도록 할 수 있습니다. 트랜잭션 외에도 이를 사용하여 여러 작업, 컬렉션, 데이터베이스, 문서 및 샤드에서 원자성을 보장할 수 있습니다. MongoDB가 항상 원자성을 제공한다는 사실은 MongoDB를 탁월한 트랜잭션 도구 로 만듭니다. MongoDB는 초당 2억 5천만 트랜잭션의 속도로 트랜잭션을 처리합니다.
Oracle Nosql 데이터베이스 트랜잭션
Oracle NoSQL 데이터베이스 트랜잭션 은 단일 단위로 수행되는 일련의 읽기 및 쓰기입니다. 트랜잭션의 모든 쓰기는 트랜잭션이 커밋된 후 발생하는 모든 읽기에서 볼 수 있습니다. 트랜잭션은 여러 키와 데이터 항목에 걸쳐 있을 수 있습니다.
Nosql 데이터베이스: 언제 사용하고 언제 피해야 할까요?
반면에 NoSQL 데이터베이스는 많은 양의 비정형 데이터를 저장해야 하거나 덜 정형화된 데이터가 있는 조직에 더 나은 선택일 수 있습니다. 트랜잭션 지원은 기존 데이터베이스와 달리 NoSQL 데이터베이스에서 지원되지 않습니다. 많은 양의 데이터를 보관해야 하고 일관성 있는 저장 및 관리 방법을 찾고 있는 시스템에는 이것이 최선의 선택이 아닐 수 있습니다.
Nosql 데이터베이스
Nosql 데이터베이스는 기존 SQL 데이터베이스 구조를 사용하지 않는 데이터베이스입니다. 대신 최신 애플리케이션의 요구 사항을 충족하도록 더 쉽게 확장할 수 있는 더 유연한 구조를 사용합니다.
NoSQL 데이터베이스의 데이터는 테이블이 아닌 문서에 저장됩니다. 유연하고 확장 가능하며 몇 분 만에 최신 비즈니스 요구 사항에 대응할 수 있도록 설계되었습니다. 문서 데이터베이스, 키-값 저장소, 와이드 컬럼 데이터베이스 및 그래프 데이터베이스는 사용 가능한 NoSQL 데이터베이스 유형 중 일부입니다. 글로벌 2000개 조직은 미션 크리티컬 애플리케이션을 강화하기 위해 NoSQL 데이터베이스를 빠르게 채택하고 있습니다. 위에서 언급한 다섯 가지 추세는 대부분의 관계형 데이터베이스에서 직면하는 가장 어려운 기술적 과제 중 하나입니다. 관계형 데이터베이스의 고정 데이터 모델 때문에 애자일 개발의 주요 장벽입니다. NoSQL은 애플리케이션 모델을 데이터 모델의 하위 집합으로 정의합니다.
NoSQL을 사용한 데이터 모델링은 정적이지 않습니다. 문서 지향 데이터베이스에 데이터를 저장하기 위한 사실상의 형식은 JSON입니다. 또한 이것은 ORM 프레임워크의 사용을 제거하고 애플리케이션 개발을 능률화합니다. 새로 도입된 N1QL 쿼리 언어(nickel로 발음)는 Couchbase Server 4.0을 위한 강력한 SQL 및 JSON 확장입니다. 이 제품은 표준 SELECT / FROM / WHERE 문을 지원할 수 있을 뿐만 아니라 집계(GROUP BY), 정렬(SORT BY), 조인(LEFT OUTER / INNER) 등도 지원합니다. NoSQL 데이터베이스는 높은 수준의 운영 효율성과 스케일 아웃 아키텍처로 구별됩니다. 더 많은 고객이 웹 및 모바일 앱을 통해 온라인으로 비즈니스와 상호 작용함에 따라 서비스 가용성이 문제가 되었습니다.
NoSQL 데이터베이스는 쉽게 배포하고 구성할 수 있습니다. 읽기, 쓰기 및 저장을 위해 특별히 설계되었습니다. 다양한 크기의 클러스터 관리 및 모니터링을 포함하여 광범위한 규모로 작동합니다. NoSQL 데이터베이스는 여러 데이터 센터에 분산되어 있으며 별도의 소프트웨어 없이도 복제할 수 있습니다. 또한 하드웨어 라우터를 통해 즉각적인 재해 복구를 가능하게 하는 데 사용할 수 있으므로 애플리케이션이 데이터베이스가 문제를 감지하고 자체 복구를 수행할 때까지 기다릴 필요가 없습니다. NoSQL 데이터베이스의 발전으로 여러 플랫폼에서 실행되는 웹, 모바일 및 IoT 애플리케이션을 만들 수 있습니다.
NoSQL 데이터베이스는 확장성, 복제 및 유연성으로 인해 유용합니다. 높은 성능에도 불구하고 성능 저하 없이 많은 양의 데이터를 처리할 수 있습니다. 또한 텍스트, 이미지 및 구조화된 데이터를 다양한 형식으로 저장해야 하는 애플리케이션에 이상적입니다.
Nosql 데이터베이스의 장점
더 빠른 성능과 더 큰 유연성을 포함하여 기존 관계형 데이터베이스에 비해 NoSQL 데이터베이스에는 몇 가지 장점이 있습니다. 비디오 스트리밍이나 소셜 미디어 게시물과 같이 관계형 모델에 맞추기 어려운 데이터를 저장할 수 있습니다. 또한 관계형 데이터베이스와 동일한 수준의 스키마 및 데이터 매핑이 필요하지 않기 때문에 데이터 쿼리와 관련하여 더 효율적입니다.
산성 트랜잭션
트랜잭션의 특성을 결정할 때 약어 ACID는 원자성, 일관성, 격리 및 내구성이라는 네 가지 주요 속성으로 정의됩니다. 데이터베이스의 트랜잭션은 이러한 ACID 특성을 가진 것으로 정의할 수 있으며 트랜잭션 시스템 은 이러한 ACID 특성을 데이터 저장소에 적용한 것으로 정의할 수 있습니다.
ACID(Atomicity, Consistency, Isolation, and Durability)로 알려진 속성 집합은 오류, 정전 등의 상황에서도 유지되어야 하는 속성 집합이기 때문에 데이터베이스 트랜잭션 의 중요한 구성 요소입니다. 트랜잭션은 데이터베이스 변경의 필수 구성 요소입니다. 분산 응용 프로그램을 개발할 때 ACID 트랜잭션을 이해하는 것이 중요합니다. DBMS는 원자성에 대해 두 가지 접근 방식을 사용합니다. 변경 사항이 적용되기 전에 로그 파일이 서버에 기록됩니다. 반대로 두 번째 접근 방식은 데이터베이스가 페이지라고 하는 고정 길이 블록으로 분할되어 있다고 가정합니다. 트랜잭션이 진행되는 동안 현재 페이지와 섀도우 페이지의 두 페이지 복사본이 존재합니다.
트랜잭션은 일관성 없는 상태의 위험을 피하기 위해 격리 속성에서 직렬 순서로 실행됩니다. 클라이언트는 트랜잭션이 지속적으로 수행되어 트랜잭션 종료 시 상태에 대해 추론할 수 있다는 환상으로 DBMS 시스템에 속습니다. 일부는 시간이 오래 걸릴 수 있으므로 클라이언트는 긴 기간의 트랜잭션을 기다리는 것이 더 쉽다는 것을 알 수 있습니다. DBMS는 일련의 트랜잭션이 동시에 실행될 때만 트랜잭션이 인터리브되도록 허용하여 트랜잭션에 의해 스케줄이 생성됩니다. 동일한 데이터 항목에 대한 작업은 여러 트랜잭션에 의해 수행되며 그 중 하나는 쓰기 작업입니다. 원자성 섹션에서는 원자성과 내구성을 달성하기 위한 보다 일반적인 접근 방식을 설명합니다.
산 규정 준수의 중요성
데이터베이스 트랜잭션이 원활하고 안정적으로 작동하려면 항상 예측 가능하고 신뢰할 수 있는 방식으로 성공하거나 실패해야 합니다. ACID는 원자성, 일관성, 격리 및 내구성이라는 트랜잭션의 4가지 기본 및 가장 중요한 속성을 설명하는 데 사용되는 용어입니다. 이러한 요구 사항을 충족하는 트랜잭션을 ACID를 준수한다고 합니다.