que - mongodb español
¿Alguien ha usado una base de datos de objetos con una gran cantidad de datos? (7)
Alguien acaba de entrar en producción con 12 terabytes de datos en MongoDB. El más grande que conocí antes era 1 TB. Mucha gente está guardando grandes cantidades de datos en Mongo.
Es importante recordar que Mongo funciona como una base de datos relacional: necesitas los índices adecuados para obtener un buen rendimiento. Puede usar explain () en las consultas y ponerse en contacto con la lista de usuarios para obtener ayuda con esto.
Las bases de datos de objetos como MongoDB y db4o están recibiendo mucha publicidad últimamente. Todos los que juegan con ellos parecen amarlo. Supongo que están tratando con aproximadamente 640,000 de datos en sus aplicaciones de muestra.
¿Alguien ha tratado de usar una base de datos de objetos con una gran cantidad de datos (por ejemplo, 50 GB o más)? ¿Todavía puede ejecutar consultas complejas contra él (como desde una pantalla de búsqueda)? ¿Cómo se compara con tu base de datos relacional habitual?
Tengo curiosidad. Quiero hacer que la base de datos de objetos se sumerja, pero necesito saber si funcionará en algo más que una aplicación de muestra.
Aquí hay algunos puntos de referencia en db4o:
http://www.db4o.com/about/productinformation/benchmarks/
Creo que, en última instancia, depende de muchos factores, incluida la complejidad de los datos, pero parece que db4o se cuelga con los mejores.
Deberías leer los casos de uso de MongoDB . Las personas que solo están jugando con la tecnología a menudo solo están viendo cómo funciona esto y no están en el punto en que puedan entender las limitaciones. Para los tipos correctos de conjuntos de datos y patrones de acceso, 50 GB no son nada para MongoDB ejecutándose en el hardware correcto.
Estos sistemas no relacionales observan las compensaciones que hicieron los RDBM, y los modificaron un poco. La consistencia no es tan importante como otras cosas en algunas situaciones, por lo que estas soluciones le permiten cambiar eso por otra cosa. El trade-off es aún relativamente menor en algunos o quizás segundos en algunas situaciones.
También vale la pena leer sobre el teorema CAP .
Estaba pensando en mover la API, estoy seguro, con la aplicación de desbordamiento de pila iphone que escribí hace un tiempo en MongoDB desde donde actualmente se encuentra en una base de datos MySQL. En forma cruda, el volcado de SO CC está en el rango de varios gigabytes y la forma en que construí los documentos para MongoDB resultó en una base de datos 10G +. Es discutible que no construí bien los documentos, pero no quería perder mucho tiempo haciendo esto.
Una de las primeras cosas que te encontrarás si comienzas por este camino es la falta de soporte de 32 bits. Por supuesto, todo se está moviendo a 64 bits ahora, pero algo a tener en cuenta. No creo que ninguna de las principales bases de datos de documentos admita paginación en el modo de 32 bits y eso es comprensible desde el punto de vista de la complejidad del código.
Para probar lo que quería hacer, utilicé un nodo EC2 de instancia de 64 bits. Lo segundo que encontré es que a pesar de que esta máquina tenía 7G de memoria cuando se agotó la memoria física, las cosas pasaron de rápidas a no tan rápidas. No estoy seguro de que no haya configurado algo incorrectamente en este punto porque la falta de compatibilidad con el sistema de 32 bits mató para lo que quería usarlo, pero aún quería ver cómo era. Cargar el mismo volcado de datos en MySQL lleva unos 2 minutos en un cuadro mucho menos potente, pero el script que utilicé para cargar las dos bases de datos funciona de manera diferente, así que no puedo hacer una buena comparación. Ejecutar solo un subconjunto de los datos en MongoDB era mucho más rápido, siempre y cuando se obtuviera una base de datos que era inferior a 7G.
Creo que mi conclusión fue que las grandes bases de datos funcionarán bien, pero es posible que tenga que pensar cómo se estructuran los datos más de lo que lo haría con una base de datos tradicional si desea mantener el alto rendimiento. Veo mucha gente usando MongoDB para el registro y me imagino que muchas de esas bases de datos son masivas, pero al mismo tiempo pueden no tener acceso aleatorio, lo que puede enmascarar el rendimiento de aplicaciones más tradicionales. .
Un recurso reciente que podría ser útil es la guía visual de los sistemas nosql . Hay un número decente de opciones fuera de MongoDB. También he usado Redis aunque no con una base de datos tan grande.
MongoDB impulsa SourceForge, The New York Times y varias otras bases de datos grandes ...
Cuando comencé db4o en 2000, no tenía grandes bases de datos en mente. El objetivo principal era almacenar cualquier objeto complejo de manera muy simple con una línea de código y hacerlo bien y rápido con un bajo consumo de recursos, para que pueda ejecutarse incrustado y en dispositivos móviles.
Con el tiempo, tuvimos muchos usuarios que usaron db4o para webapps y con grandes cantidades de datos, acercándose al tamaño máximo de archivo de la base de datos de 256 GB (con un tamaño de bloque configurado de 127 bytes). Entonces, para responder a su pregunta: Sí, db4o funcionará con 50GB, pero no debe usarlo para terabytes de datos (a menos que pueda dividir fácilmente sus datos en múltiples bases de datos db4o, los costos de instalación para una base de datos son insignificantes, solo puede llamar a #openFile ())
db4o fue adquirido por Versant en 2008, debido a sus capacidades (integrado, bajo consumo de recursos, liviano) que lo convierten en un excelente producto complementario para la base de datos de objetos de gama alta VOD de Versant. VOD escala para grandes cantidades de datos y lo hace mucho mejor que las bases de datos relacionales. Creo que solo se reirá más de 50GB.
Tal vez vale la pena mencionarlo.
La misión Planck de la Agencia Espacial Europea se ejecuta en la base de datos de objetos Versant. http://sci.esa.int/science-e/www/object/index.cfm?fobjectid=46951
Se trata de un satélite con 74 sensores incorporados que se lanzó el año pasado, que mapea el espectro de color del universo y almacena la información en un modelo de segmento de mapa. Ha estado recibiendo un montón de exageraciones en estos días debido a que está produciendo algunas de las mejores imágenes jamás vistas del universo.
De todos modos, ha generado 25T de información almacenada en Versant y replicada en 3 continentes. Cuando la misión esté completa el próximo año, será un total de 50T
Probablemente también valga la pena señalar que las bases de datos de objetos tienden a ser mucho más pequeñas para contener la misma información. Es porque están verdaderamente normalizados, no hay duplicación de datos para las uniones, no hay espacio vacío en la columna y pocos índices en lugar de 100 de ellos. Puede encontrar información pública sobre las pruebas que ESA hizo para considerar el almacenamiento en formato de base de datos relacional de columnas múltiples -vs- utilizando un modelo de objetos adecuado y almacenándolo en la base de datos de objetos Versant. Descubrieron que podían ahorrar un 75% de espacio en disco usando Versant.
Aquí está la implementación: http://www.planck.fr/Piodoc/PIOlib_Overview_V1.0.pdf
Aquí hablan sobre 3T -vs-12T encontrado en las pruebas http://newscenter.lbl.gov/feature-stories/2008/12/10/cosmic-data/
Además ... hay puntos de referencia que muestran órdenes de magnitud Versant más rápido en el lado del análisis de la misión.
CHeers, -Robert