내 프로젝트에서 두 데이터베이스를 모두 사용한 후 Postgres와 Mongo에 대한 나의 경험.
Postgres (RDBMS)
Postgres는 향후 애플리케이션에 많은 조인이 필요한 복잡한 스키마가 있거나 모든 데이터에 관계가 있거나 많은 쓰기 작업이있는 경우 권장됩니다. Postgres는 오픈 소스이고 더 빠르며 ACID를 준수하며 디스크에서 메모리를 적게 사용하며 JSON 스토리지에 대해 모두 우수한 성능을 제공하며 3 단계의 트랜잭션 격리를 통해 트랜잭션의 완전한 직렬 성을 포함합니다.
Postgres에 머무르는 것의 가장 큰 장점은 두 가지 장점을 모두 갖추고 있다는 것입니다. 제약, 일관성 및 속도로 데이터를 JSONB에 저장할 수 있습니다. 반면에 다른 유형의 데이터에 대해 모든 SQL 기능을 사용할 수 있습니다. 기본 엔진은 매우 안정적이며 다양한 데이터 볼륨에 잘 대처합니다. 또한 선택한 하드웨어 및 운영 체제에서 실행됩니다. 전체 트랜잭션 지원과 함께 NoSQL 기능을 제공하는 Postgres는 필드 데이터에 대한 제약 조건이있는 JSON 문서를 저장합니다.
Postgres에 대한 일반 제약
Postgres를 수평으로 확장하는 것은 훨씬 어렵지만 가능합니다.
Postgres로는 빠른 읽기 작업을 완전히 수행 할 수 없습니다.
SQL 데이터베이스 없음
Mongo DB (Wired Tiger)
MongoDB는 "수평 적 규모"측면에서 Postgres를 능가 할 수 있습니다. JSON 저장은 Mongo가 최적화 된 작업입니다. Mongo는 데이터를 BSONb라는 바이너리 형식으로 저장하는데, 이는 (대략) JSON 상위 집합의 바이너리 표현입니다. MongoDB는 설계된 그대로 객체를 저장합니다. MongoDB에 따르면 쓰기 집약적 인 애플리케이션을 위해 Mongo는 새로운 엔진 (Wired Tiger)이 사용자에게 쓰기 성능을 최대 10 배 향상시키고 (이것을 시도해야 함) 스토리지 사용률을 80 % 감소시켜 스토리지 비용을 절감 할 수 있다고 말합니다. , 하드웨어 활용도를 높이십시오.
MongoDb의 일반 제약
스키마가 적은 스토리지 엔진을 사용하면 암시 적 스키마 문제가 발생합니다. 이러한 스키마는 스토리지 엔진에 의해 정의되지 않고 대신 애플리케이션 동작 및 기대치를 기반으로 정의됩니다.
독립형 NoSQL 기술은 비정형 애플리케이션의 높은 처리량 성능을 위해 중요한 데이터 보호를 희생하기 때문에 ACID 표준을 충족하지 못합니다. NoSQL 데이터베이스에 ACID를 적용하는 것은 어렵지 않지만 데이터베이스를 어느 정도까지 느리고 유연하지 않게 만듭니다. "대부분의 NoSQL 제한 사항은 이전 제한 사항을 크게 극복 한 최신 버전 및 릴리스에서 최적화되었습니다."