mongodb - tutorial - que es una base de datos no relacional
¿Las bases de datos orientadas a documentos están destinadas a reemplazar las bases de datos relacionales? (7)
Recientemente he estado trabajando un poco con MongoDB y tengo que decir que realmente me gusta. Sin embargo, es un tipo de base de datos completamente diferente, entonces estoy acostumbrado. Me he dado cuenta de que definitivamente es mejor para ciertos tipos de datos, sin embargo, para bases de datos muy normalizadas puede que no sea la mejor opción.
Sin embargo, me parece que puede ocupar el lugar de casi cualquier base de datos relacional que pueda tener y, en la mayoría de los casos, tener un mejor desempeño, lo que es sorprendente. Esto me lleva a hacer algunas preguntas:
- ¿Se están desarrollando bases de datos orientadas a documentos para ser la próxima generación de bases de datos y, básicamente, reemplazar completamente las bases de datos relacionales?
- ¿Es posible que los proyectos estén mejor utilizando una base de datos orientada a documentos y una base de datos relacional lado a lado para varios datos que sean más adecuados para uno u otro?
- Si las bases de datos orientadas a documentos no pretenden reemplazar las bases de datos relacionales, ¿alguien tiene un ejemplo de una estructura de base de datos que esté mejor en una base de datos relacional (o viceversa)?
¿Se han desarrollado bases de datos orientadas a documentos para ser la próxima generación de bases de datos y, básicamente, reemplazar completamente las bases de datos relacionales?
No. Las bases de datos orientadas a documentos (como MongoDB) son muy buenas para el tipo de tareas que normalmente vemos en los sitios web modernos (búsquedas rápidas de elementos individuales o pequeños conjuntos de elementos).
Pero hacen algunas grandes concesiones con los sistemas relacionales. Sin cosas como el cumplimiento de ACID, no podrán reemplazar ciertos RDBMS. Y si nos fijamos en sistemas como MongoDB, la falta de cumplimiento de ACID es una razón importante por la que es tan rápido.
¿Es posible que los proyectos estén mejor utilizando una base de datos orientada a documentos y una base de datos relacional lado a lado para varios datos que sean más adecuados para uno u otro?
Sí. De hecho, estoy ejecutando un sitio web de producción muy grande que utiliza ambos. El sistema se inició en MySQL, pero hemos migrado parte de él a MongoDB, b / c necesitamos un almacén de Key-Value y MySQL no es muy bueno para encontrar un elemento en un registro de 150M.
Si las bases de datos orientadas a documentos no están destinadas a reemplazar las bases de datos relacionales, ¿alguien tiene un ejemplo de una estructura de base de datos que sea absolutamente mejor en una base de datos relacional (o viceversa)?
Las bases de datos orientadas a documentos son excelentes para almacenar datos que se encuentran fácilmente en "clave-valor" y en relaciones simples y lineales "padre-hijo". Ejemplos simples aquí son cosas como Blogs y Wikis.
Sin embargo, las bases de datos relacionales aún tienen una base sólida en cosas como los informes, que tienden a estar "basados en conjuntos".
Honestamente, puedo ver un mundo donde la mayoría de los datos se "manejan" mediante la base de datos orientada a documentos, pero donde los informes se realizan en una base de datos relacional que se actualiza con los trabajos de reducción de mapa.
@Sohnee es perfecto. Podría añadir que las bases de datos relacionales
- son excelentes para recuperar información en combinaciones inesperadas, incluso si eso lleva ocasionalmente a la idea errónea de que los informes extensos se ejecutan en sistemas de producción sensibles al tiempo en lugar de en un almacén de datos separado.
- es una tecnología madura en la que puede encontrar personal y soluciones bien probadas para cualquier número de problemas (incluidas las limitaciones del modelo relacional, así como la implementación imperfecta de SQL).
Pregúntese qué quiere hacer y qué cualidades son importantes para usted. Puedes hacer todo lo relacionado con la programación en shell scripts. ¿Quieres?
AFAIK, las bases de datos de documentos no tienen ÚNETE. Eso es prácticamente un obstáculo para el 99% de las necesidades de gestión de datos.
Como señala Matthew Flaschen en los comentarios, incluso en el escritorio, las bases de datos como SQLite están introduciendo la semántica de SQL en áreas que tradicionalmente han usado formatos de archivos de propiedad o XML.
Esto es realmente una cuestión de aptitud para el propósito.
Si desea poder unir algunas tablas y devolver un conjunto filtrado de resultados, solo puede hacerlo con una base de datos relacional. Si desea un rendimiento alucinante y tiene volúmenes increíbles de datos, es entonces cuando las bases de datos de familia de columnas o orientadas a documentos se integran.
Esta es una compensación clásica. Las bases de datos relacionales le ofrecen un conjunto completo de características, que conlleva un costo de rendimiento. Si no pudo unirse, indexar, escanear o realizar otra lista de características, elimina la necesidad de tener una vista de TODOS los datos, lo que le brinda el rendimiento y la distribución que necesita para procesar datos serios.
Además, te recomiendo que sigas los blogs de Ayende Rahien sobre este tema.
Mientras no necesite transacciones de múltiples objetos, MongoDB puede ser un reemplazo favorable para un RDMBS, especialmente en el contexto de una aplicación web. La velocidad, la falta de esquemas y el modelado de documentos son útiles en este dominio.
Sigo haciendo la misma pregunta, que es lo que me trajo aquí. Utilizo tanto MySQL como MongoDB (actualmente no en tándem, aunque es una idea). Debo decir honestamente que estoy muy feliz de no volver a tocar MySQL. Claro que existe la conformidad con "ACID", pero ¿alguna vez te has encontrado con la necesidad de reparar tus tablas con MySQL? ¿Alguna vez has tenido una base de datos dañada? Sucede. ¿Alguna vez has tenido otros problemas con MySQL? ¿Alguna contención de cerraduras o cerraduras muertas? ¿Algún problema con la agrupación? ¿Qué tan fácil fue configurar y configurar?
MongoDB ... Lo enciendes y está listo ... Entonces es autocontenido. Es increíblemente simple y también increíblemente rápido. Así que piensa en eso. Su tiempo.
No, no tienen JOIN, pero es una declaración completamente incorrecta decir que descuenta más del 99% de las necesidades de administración de datos. A menudo me opongo cuando trato de explicar MongoDB, incluso la gente se burla. Solo enfrentémoslo. Las personas no quieren aprender cosas nuevas y piensan que lo que saben es todo lo que necesitan. Claro, puedes escapar usando MySQL el resto de tu vida y construir tus sitios web. Funciona, sabemos que funciona. También sabemos que falla. Si no fuera así, nunca haría la pregunta y probablemente no veríamos tantas bases de datos orientadas a documentos. Sabemos que sí lo hace, pero es un dolor en la parte trasera para escalarlo.
También eliminemos el tráfico y la escala de la imagen. Sacar la configuración Ahora vamos a centrarnos en el uso. ¿Cuál es tu experiencia al usar MySQL? ¿Qué tan bueno eres con la arquitectura MySQL y haciendo consultas eficientes? ¿Cuánto tiempo pasa mirando las consultas con EXPLAIN? ¿Cuánto tiempo dedicas a hacer diagramas de esquemas? ... Yo digo que te devuelvas ese tiempo. Es mejor gastarlo en otro lugar.
Esos son mis dos centavos. Realmente me encanta MongoDB y espero nunca volver a usar MySQL y para el tipo de sitios web que construyo, es muy posible que no lo necesite. Aunque todavía estoy intentando averiguar CUÁNDO quisiera usar MySQL sobre MongoDB, no cuando PUEDO (admitámoslo, almacena datos, felicitaciones, también podría escribir muchos archivos XML, pero no es una buena idea) , pero cuando sería BENEFICIADO usar uno u otro. Mientras tanto, haré mi trabajo con MongoDB y tendré menos dolores de cabeza.
En mi opinión, las bases de datos orientadas a documentos solo son buenas para
- Bases de datos cuyos datos se representan mejor utilizando un modelo jerárquico (árbol). Esto no es común para las bases de datos de sitios web.
- Bases de datos con gran cantidad de datos como las bases de datos de Facebook y Amazon. En este caso se requiere sacrificar los beneficios del modelo relacional.