Pregunta

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

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

Los términos laicos son preferibles.

Gracias.

¿Fue útil?

Solución

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

Las muchas formas de NoSQL (por ejemplo, la tienda basada en documentos, basada en gráficos, basada en objetos, clave de valor clave, etc.) pueden o no basarse en una sola teoría matemática de apuntalamiento. Como S. Lott ha señalado correctamente, jerárquico Las tiendas de datos tienen una base matemática. Lo mismo podría decirse de bases de datos de gráficos.

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

Otros consejos

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

En el título que pregunta sobre las bases de datos (DB), mientras que en el cuerpo de su 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 esos datos.

Por lo tanto, al igual que puede programar con una metodología de objetos orientados con un compilador no funcionado, o viceversa, 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 la base de datos relacional (RDB) y dejaré la discusión sobre lo que los sistemas hacen a los demás.

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

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

En cuanto a la implementación de dicho esquema, si tiene un archivo de papel con un índice y en un archivo de papel diferente, se refiere al índice para obtener la información relevante, entonces ha implementado una base de datos relacional, aunque bastante simple. Entonces, verá que ni siquiera necesita una computadora (por supuesto, puede volverse tedioso muy rápidamente sin uno para ayudar), de manera similar no necesita un RDBMS, aunque posiblemente una RDBMS es la herramienta adecuada para el trabajo. Dicho esto, hay variaciones sobre lo que las diferentes herramientas pueden hacer para que elegir la herramienta adecuada para el trabajo puede no ser tan directa.

Espero que estos sean suficientes términos laicos y que sea útil para su comprensión.

La mayor parte de lo que "sabes" está mal.

En primer lugar, como algunos de los gurús relacionales de manera rutinaria (y a veces con fuerza) señalan, SQL realmente no encaja tan estrechamente con la teoría relacional como muchas personas piensan. En segundo lugar, la mayoría de las diferencias en las cosas "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 ambas cosas Representa una amplia gama de posibilidades.

La única diferencia principal con la que puede contar es que casi cualquier cosa que admita SQL admite cosas como desencadenantes en la base de datos en sí, es decir, puede diseñar reglas en la base de datos propiamente dicha que tiene la intención de garantizar que los datos siempre sean internamente consistentes. Por ejemplo, puede configurar las cosas para que su base de datos afirme que una persona deber tener una dirección. Si lo hace, cada vez que agrega una persona, básicamente lo obligará a asociar a esa persona con alguna dirección. Puede agregar una nueva dirección o puede asociarlos con alguna dirección existente, pero de una forma u otra, la persona debe tener una dirección. Del mismo modo, si elimina una dirección, le obligará a eliminar a todas las personas actualmente en esa dirección o asociar a cada una con alguna otra dirección. Puede hacer lo mismo para otras relaciones, como decir que cada persona debe tener una madre, cada oficina debe tener un número de teléfono, etc.

Tenga en cuenta que este tipo de cosas también se garantiza que ocurrirán atómicamente, por lo que si alguien más mira la base de datos mientras agrega a la persona, no verán a la persona en absoluto, o 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 Intente 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, para hacer cumplir las relaciones necesarias para sus datos. En la mayoría de los casos, también es posible ver datos que solo sean parcialmente correctos, por lo que incluso si tiene un árbol genealógico donde se supone que cada persona está asociada con los padres, puede haber momentos en que cualquier restricción que haya impuesto realmente no se forzado. Algunos te dejarán hacer eso a voluntad. Otros garantizan que solo ocurre temporalmente, aunque exactamente cuánto tiempo puede/durará puede estar abierto a preguntas.

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

Dado que obviamente somos la generación que ha tenido una educación relacional, si observa los modelos de base de datos NoSQL desde la perspectiva del modelo relacional, nuevamente en los términos de Layman, la primera diferencia obvia es que no hay suposiciones sobre el número de valores una fila. contener se hace 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 más grande Salto que tenemos que hacer.

Podemos aceptar dos cosas que son ciertas para cada DBMS: puede almacenar cualquier tipo de datos y tiene suficientes bases matemáticas para que sea posible administrar los datos de cualquier manera imaginable. La realidad es que nunca querrás cometer el error de poner a la prueba ninguno de los dos puntos, sino que solo te quedas con lo que realmente estaba hecho los DBMS. En términos de laicos: ¡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 general para ningún DBM que no sea completamente Suponga que el modelo relacional, en exclusión a todo lo demás. Las diferencias son demasiadas, pero esa es la diferencia principal y la que creo que más le sería más útil para comprender los dos).

Trate de explicar esta pregunta en un nivel que se refiere 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 relación tradicional SQL, puede almacenar los tweets e imágenes en tablas separadas y representar la conexión a través de la construcción de una nueva tabla.

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

Usando MongoDB, puede construir 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 es cómo almacena los datos y el nivel de almacenamiento de las relaciones entre ellos.

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

Espero que este pequeño ejemplo ayude a mostrar la diferencia entre SQL y NoSQL (ácido y base).

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

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

La diferencia entre relacional y no relacional es exactamente eso. La arquitectura de base de datos relacional proporciona objetos de restricciones como claves primarias, claves extrañas, etc. que le permite a uno vincular dos o más tablas en una relación. Esto es bueno para que normalicemos nuestras tablas, que es decir información dividida sobre lo que la base de datos representa en muchas tablas diferentes, una vez que puedan mantener la integridad de los datos.

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

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

En términos laicos, está fuertemente estructurado frente a no estructurado, lo que implica que tiene diferentes grados de adaptabilidad para su DB. Las diferencias surgen en la indexación, particularmente, ya que debe asegurarse de que un cierto índice de referencia pueda vincular a otro elemento -> Esta es una relación. La estructura más estricta de la DB relacional proviene de este requisito.

Para tener en cuenta que nosdb proporciona a tanto DBS relacional como no relacional y una forma de consultar ambos http://www.alachisoft.com/nosdb/sql-heatheet.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top