¿Qué es NoSQL, cómo funciona y qué beneficios proporciona? [cerrado]


He estado escuchando cosas sobre NoSQL y que eventualmente puede convertirse en el sustituto de SQL DB métodos de almacenamiento debido al hecho de que DB interacción es a menudo un cuello de botella para la velocidad en la web.

Así que solo tengo algunas preguntas:

  1. ¿Qué es exactamente?

  2. ¿Cómo funciona?

  3. ¿Por qué sería mejor que usar una base de datos SQL? Y cuánto mejor es?

  4. Es la tecnología demasiado nueva para empezar a implementar todavía o ¿vale la pena echar un vistazo?

Author: Community, 2009-07-18

9 answers

  1. ¿Qué es exactamente?

    Por un lado, un sistema específico, pero también se ha convertido en una palabra genérica para una variedad de nuevos backends de almacenamiento de datos que no siguen el modelo relacional DB.

  2. ¿Cómo funciona?

    Cada uno de los sistemas etiquetados con el nombre genérico funciona de manera diferente, pero la idea básica es ofrecer una mejor escalabilidad y rendimiento mediante el uso de modelos de base de datos que no admiten toda la funcionalidad de un RDBMS genérico, pero todavía suficiente funcionalidad para ser útil. En cierto modo es como MySQL, que en algún momento carecía de soporte para transacciones pero, exactamente porque de eso, logró superar a otros sistemas de bases de datos. Si pudiera escribir su aplicación de una manera que no requiriera transacciones, fue genial.

  3. ¿Por qué sería mejor que usar una base de datos SQL? Y cuánto mejor es?

    Sería mejor cuando su sitio necesita escalar tan masivamente que el los mejores RDBMS que se ejecutan en el mejor hardware que puede pagar y optimizados tanto como sea posible simplemente no pueden mantenerse al día con la carga. Cuánto mejor depende del caso de uso específico (mucha actividad de actualización combinada con muchas uniones es muy difícil en RDBMSs "tradicionales") - bien podría ser un factor de 1000 en casos extremos.

  4. ¿Es la tecnología demasiado nueva para comenzar a implementarla todavía o vale la pena echarle un vistazo?

    Depende principalmente de lo que usted está tratando de lograr. Ciertamente es lo suficientemente maduro para usarlo. Pero pocas aplicaciones realmente necesitan escalar eso masivamente. Para la mayoría, un RDBMS tradicional es suficiente. Sin embargo, con el uso de Internet cada vez más ubicuo todo el tiempo, es muy probable que las aplicaciones que lo hacen se vuelvan más comunes (aunque probablemente no dominantes).

 105
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-01 00:43:14

No hay tal cosa como NoSQL!

NoSQL es una palabra de moda.

Durante décadas, cuando la gente hablaba de bases de datos, se referían a bases de datos relacionales. Y cuando la gente hablaba de bases de datos relacionales, se referían a aquellas que se controlan con el Lenguaje de Consulta Estructurado de Edgar F. Codd. Almacenar datos de alguna otra manera? ¡Locura! Cualquier otra cosa son solo archivos planos.

Pero en los últimos años, la gente comenzó a cuestionar este dogma. La gente se preguntó si las tablas con filas y las columnas son realmente la única manera de representar datos. La gente comenzó a pensar y programar, y se le ocurrieron muchos conceptos nuevos sobre cómo se podían organizar los datos. Y comenzaron a crear nuevos sistemas de bases de datos diseñados para estas nuevas formas de trabajar con datos.

Las filosofías de todas estas bases de datos eran diferentes. Pero una cosa que todas estas bases de datos tenían en común, era que el Lenguaje de Consulta Estructurado ya no era una buena opción para usarlas. Así que cada base de datos reemplazó SQL con su propia consulta idioma. Y así nació el término NoSQL, como una etiqueta para todas las tecnologías de base de datos que desafían el modelo clásico de base de datos relacional.

Entonces, ¿qué tienen en común las bases de datos NoSQL?

En realidad, no mucho.

