NoSql vs base de datos relacional

Respuestas:

123

No todos los datos son relacionales. Para esas situaciones, NoSQL puede ser útil.

Dicho esto, NoSQL significa "No solo SQL". No está destinado a eliminar SQL o suplantarlo.

SQL tiene varias ventajas muy grandes:

  1. Fuerte base matemática.
  2. Sintaxis declarativa.
  3. Un lenguaje bien conocido en el lenguaje de consulta estructurado (SQL).

Esos no se han ido.

Es un error pensar en esto como un argumento o uno u otro. NoSQL es una alternativa que las personas deben considerar cuando encaja, eso es todo.

Los documentos pueden almacenarse en bases de datos no relacionales, como CouchDB.

Quizás leer esto ayude.

duffymo
fuente
10
¿Podría dar algunos ejemplos de datos no relacionales?
user496949
77
¿Se pueden almacenar documentos e imágenes dentro de RDBMS también como SQL Server y Oracle? Entonces, ¿por qué NoSQL?
user496949
2
Los datos semiestructurados son una de esas clases. Contiene XML, correos electrónicos, JSON, etc. Consulte la página de Wikipedia en él. La regla general es que la estructura está ahí, pero está poco definida y es extensible dinámicamente (estas últimas tienden a clasificarse con el modelo relacional, y aunque no es imposible modelar, definitivamente es engorroso). Otra clase es "datos naturales": una novela, una imagen, ambas sin metadatos adjuntos.
DOY RESPUESTAS DE MIERDA
2
Bueno, no puedes hacer SELECT blob FROM images WHERE blob CONTAINS('red car'). Entonces, si bien puede almacenar los datos sin procesar en la base de datos, no puede buscarlos sin adjuntar metadatos. Los módulos de búsqueda de texto completo en los sistemas RDBMS cierran parte de la brecha semi-estructural.
DOY RESPUESTAS
1
@duffymo: los documentos no son "no relacionales". Los documentos a menudo se almacenan en SQL DBMS y no necesita un DBMS NOSQL para eso. De hecho, las bases de datos NOSQL a menudo usan modelos de datos que son menos generales y más limitados en su aplicación que el modelo relacional. Por ejemplo, bases de datos gráficas. El tipo de datos que se almacenan no explica ninguna ventaja de NOSQL.
nvogel
98

La historia parece ser así:

  1. Google necesita una capa de almacenamiento para su índice de búsqueda invertido. Calculan que un RDBMS tradicional no lo va a cortar. Entonces implementan un almacén de datos NoSQL, BigTable en la parte superior de su sistema de archivos GFS. La parte principal es que miles de máquinas de hardware de productos básicos baratos proporcionan la velocidad y la redundancia.

  2. Todos los demás se dan cuenta de lo que Google acaba de hacer.

  3. El teorema de Brewers CAP está probado. Todos los sistemas de uso RDBMS son sistemas CA. La gente también comienza a jugar con los sistemas CP y AP. Las tiendas K / V son mucho más simples, por lo que son el vehículo principal para la investigación.

  4. Los sistemas de software como servicio en general no proporcionan una tienda similar a SQL. Por lo tanto, las personas se interesan más en las tiendas de tipo NoSQL.

Creo que gran parte del despegue puede estar relacionado con esta historia. Scaling Google tomó algunas ideas nuevas en Google y todos los demás siguen su ejemplo porque esta es la única solución que conocen para el problema de escalado en este momento. Por lo tanto, está dispuesto a modificar todo lo relacionado con la idea de base de datos distribuida de Google porque es la única forma de escalar más allá de un cierto tamaño.

C - Consistencia
A - Disponibilidad
P - Tolerancia de partición
K / V - Clave / Valor

