programing

MongoDB 및 PostgreSQL 생각

padding 2023. 6. 27. 21:50
반응형

MongoDB 및 PostgreSQL 생각

포스트그레와 완벽하게 작동하는 앱이 있습니다.SQL. MongoDB에 대해 읽은 후, 앱이 어떻게 작동하는지에 관심이 있었습니다.몇 주 후, 저는 전체 시스템을 MongoDB로 마이그레이션했습니다.

저는 MongoDB에 대한 몇 가지를 좋아합니다.그러나 Postgre에서 수행 중인 특정 쿼리를 발견했습니다.SQL, MongoDB에서 효율적으로 하지 못했습니다.특히 몇 가지 논리를 계산하기 위해 여러 테이블을 결합해야 할 때.예를 들면 이거.

또한, 저는 Rails 3에서 Ruby를 사용하고 있으며, Mongoid라는 ODM을 사용하고 있습니다.Mongoid는 아직 베타 릴리즈 중입니다.문서화는 훌륭했지만, Active Record가 기존(SQL) 데이터베이스 시스템에서 제공하는 것에 비해 ODM이 매우 제한적이라는 것을 알게 되었습니다.

지금까지도, 저는 Postgre와 일하는 것이 더 편합니다.MongoDB보다 SQL.테이블을 연결하고 데이터로 무엇이든 할 수 있기 때문입니다.

두 가지 유형의 백업을 수행했습니다.Postgre가 있는 하나SQL과 MongoDB를 사용하는 다른 SQL.어떤 사람들은 어떤 앱들은 하나 또는 다른 유형의 DB에 더 적합하다고 말합니다.MongoDB를 계속 진행하고 궁극적으로 RoRODM(Mongoid)이 완전히 성숙하기를 바라야 합니까, 아니면 PostgreSQL 사용을 고려해야 합니까?

몇 가지 더 질문합니다: 1) 페이스북과 유사한 소셜 네트워킹 사이트를 개발하는 데 어떤 것이 더 적합할까요?4페이지 표준 레이아웃 유형의 웹 사이트(홈, 제품, 정보, 연락처)에는 어떤 것이 더 적합합니까?

수십 년 동안 테스트를 거친 완벽한 기능을 갖춘 RDBMS를 커뮤니티 지원이 거의 없는 젊고 베타 품질의 얇은 문서 저장소에 배치했습니다.이미 한 달에 수만 달러의 서버를 운영하고 있으며 MongoDB가 데이터의 특성에 더 적합하다고 생각하지 않는 한, 부정적인 이점을 위해 많은 시간을 낭비했을 수 있습니다.MongoDB는 가지고 노는 것이 재미있고, 그런 이유로 제가 직접 그것을 사용하여 몇 개의 앱을 만들었지만, 프로덕션 애플리케이션을 위한 Postgres/MySQL/SQL Server 등보다 더 나은 선택은 거의 없습니다.

귀하가 작성한 내용을 인용하여 다음과 같이 설명합니다.

"I like a few things with Mongodb. However, I found certain queries I was
 doing in PostgreSql, I couldn't do efficiently in Mongodb. Especially,
 when I had to join several tables to calculate some logic."

"I found the ODM to be very limiting compared to what Active Record offered
 with traditional (SQL) database systems."

"I feel more comfortable working with PostgreSql than Mongodb. Only because
 I can join tables and do anything with the data."

당신이 말한 것에 따르면 당신은 포스트그르를 고수해야 할 것 같습니다.SQL. MongoDB를 잘 보고 적절한지, 적절한지 사용하세요.하지만 당신이 말한 것을 고려해 볼 때 PG가 현재 당신에게 더 적합한 것처럼 보입니다.

공유하고 즐기세요.

저는 아직 MongoDB를 사용하지 않았고, Postgres에서 할 수 없는 것을 찾지 못했기 때문에 절대로 사용할 수 없을지도 모릅니다. 단지 Postgre를 인용하자면요.SQL 9.2 릴리스 정보:

Postgre 포함SQL 9.2에서 쿼리 결과를 JSON 데이터 유형으로 반환할 수 있습니다.새로운 PL/V8 Javascript 및 PL/Coffee 데이터베이스 프로그래밍 확장, 그리고 선택적인 HSStore 키 값 저장소와 결합하여 사용자는 이제 Postgre를 사용할 수 있습니다.Postgre를 유지하면서 "NoSQL" 문서 데이터베이스와 같은 SQLSQL의 안정성, 유연성 및 성능.

따라서 새로운 버전의 Postgres에서는 두 가지 장점을 모두 누릴 수 있습니다.저도 아직 이것을 사용해본 적은 없지만 PostgreSQL(우수 문서/메일 목록)의 팬으로서 RDBMS와 관련된 거의 모든 것에 사용하는 것을 주저하지 않습니다.

입니다.
그러나 독립 실행형 NoSQL 기술은 구조화되지 않은 애플리케이션의 높은 처리량 성능을 위해 중요한 데이터 보호를 희생하기 때문에 ACID 표준을 충족하지 못합니다.