A menudo escuchas frases como:

  • NoSQL es escalable!
  • NoSQL es para BigData!
  • NoSQL viola ACID!
  • NoSQL es un almacén de claves/valores glorificado!

¿Es eso cierto? Bueno, algunas de estas afirmaciones podrían ser ciertas para algunas bases de datos comúnmente llamadas NoSQL, pero cada una también es falsa para al menos otra. En realidad, lo único que las bases de datos NoSQL tienen en común, es que son bases de datos que no utilizan SQL. Eso es. Lo único que los define es lo que los diferencia unos de otros.

Entonces, ¿qué diferencia a las bases de datos NoSQL?

Así que dejamos claro que todas esas bases de datos comúnmente referidas como NoSQL son demasiado diferentes para evaluarlas juntas. Cada uno de ellos debe ser evaluado por separado para decidir si son una buena opción para resolver un problema específico. ¿Pero por dónde empezamos? Afortunadamente, las bases de datos NoSQL se pueden agrupar en ciertas categorías, que son adecuadas para diferentes casos de uso:

Orientado a documentos

Ejemplos: MongoDB, CouchDB

Fortalezas: Datos heterogéneos, trabajo orientado a objetos, desarrollo ágil

Su ventaja es que no requieren una estructura de datos. Son útiles cuando sus requisitos y por lo tanto, el diseño de su base de datos cambia constantemente, o cuando se trata de conjuntos de datos que pertenecen juntos, pero todavía se ven muy diferentes. Cuando tienes muchas tablas con dos columnas llamadas " clave "y" valor", vale la pena investigarlas.

Bases de datos de gráficos

Ejemplos: Neo4j, GiraffeDB.

Fortalezas: Minería de datos

Mientras que la mayoría de las bases de datos NoSQL abandonan el concepto de administración de relaciones de datos, estas bases de datos lo adoptan aún más que las las llamadas bases de datos relacionales.

Su enfoque es definir los datos por su relación con otros datos. Cuando tienes muchas tablas con claves primarias que son las claves primarias de otras dos tablas (y tal vez algunos datos que describen la relación entre ellas), entonces estas podrían ser algo para ti.

Almacenes clave-Valor

Ejemplos: Redis, Cassandra, MemcacheDB

Fortalezas: Búsqueda rápida de valores por claves conocidas

Son muy simplistas, pero que los hace rápidos y fáciles de usar. Cuando no necesita procedimientos almacenados, restricciones, disparadores y todas esas funciones avanzadas de base de datos y solo desea un almacenamiento y recuperación rápidos de sus datos, esos son para usted.

Desafortunadamente asumen que usted sabe exactamente lo que está buscando. ¿Necesitas el perfil de User157641? No hay problema, solo tomará microsegundos. Pero lo que cuando quieres los nombres de todos los usuarios que tienen entre 16 y 24 años, tienen "waffles" como su favorito comida y conectado en las últimas 24 horas? Mala suerte. Cuando no tienes una clave definida y única para un resultado específico, no puedes sacarla de tu tienda K-V tan fácilmente.

Es SQL obsoleto?

Algunos defensores de NoSQL afirman que su base de datos NoSQL favorita es la nueva forma de hacer las cosas, y SQL es cosa del pasado.

¿Tienen razón?

No, por supuesto que no. Si bien hay problemas SQL no es adecuado para, todavía tiene sus fortalezas. Muchos datos los modelos son simplemente mejor representados como una colección de tablas que hacen referencia entre sí. Especialmente porque la mayoría de los programadores de bases de datos fueron entrenados durante décadas para pensar en los datos de una manera relacional, y tratar de presionar esta mentalidad en una nueva tecnología que no fue hecha para ella rara vez termina bien.

Las bases de datos NoSQL no son un reemplazo para SQL - son una alternativa.

La mayoría de los ecosistemas de software alrededor de las diferentes bases de datos NoSQL no están tan maduros todavía. Si bien hay avances, todavía no tiene herramientas complementarias que sean tan maduras y poderosas como las disponibles para bases de datos SQL populares.