DOY RESPUESTAS
fuente
10
¿Qué es CAP, CP, AP, K / V?
knownasilya
3
Busque el teorema de CAP en Wikipedia. CA y CP proviene de allí. K / V es la abreviatura de Key / Value, un mapeo finito (distribuido) de claves a valores.
DOY RESPUESTAS DE MIERDA
" Todos los demás se dan cuenta de lo que Google acaba de hacer ". Parece una respuesta escocesa para mí (también conocido como NO MIERDA).
ruffin
38

NoSQL es mejor que RDBMS debido a las siguientes razones / propiedades de NoSQL

  1. Admite datos semiestructurados y datos volátiles.
  2. No tiene esquema
  3. El rendimiento de lectura / escritura es muy alto
  4. La escalabilidad horizontal se puede lograr fácilmente
  5. Admitirá Bigdata en volúmenes de Terra Bytes y Peta Bytes
  6. Proporciona un buen soporte para herramientas analíticas además de Bigdata
  7. Se puede alojar en máquinas de hardware más baratas
  8. La opción de almacenamiento en memoria caché está disponible para aumentar el rendimiento de las consultas.
  9. Ciclos de vida de desarrollo más rápidos para desarrolladores

EDITAR:

Para responder "por qué RDBMS no puede escalar", eche un vistazo al PDF de gastos generales de RDBMS escrito por Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden y Michael Stonebraker

Los RDBMS tienen desafíos para manejar grandes volúmenes de datos de bytes Terabytes y Peta . Incluso si tiene una matriz redundante de discos independientes / económicos (RAID) y trituración de datos, no escala bien para un gran volumen de datos. Requiere hardware muy costoso.

Registro : reunir registros de registro y rastrear todos los cambios en las estructuras de la base de datos reduce el rendimiento. El registro puede no ser necesario si la capacidad de recuperación no es un requisito o si la capacidad de recuperación se proporciona a través de otros medios (por ejemplo, otros sitios en la red).

Bloqueo : el bloqueo tradicional de dos fases plantea una sobrecarga considerable, ya que todos los accesos a las estructuras de la base de datos se rigen por una entidad separada, el Administrador de bloqueo.

Bloqueo : en una base de datos de subprocesos múltiples, muchas estructuras de datos deben bloquearse antes de poder acceder a ellas. Eliminar esta función e ir a un enfoque de subproceso único tiene un impacto notable en el rendimiento.

Gestión de búfer : un sistema de base de datos de memoria principal no necesita acceder a las páginas a través de un grupo de búferes, eliminando un nivel de indirección en cada acceso a registros.

Esto no significa que tengamos que usar NoSQL sobre SQL.

Aún así, RDBMS es mejor que NoSQL por las siguientes razones / propiedades de RDBMS

  1. Transacciones con propiedades ACID : atomicidad, consistencia, aislamiento y durabilidad
  2. Adherencia al esquema fuerte de datos que se escriben / leen
  3. Gestión de consultas en tiempo real (en caso de tamaño de datos <10 Tera bytes)
  4. Ejecución de consultas complejas que involucran unirse y agrupar por cláusulas

Tenemos que usar RDBMS (SQL) y NoSQL (no solo SQL) dependiendo del caso de negocio y los requisitos

Ravindra babu
fuente
2
Vale la pena señalar que algunas bases de datos NoSQL admiten transacciones ACID.
Dave Cassel
15

NOSQL no tiene ventajas especiales sobre el modelo de base de datos relacional. NOSQL aborda ciertas limitaciones de los DBMS SQL actuales, pero no implica ninguna capacidad fundamentalmente nueva sobre los modelos de datos anteriores.

NOSQL significa solo no SQL (o "no solo SQL"), pero eso no significa lo mismo que no relacional . Una base de datos relacional en principio sería una muy buena solución NOSQL, es solo que ninguno de los productos actuales de NOSQL usa el modelo relacional.

nvogel
fuente
44
Parece que en la reciente Conferencia de estratos de O'Reilly, Mark Madsen ha acuñado una nueva interpretación de "NoSQL" en su historia de bases de datos en la noción para reemplazar "No solo SQL". Ahora es: "No, SQL" ;-)
Lukas Eder
4

