when over example and nosql rdbms

over - Cuándo reemplazar RDBMS/ORM con NoSQL



sql vs nosql (2)

¿Qué tipo de proyectos se benefician con el uso de una base de datos NoSQL en lugar de rdbms envueltos por un ORM?

Ejemplos:

  • ¿Sitios semejantes de Stackoverflow?
  • ¿Comunidades sociales?
  • foros?

Tu pregunta es muy general. NoSQL describe una colección de técnicas de bases de datos que son muy diferentes entre sí. A grandes rasgos, hay:

  • Tiendas de valor-clave (Redis, Riak)
  • Triplestores (AllegroGraph)
  • Tiendas de la familia de la columna (Bigtable, Cassandra)
  • Tiendas orientadas a documentos (CouchDB, MongoDB)
  • Bases de datos de grafos (Neo4j)

Un proyecto puede beneficiarse del uso de una base de datos de documentos durante la fase de desarrollo del proyecto, ya que no tendrá que diseñar diagramas de relaciones de entidad complejos ni escribir consultas de combinación complejas. He detallado otros usos de las bases de datos de documentos en esta respuesta .

Si su aplicación necesita manejar grandes cantidades de datos, la fase de desarrollo probablemente será más larga cuando utilice una solución NoSQL especializada como Cassandra. Sin embargo, cuando su aplicación entre en producción , se beneficiará enormemente del rendimiento y la escalabilidad de Cassandra.

En términos generales, si una aplicación tiene los siguientes requisitos:

  • escala horizontalmente
  • trabajar con el modelo de datos X
  • realizar operaciones Y

la aplicación se beneficiará del uso de una solución NoSQL que está orientada a almacenar el modelo de datos X y realizar operaciones Y en los datos. Si necesita respuestas más específicas con respecto a un determinado tipo de base de datos NoSQL, deberá actualizar su pregunta.

  1. ¿Beneficios durante el desarrollo (por ejemplo, más fácil de usar que SQL, sin costos de licencia)?
  2. ¿Beneficios en términos de rendimiento (por ejemplo, se ejecuta como un infierno con un millón de usuarios simultáneos)?
  3. ¿Qué tipo de base de datos NoSQL?

Actualizar

Los almacenes de valor-clave solo se pueden consultar por clave en la mayoría de los casos Son útiles para almacenar datos simples, como sesiones de usuario, datos de perfil simples o valores y resultados precalculados. Si bien es posible almacenar datos más complejos en pares de clave-valor, la aplicación tiene la responsabilidad de mantener índices "manuales" para realizar consultas más avanzadas.

Los triplestores son para almacenar Metadatos de Descripción de Recursos . No tengo nada que ver con estas tiendas, excepto por lo que me dice Wikipedia , así que tendrás que investigar un poco sobre eso.

Las tiendas de la familia de columnas están diseñadas para almacenar y procesar grandes cantidades de datos. Son utilizados por el motor de búsqueda de Google y la búsqueda de la bandeja de entrada de Facebook Los datos son consultados por las funciones de MapReduce . Aunque las funciones de MapReduce pueden ser difíciles de entender al principio, el concepto es bastante simple. Aquí hay una analogía que (con suerte) explica el concepto:

Imagina que tienes múltiples cajas de zapatos llenas de recibos y quieres calcular tus gastos totales. Invitas a algunos de tus amigos y asignas una persona a cada caja de zapatos. Cada persona anota el total de cada recibo en su caja de zapatos. Este proceso de selección de los datos requeridos es la parte del mapa.

Cuando una persona ha anotado los totales de (algunos de) sus recibos, puede resumir estos totales. Esta es la parte de Reducir y puede repetirse varias veces hasta que todos los recibos hayan sido manejados. Al final, todos sus amigos se juntan y resumen sus sumas totales, dándole los gastos totales. Ese es el paso final de Reducir.

La ventaja de este enfoque es que puede tener cualquier número de cajas de zapatos y puede asignar cualquier número de personas a una caja de zapatos y aún así obtener el mismo resultado. Cada caja de zapatos puede verse como un servidor en la red de la base de datos. Cada amigo puede ser visto como un hilo en el servidor. Con MapReduce puede tener sus datos distribuidos en muchos servidores y hacer que cada servidor maneje parte de la consulta, optimizando el rendimiento de su base de datos.

Las tiendas orientadas a documentos se explican en esta pregunta , por lo que no las discutiré aquí.

Las bases de datos de gráficos son para almacenar redes de objetos altamente conectados, como los usuarios en una red social, por ejemplo. Estas bases de datos están optimizadas para operaciones gráficas, como encontrar la ruta más corta entre dos nodos o encontrar todos los nodos dentro de tres saltos desde el nodo actual. Dichas operaciones son bastante caras en los sistemas RDBMS u otras bases de datos NoSQL, pero son muy baratas en las bases de datos de gráficos.


NoSQL en el sentido de diferentes enfoques de diseño, no solo el lenguaje de consulta. Puede tener diferentes características. Por ejemplo, las bases de datos orientadas a columnas se utilizan para una gran cantidad de almacenes de datos, que pueden usarse para OLAP .

Similar a mi question , ahí encontrarás muchos recursos.