2010-03-23 56 views
16

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 usado una base de datos de objetos con una gran cantidad de datos?

¿Alguien ha intentado utilizar 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?

Solo 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.

+1

TBH con ORM como Hibernate haciendo un trabajo fantástico de abstraer este tipo de cosas de distancia Realmente no veo el punto. –

+3

MongoDB no está realmente compitiendo con NHibernate y las bases de datos relacionales en la mayoría de los casos. Mira la lista de casos de uso a la que me he vinculado. Las bases de datos relacionales son realmente horribles para algunas situaciones y estas bases de datos alternativas son mejores soluciones. El OP puede ser incorrecto en su uso del término bases de datos de objetos aquí también. –

+8

640K debería ser suficiente para cualquier persona. –

Respuesta

4

poderes MongoDB SourceForge, The New York Times, y varias otras bases de datos grandes ...

4

Debe leer la MongoDB use cases. Las personas que solo están jugando con la tecnología a menudo solo están mirando 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 ven 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.

Vale la pena leer sobre el CAP theorem también.

4

Estaba buscando mover la API Estoy seguro con la aplicación de desbordamiento de pila de 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 encontrará en 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 puede 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 el visual guide to nosql systems. Hay un número decente de opciones fuera de MongoDB. También he usado Redis aunque no con una base de datos tan grande.

+1

Lo siento, tuviste una experiencia tan miserable. Si aún está interesado, puede publicar lo que está haciendo en http://groups.google.com/group/mongodb-user/ y tal vez podamos ayudarlo. La importación debe ser muy rápida y las consultas parecen como si acabara de necesitar un índice en alguna parte o algo así. – kristina

+0

No miserable en absoluto. Añadiré que mi intención era hacer que la base de datos MongoDB resultante fuera "correcta". No estaba tratando de hacer que la carga coincidiera con la base de datos mysql que tengo, sino que construí un documento completo que representaba cada pregunta, respuesta, voto y comentario. Todos están desnormalizados en el basurero y creo que parte del problema fue unirlos. De todos modos, la limitación de 32 bits fue mi único y verdadero problema. Estoy seguro de que podría haber pasado más tiempo haciendo que funcione bien si pudiera justificar el uso. – carson

11

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: necesita los índices correctos para obtener un buen rendimiento. Puede usar explain() en consultas y contactar the user list para obtener ayuda con esto.

7

Cuando comencé db4o en el año 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 usaban 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, sólo se puede llamar #openFile())

db4o fue adquirida por Versant en 2008, porque es Capabilites (incrustado, bajo ressource-consumo, ligero) lo convierten en un producto complementario a la base de datos de objetos de alto nivel de Versant VOD. 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.

1

Quizás digno de mención.

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

Es un satélite con 74 sensores incorporados lanzado el año pasado que está mapeando el espectro de color del universo y almacenando 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í es la implementación: http://www.planck.fr/Piodoc/PIOlib_Overview_V1.0.pdf

Aquí Hablan de 3T web frente a 12T encuentran en la prueba http://newscenter.lbl.gov/feature-stories/2008/12/10/cosmic-data/

también ... hay puntos de referencia que muestran órdenes de magnitud más rápido Versant en el lado de análisis de la misión.

Cheers, -Robert

Cuestiones relacionadas