나는 데이터베이스 전문가가 아니며 공식적인 컴퓨터 과학 배경이 없으므로 나와 함께하십시오. ACID와 호환 되지 않는 v4 이전 의 이전 MongoDB 버전 을 사용하는 경우 발생할 수있는 실제 부정적인 종류에 대해 알고 싶습니다 . 이것은 모든 ACID 비준수 데이터베이스에 적용됩니다.
MongoDB는 Atomic Operations를 수행 할 수 있지만 성능상의 이유로 "전통적인 잠금 및 복잡한 트랜잭션"을 지원하지 않는다는 것을 알고 있습니다. 또한 데이터베이스 트랜잭션의 중요성과 데이터베이스가 은행을위한 경우의 예를 이해하고 모두 동기화해야하는 여러 레코드를 업데이트하는 경우 트랜잭션이있는 경우 트랜잭션이 초기 상태로 되돌아 가기를 원합니다. 정전으로 인해 신용은 구매 등과 같습니다.
그러나 MongoDB에 대한 대화를 할 때 데이터베이스가 실제로 어떻게 구현되는지에 대한 기술적 세부 사항을 모르는 사람들은 다음과 같은 문장을 던지기 시작합니다.
MongoDB는 MySQL 및 Postgres보다 훨씬 빠르지 만 1 백만 분의 1과 같이 "올바르게 저장되지 않을"가능성은 적습니다.
"정확하게 저장하지 않습니다"부분은 이러한 이해를 언급합니다. MongoDB에 쓰는 순간 정전이 발생하면 특정 기록이있을 수 있습니다 (예 : 10 개의 속성이있는 문서에서 페이지 뷰를 추적하고 있음) 각각), 문서 중 하나는 5 개의 속성 만 저장했습니다. 이는 시간이지나면서 페이지 뷰 카운터가 "약간"꺼질 것임을 의미합니다. 당신은 그들이 얼마나 99.999 %이지만 100 %가 아니라는 것을 알지 못할 것입니다. 이것은 특별히 mongodb atomic operation으로 설정하지 않는 한 조작이 원자적임을 보장하지 않기 때문입니다.
제 질문은 MongoDB가 "올바르게 저장되지"않을시기와 이유에 대한 올바른 해석은 무엇입니까? ACID의 어떤 부분이 만족스럽지 않으며 어떤 상황에서 데이터의 0.001 %가 꺼져 있는지 어떻게 알 수 있습니까? 어떻게 든 고칠 수 없습니까? 그렇지 않은 경우 users
레코드가 저장되지 않을 수 있으므로 테이블 과 같은 것을 MongoDB에 저장해서는 안된다는 의미입니다 . 그러나 다시 한 번 1 / 1,000,000 명의 사용자는 "다시 가입을 시도"해야합니다.
MongoDB와 같은 ACID 비 호환 데이터베이스에서 부정적 일이 발생하는시기 / 이유 목록을 찾고 있으며 이상적으로 표준 해결 방법이있는 경우 (데이터를 정리하기 위해 백그라운드 작업을 실행하거나이를 위해 SQL 만 사용하는 등) 이상적입니다. .