Postgres 9.4는 완전한 트랜잭션 지원과 함께 NoSQL 기능을 제공하며 필드 데이터에 제약이 있는 JSON 문서를 저장합니다.

따라서 RDBMS와 NoSQL 모두에서 모든 이점을 얻을 수 있습니다.

자세한 기사는 http://www.aptuz.com/blog/is-postgres-nosql-database-better-than-mongodb/ 에서 확인하세요.

Postgres의 NoSQL 성능을 직접 경험하기 위해서입니다.GitHub에서 pg_nosql_benchmark를 다운로드합니다.여기 https://github.com/EnterpriseDB/pg_nosql_benchmark 링크가 있습니다.

우리는 또한 어떤 것이 더 나은지에 대한 동일한 연구를 가지고 있습니다. PostGres또는MongoDb그러나 모든 사실과 수치를 파악한 결과 PostGres는 메모리와 CPU를 소모하는 것 외에도 MongoDb의 MongoDb보다 훨씬 사용하기에 더 낫다는 것을 알게 되었습니다.특정 간격으로 디스크 크기가 2배 증가합니다.

프로젝트에서 두 데이터베이스를 모두 사용한 후 Postgres와 Mongo와의 경험.

포스트그레스(RDB)MS)

향후 응용 프로그램에 조인이 많이 필요하거나 모든 데이터가 관련되어 있거나 쓰기 작업이 많은 복잡한 스키마가 있는 경우에는 Postgres를 사용하는 것이 좋습니다.Postgres는 오픈 소스이고, 더 빠르고, ACID를 준수하며, Disk에서 더 적은 메모리를 사용하며, JSON 스토리지에 대한 성능이 우수하며, 트랜잭션 격리 레벨이 3개인 트랜잭션의 완전한 직렬화 가능성을 포함합니다.

Postgres와 함께 지내는 것의 가장 큰 장점은 우리가 두 세계의 장점을 모두 가지고 있다는 것입니다.제약, 일관성 및 속도로 JSONB에 데이터를 저장할 수 있습니다.다른 유형의 데이터에 대해 모든 SQL 기능을 사용할 수 있습니다.기본 엔진은 매우 안정적이며 다양한 데이터 볼륨에 잘 대처합니다.또한 선택한 하드웨어 및 운영 체제에서도 실행됩니다.전체 트랜잭션 지원과 함께 NoSQL 기능을 제공하는 Postgres는 필드 데이터에 제약이 있는 JSON 문서를 저장합니다.

포스트그레스에 대한 일반 제약 조건

Postgres를 수평으로 스케일링하는 것은 상당히 어렵지만 실행할 수 있습니다.

Postgres에서는 빠른 읽기 작업을 완전히 수행할 수 없습니다.

SQL 데이터베이스 없음

몽고 DB(와이어드 타이거)

MongoDB는 "수평 스케일"의 차원에서 Postgres를 이길 수 있습니다.JSON을 저장하는 것이 Mongo에 최적화된 방법입니다.Mongo는 데이터를 BSONb라는 이진 형식으로 저장합니다. 이 이진 형식은 JSON의 상위 집합을 (대략적으로) 이진 표현한 것입니다.MongoDB는 객체가 설계된 그대로 저장됩니다.MongoDB에 따르면, 쓰기 집약적인 애플리케이션의 경우, 새로운 엔진(Wired Tiger)이 사용자에게 쓰기 성능을 최대 10배 향상시켜 스토리지 활용률을 80%까지 낮추고, 스토리지 비용을 절감하고, 하드웨어 활용률을 높이는 데 도움이 된다고 합니다.

MongoDb의 일반 제약 조건

스키마가 없는 스토리지 엔진을 사용하면 암시적 스키마 문제가 발생합니다.이러한 스키마는 NAT 스토리지 엔진에 의해 정의되지 않고 애플리케이션 동작 및 기대치에 따라 정의됩니다.

독립 실행형 NoSQL 기술은 구조화되지 않은 애플리케이션의 높은 처리량 성능을 위해 중요한 데이터 보호를 희생하기 때문에 ACID 표준을 충족하지 못합니다.NoSQL 데이터베이스에 ACID를 적용하는 것은 어렵지 않지만 데이터베이스를 어느 정도 느리게 만들고 유연성이 떨어집니다."대부분의 NoSQL 제한 사항은 이전의 제한 사항을 상당히 극복한 최신 버전과 릴리스에서 최적화되었습니다."

  1. 페이스북과 유사한 소셜 네트워킹 사이트를 개발하는 데 어떤 것이 더 적합할까요?페이스북은 현재 하이브와 카산드라와 같은 데이터베이스의 조합을 사용합니다.
  2. Which one would be more suitable for 4-page standard layout type of website (Home, Products, About, Contact) Again it depends how you want to store and process your data. but any SQL or NOSQL database would do the job.

ReferenceURL : https://stackoverflow.com/questions/4426540/mongodb-and-postgresql-thoughts

반응형