Pregunta ¿Cuál es la diferencia entre una base de datos relacional y no relacional?


Sé que soluciones como MySQL, PostgreSQL y MS SQL Server son sistemas de bases de datos relacionales, y NoSQL, MongoDB, etc. son DBMS no relacionales.

Sin embargo, ¿cuáles son las diferencias entre los dos tipos de sistema?

Los términos Layman son preferibles.

Gracias.


74
2018-01-27 00:21


origen


Respuestas:


Las bases de datos relacionales tienen una base matemática (teoría de conjuntos, teoría relacional), que se destilan en SQL == Lenguaje de consulta estructurado.

Las muchas formas de NoSQL (por ejemplo, basadas en documentos, basadas en gráficos, basadas en objetos, almacenamiento de valores-clave, etc.) pueden estar o no basadas en una única teoría matemática subyacente. Como S. Lott ha señalado correctamente, jerárquico los almacenes de datos sí tienen una base matemática. Lo mismo podría decirse de bases de datos gráficos.

No conozco un lenguaje de consulta universal para las bases de datos NoSQL.


21
2018-01-27 00:29



Hmm, no estoy seguro de cuál es tu pregunta.

En el título pregunta sobre Bases de datos (DB), mientras que en el cuerpo del texto pregunta sobre los Sistemas de gestión de bases de datos (DBMS). Los dos son completamente diferentes y requieren respuestas diferentes.

Un DBMS es una herramienta que le permite acceder a un DB.

Además de los datos en sí, un DB es el concepto de cómo se estructuran los datos.

Así como puede programar con la metodología de Objetos Orientados con un compilador no OO, o viceversa, también puede configurar una base de datos relacional sin un RDBMS o usar un RDBMS para almacenar datos no relacionales.

Me centraré en lo que significa Base de datos relacional (RDB) y dejaré la discusión sobre lo que los sistemas le hacen a los demás.

Una base de datos relacional (el concepto) es una estructura de datos que le permite vincular información de diferentes 'tablas' o diferentes tipos de depósitos de datos. Un contenedor de datos debe contener lo que se llama una clave o índice (que permite identificar de manera única cualquier fragmento atómico de datos dentro del contenedor). Otros depósitos de datos pueden referirse a esa clave para crear un enlace entre sus átomos de datos y el átomo al que apunta la clave.

Una base de datos no relacional simplemente almacena datos sin mecanismos explícitos y estructurados para vincular datos de diferentes segmentos entre sí.

En cuanto a la implementación de dicho esquema, si tiene un archivo en papel con un índice y en un archivo en papel diferente, consulte el índice para obtener la información relevante, luego habrá implementado una base de datos relacional, aunque bastante simple. Entonces puede ver que ni siquiera necesita una computadora (por supuesto, puede ser tedioso muy rápidamente sin que haya alguien que la ayude), del mismo modo no necesita un RDBMS, aunque podría decirse que un RDBMS es la herramienta adecuada para el trabajo. Eso dice que hay variaciones en cuanto a lo que pueden hacer las diferentes herramientas por lo que elegir la herramienta adecuada para el trabajo puede no ser tan sencillo.

Espero que esto sea términos simples y sea útil para su comprensión.


40
2018-01-27 01:12



La mayor parte de lo que "sabes" es incorrecto.

En primer lugar, como señalan algunos de los gurús relacionales de forma rutinaria (y algunas veces estridente), SQL realmente no se ajusta tan estrechamente a la teoría relacional como mucha gente piensa. Segundo, la mayoría de las diferencias en "NoSQL" tienen relativamente poco que ver con si es relacional o no. Finalmente, es bastante difícil decir cómo "NoSQL" difiere de SQL porque ambos representan una amplia gama de posibilidades.

La principal diferencia con la que puede contar es que casi todo lo que admite SQL admite elementos como desencadenantes en la base de datos, es decir, puede diseñar reglas en la base de datos adecuadas para garantizar que los datos sean siempre consistentes internamente. Por ejemplo, puede configurar las cosas para que su base de datos afirme que una persona debe tener una dirección Si lo hace, cada vez que agregue una persona, básicamente lo forzará a asociar a esa persona con alguna dirección. Puede agregar una nueva dirección o puede asociarla con alguna dirección existente, pero de una manera u otra, la persona debe tener una dirección. Del mismo modo, si elimina una dirección, lo obligará a eliminar a todas las personas actualmente en esa dirección, o asociar cada una con otra dirección. Puede hacer lo mismo con otras relaciones, como decir que todas las personas deben tener madre, que cada oficina debe tener un número de teléfono, etc.

Tenga en cuenta que este tipo de cosas también se garantiza que sucedan atómicamente, por lo que si alguien más mira la base de datos al agregarla, o bien no verán a la persona en absoluto, de lo contrario, verán a la persona con la dirección (o la madre, etc.)

La mayoría de las bases de datos NoSQL lo hacen no intentar proporcionar este tipo de aplicación en la base de datos propiamente dicha. Depende de usted, en el código que usa la base de datos, hacer cumplir las relaciones necesarias para sus datos. En la mayoría de los casos, también es posible ver datos parcialmente correctos, por lo que incluso si tiene un árbol genealógico donde se supone que cada persona debe estar asociada con sus padres, puede haber ocasiones en que las restricciones impuestas no serán en realidad forzado. Algunos te permitirán hacer eso a voluntad. Otros garantizan que solo sucede temporalmente, aunque puede cuestionarse exactamente cuánto tiempo puede / durará.