Además, hay mucho más know-how para SQL around. Generaciones de científicos de la computación han pasado décadas de sus carreras en la investigación centrada en bases de datos relacionales, y muestra: La literatura escrita sobre bases de datos SQL y modelado de datos relacionales, tanto práctica como teórica, podría llenar múltiples bibliotecas llenas de libros. Cómo construir una relación la base de datos para sus datos es un tema tan bien investigado que es difícil encontrar un caso de esquina donde no haya una buena práctica generalmente aceptada por el libro.

La mayoría de las bases de datos NoSQL, por otro lado, están todavía en su infancia. Todavía estamos descubriendo la mejor manera de usarlos.

 118
Author: Philipp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-25 15:20:10

Ya que alguien dijo que mi post anterior estaba fuera de tema, voy a tratar de compensar: -) NoSQL no es, y nunca fue, la intención de ser un reemplazo para las bases de datos SQL más convencionales, pero un par de palabras son con el fin de conseguir las cosas en la perspectiva correcta.

En el corazón mismo de la filosofía NoSQL se encuentra la consideración de que, posiblemente por razones comerciales y de portabilidad, los motores SQL tienden a ignorar el tremendo poder del sistema operativo UNIX y su derivados.

Con una base de datos basada en un sistema de archivos, puede aprovechar de inmediato las capacidades y el poder cada vez mayores del sistema operativo subyacente, que han ido aumentando constantemente durante muchos años, de acuerdo con la ley de Moore. Con este enfoque, muchos comandos del sistema operativo se convierten automáticamente también en "operadores de base de datos" (piense en "ls" "sort", "find" y otras innumerables utilidades de shell de UNIX).

Con esto en mente, y un poco de creatividad, de hecho, puede diseñar una base de datos basada en el sistema de archivos que sea capaz de superar las limitaciones de muchos motores SQL comunes, al menos para patrones de uso específicos, que es el punto detrás de la filosofía de NoSQL, de la manera en que lo veo.

Dirijo cientos de sitios web y todos ellos usan NoSQL en mayor o menor medida. De hecho, no alojan grandes cantidades de datos, pero incluso si algunos de ellos lo hicieran, probablemente podría pensar en un uso creativo de NoSQL y el sistema de archivos para superar los cuellos de botella. Algo que probablemente sería más difícil con las "cárceles" SQL tradicionales. Les insto a buscar en Google "unix", "manis" y "shaffer" para entender lo que quiero decir.

 27
Author: Carlo Strozzi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-20 20:15:53

Si recuerdo correctamente, se refiere a tipos de bases de datos que no necesariamente siguen la forma relacional. Las bases de datos de documentos vienen a la mente, bases de datos sin una estructura específica, y que no utilizan SQL como un lenguaje de consulta específico.

Generalmente es más adecuado para aplicaciones web que dependen del rendimiento de la base de datos, y no necesitan características más avanzadas de Motores de Bases de datos de Relación. Por ejemplo, un almacén de clave->Valor que proporciona una interfaz de consulta simple por id podría ser 10-100 veces más rápido que la implementación de SQL Server correspondiente, con un menor costo de mantenimiento para desarrolladores.

Un ejemplo es este paper para un Almacén de tuplas OLTP, que sacrificó transacciones para el procesamiento de subprocesos simples (sin problema de concurrencia porque no se permite la concurrencia), y mantuvo todos los datos en memoria; logrando un rendimiento 10-100x mejor en comparación con un sistema similar impulsado por RDBMS. Básicamente, se está alejando de la vista' One Size Fits All ' de SQL y sistemas de bases de datos.

 8
Author: CoderTao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-07 04:19:08

En la práctica, NoSQL es un sistema de base de datos que admite el acceso rápido a objetos binarios grandes (docs, jpgs, etc.) utilizando una estrategia de acceso basada en claves. Esto es una desviación del acceso SQL tradicional que solo es lo suficientemente bueno para valores alfanuméricos. No solo el almacenamiento interno y la estrategia de acceso, sino también la sintaxis y las limitaciones en el formato de visualización restringen el SQL tradicional. Las implementaciones de BLOB de bases de datos relacionales tradicionales también sufren de estas restricciones.

