오히려 한 데이터베이스 만 사용하는 경우가 있습니다 (PostgreSQL 또는 ElasticSearch). 하지만 현재 프로토 타입 응용 프로그램에서 믹스 (PG 및 ES)를 사용하고 있으며 믹스에서 다른 종류의 dbs를 throw 할 수 있습니다 (예 : redis).여러 SQL/NoSQL 데이터베이스의 일관성/원 자성 (또는 심지어 ACID) 속성 architecture
일부 데이터는 다른 방식으로 각 데이터베이스에 보존되어야한다고 가정 해보십시오. 구성 요소/데이터베이스 중 하나에서 장애가 발생할 경우 어떻게 시스템을 일관되게 유지합니까?
내가 직면 한 시나리오 예 : PostgreSQL에서 데이터 업데이트, ElasticSearch를 사용할 수 없습니다. 두 데이터베이스를 모두 업데이트해야하므로이 시점에서 시스템이 일관성이 없습니다. SQL DB를 사용할 때 트랜잭션을 중단하여 시스템을 이전의 일관된 상태로 만들 수 있습니다.
하지만 시스템을 일관되게 유지하는 가장 좋은 방법은 무엇입니까?
- 모든 데이터베이스에서 값이 유지 될 때마다 확인 하시겠습니까?
- 오류가 발생하면 이전 상태로 복원 하시겠습니까? 그러나 일부 NoSQL 데이터베이스에는 트랜잭션/ACID 메커니즘이 없으므로 이전 상태로 쉽게 되돌릴 수 없습니다.
여러 데이터베이스를 동기화해야하는 경우 일종의 "버전"메타 데이터 (타임 스탬프 또는 집에서 버전 번호를 변경했는지 여부)를 추가하는 것과 같은 좋은 습관이 있어야합니다. 데이터베이스가 다시 동기화됩니까? (내장 된 CouchDB에 대해 이야기하지는 않습니다.)
또한 데이터베이스는 모두 원자 적으로 업데이트되지 않으므로 일부 부분이 단기간에 일관성이 없습니다. 나는 그것이 애플 리케이션의 비즈니스에 달려 있다고 생각하지만 누군가가 내 문제가 발생했는지 또는 해결할 수있는 방법에 대해 어떤 생각을 갖고 있는가? 나는 그것이 힘들고 많은 설정에 달려 있다고 생각한다.
이것이 일반적인 아키텍처 문제일지도 모르지만 주제에 대한 정보를 찾는 데 문제가 있습니다.
내 경우에는 강력한 일관성 보장 + 기존 프레임 워크에 사용하는 주 데이터베이스이므로 SQL 데이터베이스가 필요합니다. 그러나 ElasticSearch의 NoSQL 솔루션은 엄청난 검색 능력을 제공합니다. 주제에 대한 모든 불화를 알고 있습니까? 답변 해 주셔서 감사합니다. (나는 그것을 업 그레 이드 할 수 있었으면 좋지만 15 평판조차 가지고 있지 않다!) – djcoin
여기 나는 당신을 투표 할 수있다! 나는 두려움이 조금 두려워하게 만드는 많은 것들이 있다고 생각되는만큼 대답을 표시하기 전에 다른 대답이 있기를 바랍니다. – djcoin