Pensamientos de Mongodb y PostgreSql

Tengo una aplicación que funciona completamente con PostgreSql. Después de leer sobre Mongodb, me interesó ver cómo funcionaría la aplicación. Después de algunas semanas, migré todo el sistema a Mongodb.

Me gustan algunas cosas con Mongodb. Sin embargo, encontré ciertas consultas que estaba haciendo en PostgreSql, no podría hacerlo de manera eficiente en Mongodb. Especialmente, cuando tuve que unirme a varias tablas para calcular cierta lógica. Por ejemplo, esto .

Además, estoy usando Ruby on Rails 3 y un ODM llamado Mongoid. Mongoid todavía está en versión beta. La documentation fue buena, pero, de nuevo, a veces encontré que el ODM era muy limitado en comparación con lo que Active Record ofrecía con los sistemas de bases de datos tradicionales (SQL).

Incluso hasta la date, me siento más cómodo trabajando con PostgreSql que con Mongodb. Solo porque puedo unir tables y hacer cualquier cosa con los datos.

Hice dos types de copys de security. Uno con PostgreSql y el otro con Mongodb. Algunos dicen que algunas aplicaciones son más adecuadas con uno u otro tipo de db. ¿Debería continuar con Mongodb y eventualmente esperar que su RoR ODM (Mongoid) madure completamente, o debería considerar usar PostgreSql?

Algunas preguntas más: 1) Cuál sería más adecuado para desarrollar un sitio de networkinges sociales similar a Facebook. 2) Cuál sería más adecuado para el tipo de página de layout estándar de 4 páginas (Inicio, Productos, Acerca de, Contacto)

Ha descargado un RDBMS con varias décadas probado y con todas las funciones para una tienda de documentos joven, de calidad beta y con poca capacidad de soporte de la comunidad. A less que ya esté ejecutando decenas de miles de dólares al mes en serveres y piense que MongoDB encaja mejor con la naturaleza de sus datos, probablemente haya desperdiciado mucho time en beneficio negativo. Es divertido jugar con MongoDB, y he creado algunas aplicaciones para usarlo por esa razón, pero casi nunca es una mejor opción que Postgres / MySQL / SQL Server / etc. para aplicaciones de producción.

Vamos a citar lo que escribiste y ver lo que nos dice:

"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 companetworking to what Active Record offenetworking 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." 

Según lo que has dicho, me parece que debes seguir con PostgreSQL. Esté atento a MongoDB y úselo si es apropiado. Pero teniendo en count lo que has dicho, parece que PG es una mejor opción para ti en este momento.

Comparte y Disfruta.

Todavía no he usado MongoDB, y es posible que nunca lo haga porque no he encontrado nada que no pueda hacer con Postgres, solo para citar las notas de la versión de PostgreSQL 9.2:

Con PostgreSQL 9.2, los resultados de la consulta se pueden devolver como types de datos JSON. En combinación con las nuevas extensiones de progtwigción de bases de datos PL / V8 Javascript y PL / Coffee, y el almacén de valores-key HStore opcional, los usuarios ahora pueden utilizar PostgreSQL como una database de documentos "NoSQL", conservando la confiabilidad, flexibilidad y performance de PostgreSQL.

Parece que en las nuevas versiones de Postgres puedes tener lo mejor de ambos mundos. Todavía no lo he usado, pero como fanático de PostgreSQL (excelentes lists de correo y documentation) no dudaría en usarlo para casi cualquier cosa relacionada con RDBMS.

En primer lugar, postgres es un RDBMS y MongoDB es NoSQL.
pero las tecnologías autónomas NoSQL no cumplen con los estándares de ACID porque sacrifican las protecciones críticas de los datos en favor del performance de alto performance para las aplicaciones no estructuradas.

Postgres 9.4 proporciona capacidades NoSQL junto con soporte completo de transactions, almacenando documentos JSON con restricciones en los datos de los campos.

por lo que obtendrá todas las ventajas de RDBMS y NoSQL