RDBMS se enfoca más en la relación y NoSQL se enfoca más en el almacenamiento.

Puede considerar usar NoSQL cuando su RDBMS alcance cuellos de botella. NoSQL hace que RDBMS sea más flexible.

suiwenfeng
fuente
4

La mayor ventaja de NoSQL sobre RDBMS es la escalabilidad .
Las bases de datos NoSQL pueden escalar fácilmente a muchos nodos, pero para RDBMS es muy difícil.
La escalabilidad no solo le brinda más espacio de almacenamiento, sino también un rendimiento mucho mayor, ya que muchos hosts funcionan al mismo tiempo.

Jon
fuente
3

Si necesita procesar una gran cantidad de datos con alto rendimiento

O

Si el modelo de datos no está predeterminado

luego

La base de datos NoSQL es una mejor opción.

Chris
fuente
2

Simplemente agregue a toda la información dada arriba

Ventajas de NoSql:

1) NoSQL es bueno si desea estar listo para la producción rápidamente debido a su soporte para arquitectura sin esquema y orientada a objetos.

2) NoSql db's son eventualmente consistentes, lo que en un lenguaje simple significa que no proporcionarán ningún bloqueo en los datos (documentos) como en el caso de RDBMS y lo que significa que la última instantánea de datos siempre está disponible y, por lo tanto, aumenta la latencia de su aplicación .

3) Utiliza la estrategia MVCC (control de concurrencia de vista múltiple) para mantener y crear instantáneas de datos (documentos).

4) Si desea tener datos indexados, puede crear una vista que indexará automáticamente los datos según la definición de vista que proporcione.

Desventajas de NoSql:

1) Definitivamente no es adecuado para aplicaciones transaccionales grandes y pesadas, ya que eventualmente es consistente y no admite propiedades ACID.

2) También crea múltiples instantáneas (revisiones) de sus datos (documentos) ya que utiliza la metodología MVCC para el control de concurrencia, como resultado de que el espacio se consume más rápido que antes, lo que hace que la compactación y la reindexación sean más frecuentes y disminuirá la velocidad de su respuesta de la aplicación a medida que crecen los datos y la transacción en su aplicación. Para contrarrestar eso, puede escalar horizontalmente los nodos pero, de nuevo, será un costo mayor en comparación con la base de datos SQL.

Manvendra Jina
fuente
1

De mongodb.com :

Las bases de datos NoSQL difieren de la tecnología relacional más antigua en cuatro áreas principales:

Modelos de datos : una base de datos NoSQL le permite crear una aplicación sin tener que definir primero el esquema, a diferencia de las bases de datos relacionales que lo hacen definir su esquema antes de que pueda agregar datos al sistema. Ningún esquema predefinido hace que las bases de datos NoSQL sean mucho más fáciles de actualizar a medida que cambian sus datos y requisitos.

Estructura de datos : las bases de datos relacionales se construyeron en una era en la que los datos estaban bastante estructurados y claramente definidos por sus relaciones. Las bases de datos NoSQL están diseñadas para manejar datos no estructurados (p. Ej., Textos, publicaciones en redes sociales, video, correo electrónico) que constituyen gran parte de los datos que existen en la actualidad.

Escalado : es mucho más barato escalar una base de datos NoSQL que una base de datos relacional porque puede agregar capacidad escalando a través de servidores baratos y básicos. Las bases de datos relacionales, por otro lado, requieren un único servidor para alojar toda su base de datos. Para escalar, debe comprar un servidor más grande y más caro.

Modelo de desarrollo : las bases de datos NoSQL son de código abierto, mientras que las bases de datos relacionales suelen ser de código cerrado con tarifas de licencia incluidas en el uso de su software. Con NoSQL, puede comenzar un proyecto sin grandes inversiones por adelantado en tarifas de software.

Consorcio inactivo
fuente