NoSQL significa "No solo SQL" y generalmente significa que la base de datos no es una base de datos relacional, que ha sido muy popular en las últimas décadas.
La razón por la que NoSQL ha sido tan popular en los últimos años es principalmente porque, cuando una base de datos relacional crece de un servidor, ya no es tan fácil de usar. En otras palabras, no se escalan muy bien en un sistema distribuido. Todos los sitios grandes que mencionó Google, Yahoo, Facebook y Amazon (no sé mucho sobre Digg) tienen muchos datos y almacenan los datos en sistemas distribuidos por varias razones. Puede ser que los datos no quepan en un servidor o que existan requisitos para una alta disponibilidad .
Teorema de la PAC
El teorema de CAP puede describir las propiedades de un sistema distribuido . De las tres propiedades solo puede tener como máximo dos:
- C OHERENCIA
- A DISPONIBILIDAD
- tolerancia a la red P articulación
Amazon Dynamo utiliza la coherencia eventual para acercarse y obtener las tres propiedades. Vale la pena leer el documento Dynamo: la tienda de valor-clave altamente disponible de Amazon al aprender sobre bases de datos NoSQL y sistemas distribuidos. Amazon Dynamo tiene las propiedades A y P.
Google adopta un enfoque diferente con BigTable , que tiene las propiedades C y A.
Otras bases de datos NoSQL
Como escribí al principio, hay muchos otros tipos de bases de datos NoSQL, que están diseñadas para diferentes requisitos. Por ejemplo, bases de datos de gráficos como Neo4j , bases de datos de documentos como CouchDB y bases de datos multimodelo / objeto como OrientDB .
Finalmente, me gustaría decir que las bases de datos relacionales seguirán siendo populares. Son muy flexibles y mantenibles. Pero no siempre son la mejor opción.
NoSQL es un término muy amplio y generalmente se conoce como "No solo SQL". El término está cayendo en desgracia en la comunidad no RDBMS.
Encontrará que la base de datos NoSQL tiene pocas características comunes. Se pueden dividir aproximadamente en algunas categorías:
Esta es una gran pregunta, pero está bastante bien respondida en esta Encuesta de bases de datos distribuidas .
Para una respuesta corta:
Las bases de datos NoSQL pueden prescindir de varias partes de ACID para lograr ciertos otros beneficios: tolerancia de partición, rendimiento, distribución de carga o escala lineal con la adición de nuevo hardware.
En cuanto a cuándo usarlos, eso depende completamente de las necesidades de su aplicación.
fuente
NoSQL es un tipo de base de datos que no tiene un esquema fijo como lo hace un RDBMS tradicional. Con las bases de datos NoSQL, el desarrollador define el esquema en tiempo de ejecución. No escriben sentencias SQL normales en la base de datos, sino que usan una API para obtener los datos que necesitan. Las bases de datos NoSQL generalmente pueden escalar fácilmente a través de diferentes servidores físicos sin necesidad de saber en qué servidor están los datos que está buscando.
Sin embargo, hay algunas compensaciones por toda esta flexibilidad: las bases de datos NoSQL carecen de características en comparación con los sistemas RDBMS como SQL Server, Oracle, DB2, MySQL, etc. No hay Service Broker, registro de transacciones, paquetes ETL, etc.
NoSQL no es algo nuevo. En realidad ha existido durante 50-60 años. En aquel entonces se llamaba COBOL. La misma idea exacta, solo un grupo diferente se le ocurrió.
fuente
Básicamente, prescindir de la configuración relacional, con claves primarias y externas, y con la sobrecarga adicional involucrada en mantener la seguridad de las transacciones, a menudo le brinda incrementos extremos en el rendimiento. Sin embargo, esto no es exclusivo de las nuevas bases de datos / almacenes de datos, ya que, por ejemplo, MySQL se ha ajustado para funcionar en "niveles NoSQL" al pasar por alto las capas.
En resumen, a menudo puede obtener un rendimiento impresionante si está de acuerdo con el riesgo de perder datos. La mayoría de los sistemas NoSQL hacen esto. Por ejemplo, MongoDB realiza cambios de datos para que se escriban cuando sea conveniente. Los datos en sí son seguros y transaccionalmente seguros, pero se mantienen en un almacenamiento volátil (memoria). Si pierde energía, no puede estar 100% seguro de que no ha perdido datos o de que no tiene datos corruptos.
Es una compensación entre seguridad y rendimiento.
fuente
Un buen lugar para comenzar es la entrada de Wikipedia . Esencialmente, en lugar de relacionar datos en una tabla con otra, almacena cosas como pares de valores clave y no hay un esquema de base de datos, sino que se maneja en código.
Algunos sitios usan NoSQL y los servidores RDBMS típicos al mismo tiempo, pero para almacenar datos diferentes. Por lo tanto, no tiene que elegir uno u otro.
fuente
He trabajado mucho en la base de datos MongoDB NoSQL y Oracle.
Esquema
La base de datos SQL tiene su propio esquema predefinido para almacenar datos estructurados.
En la base de datos NoSQL, no hay un esquema predefinido, aquí el esquema es el elemento más dinámico basado en los elementos de datos.
Escalabilidad
Las bases de datos SQL son escalables verticalmente, lo que significa que si queremos escalar la base de datos base de SQL, necesitamos dar un impulso de hardware en el que está instalado el sistema DBMS. Aquí es donde a veces va la limitación de la escalabilidad.
Las bases de datos NoSQL son escalables horizontalmente, lo que significa que si queremos escalarlo, necesitamos agregar más nodos y crear una red de distribución basada en nuestra propia necesidad y potencia requerida. Así es como reducen la carga en la base de datos
Recuperación de datos
En las bases de datos basadas en SQL, para definir y manipular datos podemos usar SQL (lenguaje de consulta estructurado), que es muy poderoso hoy en día.
En términos de la base de datos NoSQL, las consultas se centran en la recopilación y los documentos. A veces se llama UnQL (lenguaje de consulta no estructurado). Esto todavía está en la fase de evolución, por lo que varía de un proveedor a otro de la base de datos NoSQL.
Para más información sobre las diferencias clave, mi blog: Diferencia entre SQL y la base de datos NoSQL
fuente