Detrás de la escena es una admisión indirecta de la falla del modelo SQL para soportar cualquier forma de OLTP o soporte para nuevos dataformats. "Soporte" significa no solo almacenar, sino también capacidades de acceso completo: programática y querywise utilizando el modelo estándar.

Los entusiastas relacionales se apresuraron a modificar la defnición de NoSQL de Not-SQL a Not-Only-SQL para mantener SQL todavía en la imagen! Esto no es bueno, especialmente cuando vemos que la mayoría de los programas Java de hoy en día recurren al mapeo OR del modelo relacional subyacente. Un nuevo concepto debe tener una definición clara. Si no, acabará como SOA.

La base de los sistemas NoSQL se encuentra en el par aleatorio clave - valor. Pero esto no es nuevo. Los sistemas de bases de datos tradicionales como IMS e IDMS soportaban claves ramdom hash (sin hacer uso de ningún índice) y todavía lo hacen. De hecho, IDMS ya tiene una palabra clave NONSQL donde admiten el acceso SQL a su base de datos de red más antigua que denominaron como NONSQL.

 5
Author: Gopi Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-24 06:57:59

Es como Jacuzzi: tanto una marca como un nombre genérico. No se trata solo de una tecnología específica, sino de un tipo específico de tecnología, en este caso refiriéndose a "bases de datos" a gran escala (a menudo escasas) como BigTable o CouchDB de Google.

 4
Author: Joel Coehoorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-17 21:18:02

NoSQL el programa real parece ser una base de datos relacional implementada en awk usando archivos planos en el backend. Aunque profesan, "NoSQL esencialmente no tiene límites arbitrarios, y puede funcionar donde otros productos no pueden. Por ejemplo, no hay límite en el tamaño del campo de datos, el número de columnas o el tamaño del archivo" , no creo que sea la base de datos a gran escala del futuro.

Como Joel dice, bases de datos masivamente escalables como BigTable o HBase , son mucho más interesante. GQL es el lenguaje de consulta asociado con BigTable y App Engine. Es en gran parte SQL ajustado para evitar las características que Google considera cuellos de botella (como se une). Sin embargo, no he escuchado esto referido como "NoSQL" antes.

 4
Author: Matthew Flaschen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-17 21:57:18

NoSQL es un sistema de base de datos que no utiliza consultas SQL basadas en cadenas para obtener datos.

En su lugar, se crean consultas utilizando una API que proporcionarán, por ejemplo, Amazon DynamoDB es un buen ejemplo de una base de datos NoSQL.

Las bases de datos NoSQL son mejores para aplicaciones grandes donde la escalabilidad es importante.

 3
Author: David Xu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-30 10:27:24

¿NoSQL significa base de datos no relacional?

Sí, NoSQL es diferente de RDBMS y OLAP. Utiliza modelos de consistencia más flexibles que las bases de datos relacionales tradicionales.

Los modelos de consistencia se utilizan en sistemas distribuidos como sistemas de memoria compartida distribuida o almacenes de datos distribuidos.

Cómo funciona internamente?

Los sistemas de bases de datos NoSQL a menudo están altamente optimizados para las operaciones de recuperación y adición y a menudo ofrecen poco funcionalidad más allá del almacenamiento de registros (por ejemplo, almacenes de clave-valor). La flexibilidad de tiempo de ejecución reducida en comparación con los sistemas SQL completos se compensa con ganancias marcadas en escalabilidad y rendimiento para ciertos modelos de datos.

Puede trabajar con Datos Estructurados y No Estructurados. Utiliza colecciones en lugar de Tablas

¿Cómo se consulta dicha "base de datos"?

Watch SQL vs NoSQL: Batalla de los Backends; lo explica todo.

 0
Author: Arun C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-25 16:12:47