échale un vistazo para ver el artículo detallado http://www.aptuz.com/blog/is-postgres-nosql-database-better-than-mongodb/

Para experimentar el performance NoSQL de Postgres por ti mismo. Descargue el pg_nosql_benchmark en GitHub. aquí está el enlace https://github.com/EnterpriseDB/pg_nosql_benchmark

También tenemos investigaciones sobre lo mismo que es mejor. PostGres o MongoDb . pero con todos los hechos y las cifras a mano, encontramos que PostGres es mucho mejor que MongoDb. en MongoDb, además de consumir memory y CPU, también ocupa gran cantidad de espacio en el disco. Aumenta el tamaño del disco 2x en cierto intervalo.

Mi experiencia con Postgres y Mongo después de trabajar con ambas bases de datos en mis proyectos.

Postgres (RDBMS)

Se recomienda Postgres si sus futuras aplicaciones tienen un esquema complicado que necesita muchas uniones o todos los datos tienen relaciones o si tenemos mucha escritura. Postgres es de código abierto, más rápido, compatible con ACID y utiliza less memory en el disco, y tiene un buen performance para el almacenamiento JSON también e incluye la serialization completa de las transactions con 3 niveles de aislamiento de transactions.

La mayor ventaja de quedarse con Postgres es que tenemos lo mejor de ambos mundos. Podemos almacenar datos en JSONB con restricciones, consistencia y velocidad. Por otro lado, podemos usar todas las características SQL para otros types de datos. El motor subyacente es muy estable y se adapta bien a un buen range de volúmenes de datos. También se ejecuta en su elección de hardware y sistema operativo. Postgres proporciona capacidades NoSQL junto con soporte total de transactions, almacenando documentos JSON con restricciones en los datos de los campos.

Restricciones generales para Postgres

Escalar Postgres Horizontalmente es significativamente más difícil, pero factible.

Las operaciones de lectura rápida no se pueden lograr completamente con Postgres.

SIN bases de datos SQL

Mongo DB (Tigre con cable)

MongoDB puede vencer a Postgres en dimensión de "escala horizontal". El almacenamiento de JSON es lo que Mongo está optimizado para hacer. Mongo almacena sus datos en un formatting binary llamado BSONb que es (más o less) solo una representación binaria de un superset de JSON. MongoDB almacena los objects exactamente como fueron diseñados. Según MongoDB, para aplicaciones de escritura intensiva, Mongo dice que el nuevo motor (Winetworking Tiger) ofrece a los usuarios un aumento de hasta 10 veces en el performance de escritura (debería intentarlo), con una networkingucción del 80% en la utilización de almacenamiento, ayudando a networkingucir los costos de almacenamiento , lograr una mayor utilización de hardware.

Restricciones generales de MongoDb

El uso de un motor de almacenamiento de esquema inferior conduce al problema de los esquemas implícitos. Estos esquemas no están definidos por nuestro motor de almacenamiento, sino que se definen en function del comportamiento y las expectativas de la aplicación.

Las tecnologías autónomas NoSQL no cumplen con los estándares ACID porque sacrifican las protecciones críticas de los datos a favor del performance de alto performance para las aplicaciones no estructuradas. No es difícil aplicar ACID en bases de datos NoSQL, pero haría que la database fuera lenta e inflexible hasta cierto punto. "La mayoría de las limitaciones de NoSQL se optimizaron en las versiones más nuevas y versiones que superaron en gran medida sus limitaciones anteriores".

  1. ¿Cuál sería más adecuado para desarrollar un sitio de networkinges sociales similar a Facebook? Facebook actualmente usa una combinación de bases de datos como Hive y Cassandra.
  2. Cuál sería más adecuado para el tipo de página de layout estándar de 4 páginas (Inicio, Productos, Acerca de, Contacto) De nuevo depende de cómo quiera almacenar y procesar sus datos. pero cualquier database SQL o NOSQL haría el trabajo.