2011-10-28 21 views
5

La última moda en las bases de datos parece estar centrada en bases de datos no relacionales. ¿Por qué? Parece algo contraproducente. Por ejemplo, se hace mucho más sentido para mí expresar mis datos de una manera relacional (código de ejemplo en Django + SQL para las tablas):¿Por qué querría usar una base de datos no relacional?

SQL:

create table post (id int primary key auto_increment, 
     name varchar, 
     created datetime); 

create table comment(id int primary key auto_increment, 
     text text, 
     post_id int, 
     created datetime, 
     foreign key post_id references post(id)); 

El poder de SQL se que esta información se puede expresar en así que de muchas maneras. Claro, existe todo el problema de mapeo relacional de objetos, pero lo veo como una característica y no como un problema. Con SQL, puedo buscar todos los comentarios distintos de una publicación determinada que son anteriores a ayer, cotejarlos todos y generar estadísticas. ¿Se puede hacer lo mismo con las bases de datos no relacionales?

También parece afectar realmente el rendimiento al usar una base de datos no relacional como MongoDB porque inmediatamente tomaría un gráfico completo de objetos, en lugar de lo que usted mínimamente necesita.

¿Puede alguien explicarme cuáles son los beneficios de utilizar una base de datos no relacional?

+0

http://stackoverflow.com/questions/441441/why-should-i-use-based-based-database-instead-of-relational-database – hplbsh

Respuesta

5

Tome un vistazo a la CAP Theorem

Y los PACELC interpretation

Bases de datos relacionales tienden a hacer una serie de ventajas y desventajas, y no relacionales tienden a hacer un conjunto diferente de las compensaciones. Para conjuntos de datos distribuidos masivos, no relacional a veces tiene más sentido.

También existe un sentido en el que las bases de datos no relacionales pueden eliminar gran parte del dolor de ORM, pero nuevamente siempre hay compensaciones. En algunos casos de uso, el almacenamiento no relacional puede ser más rápido, porque todos los datos para una jerarquía particular pueden almacenarse más cerca en el disco. También tenga en cuenta que las bases de datos no relacionales todavía tienen capacidades de consulta.

Al final, se trata de hacer el conjunto adecuado de compensaciones para su caso de uso particular.

Cuestiones relacionadas