17
2018-01-27 00:53



La base de datos relacional usa un sistema formal de predicados para abordar los datos. La implementación física subyacente no es importante y puede variar para optimizar ciertas operaciones, pero siempre debe suponerse modelo relacional. En términos simples, eso es solo decir Sé exactamente cuántos valores (atributos) tiene cada fila (tupla) en mi tabla (relación) y ahora quiero explotar el hecho en consecuencia, a fondo y hasta el extremo. Eso es cierto naturaleza de la bestia.

Dado que obviamente somos la generación que ha tenido una educación relacional, si nos fijamos en los modelos de bases de datos NoSQL desde la perspectiva del modelo relacional, nuevamente en términos sencillos, la primera diferencia obvia es que no hay suposiciones sobre el número de valores que una fila puede contener es hecho alguna vez. Esto realmente simplifica demasiado el asunto y no se aplica limpiamente a las complejidades de los modelos físicos de cada base de datos NoSQL, pero es el pináculo del modelo relacional y la primera suposición que tenemos que dejar atrás o, si lo prefiere, el mayor salto que tenemos que hacer.

Podemos aceptar dos cosas que son verdaderas para cada DBMS: puede almacenar cualquier clase de datos y tiene suficientes fundamentos matemáticos para que sea posible administrar los datos de cualquier manera imaginable. La realidad es que nunca querrá cometer el error de poner a prueba ninguno de los dos puntos, sino más bien quedarse con lo que el DBMS real realmente fue creado. En términos simples: respeta a la bestia dentro!

(Tenga en cuenta que he evitado comparar los estándares (obviamente) bien fundados que giran en torno al modelo relacional con los muchos sabores proporcionados por las bases de datos NoSQL. Si lo desea, considere las bases de datos NoSQL como un término paraguas para cualquier DBMS que no asuma el modelo relacional, en exclusión de todo lo demás. Las diferencias son demasiadas, pero esa es la diferencia principal y la que creo que le resultaría más útil para comprender las dos).


9
2018-01-27 02:30



Intenta explicar esta pregunta en un nivel que se refiera a un poco de tecnología

Tome MongoDB y SQL tradicional para comparar, imagine el escenario de publicar un Tweet en Twitter. Este tweet contiene 9 imágenes. ¿Cómo se almacena este tweet y sus imágenes correspondientes?

En términos de SQL de relación tradicional, puede almacenar los tweets y las imágenes en tablas separadas y representar la conexión mediante la creación de una nueva tabla.

Además, puede establecer un campo que sea un tipo de imagen y comprimir las 9 imágenes en un documento binario y almacenarlo en este campo.

Usando MongoDB, podría compilar un documento como este (similar al concepto de una tabla en SQL relacional):

{

"id":"XXX",

"user":"XXX",

"date":"xxxx-xx-xx",

"content":{

"text":"XXXX",

"picture":["p1.png","p2.png","p3.png"]

}

Por lo tanto, en mi opinión, la principal diferencia radica en cómo se almacenan los datos y el nivel de almacenamiento de las relaciones entre ellos.

En este ejemplo, los datos son el tweet y las imágenes. Los diferentes mecanismos sobre el nivel de almacenamiento de la relación entre ellos también juegan un papel importante en la diferencia entre ambos.

Espero que este pequeño ejemplo ayude a mostrar la diferencia entre SQL y NoSQL (ACID y BASE).

Aquí hay un enlace de la imagen sobre los objetivos de NoSQL de Internet:

http://icamchuwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/dbc795f6f262e9d01fa0ab9b323b2dd1_b.png


5
2018-01-25 04:16



La diferencia entre relacional y no relacional es exactamente eso. La arquitectura de base de datos relacional proporciona objetos de restricciones tales como claves principales, claves externas, etc. que permiten vincular dos o más tablas en una relación. Esto es bueno para que podamos normalizar nuestras tablas, es decir, dividir la información sobre lo que representa la base de datos en muchas tablas diferentes, una vez que se puede mantener la integridad de los datos.

Por ejemplo, supongamos que tiene una serie de tablas que contienen información sobre un empleado. No podría eliminar un registro de una tabla sin eliminar todos los registros que pertenecen a dicho registro de las otras tablas. De esta forma, implementa la integridad de los datos. La base de datos no relacional no proporciona estas construcciones de restricciones que le permitirán implementar integridad de datos.

A menos que no implemente esta restricción en la aplicación de front-end que se utiliza para llenar las tablas de las bases de datos, está implementando un desastre que se puede comparar con el salvaje oeste.


3
2018-03-04 21:27



Buena implementación de bases de datos relacionales = Búnkeres atómicos
Buena implementación de bases de datos no relacionales = Wild Wild West

En caso de un desastre fatal (errores / errores) ¿dónde estarías más seguro? Si mi vida dependiera de los datos almacenados en una base de datos, elegiría claramente la base de datos relacional.

No encuentro ningún valor en la perversidad, me refiero a cuál es el punto de reinventar una rueda que ya es redonda y su rotación es a prueba de balas. También felicidades a @Jerry Coffin por su respuesta.


-1
2018-01-04 20:08