Pregunta

Aparentemente, BDB-XML existe desde al menos 2003, pero recientemente lo encontré en el sitio web de Oracle: XML de base de datos de Berkeley.Aquí está la propaganda:

Oracle Berkeley DB XML es una base de datos XML integrable y de código abierto con acceso basado en XQuery a documentos almacenados en contenedores e indexados en función de su contenido.Oracle Berkeley DB XML se basa en Oracle Berkeley DB y hereda sus ricas características y atributos.Al igual que Oracle Berkeley DB, se ejecuta en proceso con la aplicación sin necesidad de administración humana.Oracle Berkeley DB XML agrega un analizador de documentos, un indexador XML y un motor XQuery además de Oracle Berkeley DB para permitir la recuperación de datos más rápida y eficiente.

A mí me parece que las ideas subyacentes son técnicamente sólidas y probablemente más maduras que las nuevas bases de datos basadas en documentos como CouchDB o MongoDB.Tiene soporte para C, C++, Ruby y Perl, hasta donde puedo determinar.Incluso tiene capacidades de HA, como replicación automática utilizando un modelo maestro/esclavo con elección automática.

Sin embargo, parece que no puedo encontrar ningún proyecto que lo utilice.¿Hay algo fundamentalmente malo en ello?¿Es la licencia demasiado onerosa?¿Es demasiado complicado?

¿Por qué no se utiliza?

¿Fue útil?

Solución

Solía ​​​​ser gerente de producto para productos Berkeley DB en Oracle.He estado trabajando en estas bases de datos BDB durante más de ocho años, escribí la "publicidad" que copiaste en tu pregunta.

Comercialmente nos utilizan (lista no exhaustiva, que se me viene a la cabeza):- Autodesk uses BDB XML in Mapquest - Farelogix uses BDB XML for a reservation system - Starwood Hotels uses BDB XML to manage information about properties they manage - Juniper Networks uses BDB XML in the NetScreen security manager - many I can't name due to contract Restricciones ...- etcétera...

Berkeley DB XML ha sido relativamente ignorado en el mundo del código abierto, por eso no tengo idea.Hay algunos proyectos aquí y allá que lo han utilizado, nada tan público que yo sepa.hace poco vi una publicación de blog ingeniosa sobre cómo utilizar BDB XML desde Emacs.Una vez configurado, puede ejecutar declaraciones XQuery sobre XML de forma interactiva dentro del editor de texto.Dicho esto, es muy viable para uso comercial y de código abierto.

XQilla es un proyecto creado por los ingenieros XML de BDB a partir de algunos otros proyectos XML que hemos creado a lo largo de los años.Abrimos XQilla de código abierto (licencia Apache 2.0) porque es una excelente biblioteca de análisis XQuery y XML.Somos una empresa de bases de datos, por lo que la parte que toma XML después de haberlo analizado y lo organiza en nuestras bases de datos btree, así como el trabajo de optimización de consultas, indexación, estadísticas y un montón de otros códigos, es lo que se encuentra bajo XQilla, pero encima del btree de BDB pegando los dos en BDB XML.Siéntase libre de usarlo si resuelve su problema, no hay ninguna base de datos allí.

Los productos creados desde cero para XML generalmente tienen algunas estructuras de datos transaccionales en su núcleo que administran la información en el disco.No se puede hacer mucha optimización que no hayamos hecho ya en Berkeley DB y utilizado en Berkeley DB XML.Decir que una base de datos construida desde cero para administrar XML será significativamente mejor que BDB XML es decir que falta algo en Berkeley DB. No creo que haya un argumento defendible aquí, pero estoy dispuesto a aprender si alguien tiene información sobre una estructura de datos transaccionales concurrentes crítica para el almacenamiento XML eficiente que BDB aún no implementa.

eXist es una base de datos Java XML, tenemos una API Java JNI si lo desea y generalmente superamos a eXist en pruebas de rendimiento, estabilidad y escalabilidad.

Sedna es una buena base de datos XML, es Apache 2.0, por lo que no es una licencia dual, es solo software FLOSS.Le sugiero que lo compare con BDB XML, puede que se sorprenda.

MarkLogic es un excelente servidor de bases de datos XML/XQuery; han creado un producto muy sólido.No es una biblioteca de software, es un servidor.Existen diferencias significativas entre BDB XML y MarkLogic, pero ambos están disponibles comercialmente; solo BDB XML es de código abierto.

Alguien mencionó el blog de Elliot Rusty Harold sobre el estado de las bases de datos XML, tenga cuidado, es alrededor de 2007. Oye, ¿no es eso antes de que existiera cualquier base de datos NoSQL?;-)

Echa un vistazo a Kimbro Staken revisión antigua pero aún relevante (convertido en un documento técnico de Oracle), es bueno pero también anticuado."Utilice una base de datos XML nativa para sus datos XML:Decidir cuándo una base de datos XML nativa basada en XQuery es mejor que una base de datos SQL"

La verdadera autoridad a lo largo de los años ha sido Ron Bourrett.Tiene mucho que decir sobre el tema.

MongoDB y CouchDB se encuentran en un segmento de mercado diferente.Realizan una gestión de datos distribuida, particionada y eventualmente consistente al estilo BASE (no ACID) y algunos piensan que lo hacen muy bien.Creo que son jóvenes, el jurado aún está deliberando.Han tenido un buen comienzo y espero que sigan creciendo, el almacenamiento de datos es algo difícil de lograr y un tamaño no se adapta a los problemas o necesidades de todos.La historia distribuida de BDB XML se basa en una replicación basada en registros de un solo maestro, múltiples réplicas siempre consistentes (si lo desea) y algoritmos de elección basados ​​en PAXOS cuando el maestro falla.No particionamos datos, cada nodo contiene los mismos datos (la base de datos completa).No permitimos escrituras en todas partes, solo en el maestro.Admitimos más que TCP/IP para la replicación (diablos, puedes usar un bus de hardware personalizado para tu servidor si lo deseas).Creamos nuestro producto HA para resolver la escalabilidad de lectura, la disponibilidad del sistema y la tolerancia a fallas.Los sistemas distribuidos de NoSQL están diseñados para escribir en cualquier lugar la gestión de datos particionados.La elección es buena, ¿verdad?:)

XML como esquema de datos y XQuery como lenguaje para acceder y gestionar contenido XML ha sido y sigue siendo una solución muy exitosa.Quizás no tanto en los sitios web más públicos que utilizan soluciones NoSQL en estos días (lo cual está bien e interesante para mí), pero más en gestión de documentos, finanzas, genómica, bioinformática, intercambio de datos, mensajería y mucho más.XML puede ser una base de datos de nicho en comparación con los productos SQL/relacionales, pero ciertamente es mucho más exitoso que las bases de datos de objetos o cualquier nueva solución de base de datos NoSQL.Cada solución de almacenamiento tiene su lugar, XML seguirá haciendo cosas útiles en el futuro.

Al final del día, espero que elijas una base de datos que se adapte a tus necesidades.

Otros consejos

Una cosa a tener en cuenta es la licencia de Berkeley DB. A menos que vaya a abrir su proyecto, deberá comprar una licencia de Oracle, por lo que sospecho que no ve más. Todas las bases de datos de Berkeley DB son bastante excelentes. Tiendo a usarlos para cualquier cosa que no voy a distribuir (en proyectos en casa).

De mis experiencias, Berkeley DB XML tiene muchas promesas y muchos casos de uso relevantes. Pero debe tener cuidado de no esperar que funcione en todos los casos. Tenga en cuenta que el último lanzamiento fue Berkeley DB XML 2.5.16 el 22 de diciembre de 2009.

La tecnología en la que se basa, Berkeley DB, es muy robusta y cegadora, si la configura correctamente para su caso de uso. Hay muchos detalles para obtener correctamente (por ejemplo, habilitar transacciones, registrar, comprender todos los indicadores necesarios para que funcione MVCC). Creo que la mayoría de las personas tienen problemas debido a esta complejidad.

Sin embargo, me he encontrado con algunas otras deficiencias. La mayor es que el planificador de consultas no usará índices al clasificar. Esto significa que no puede hacer un patrón de acceso de datos bastante común que sea el equivalente de:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

Si hace esto, Berkeley DB verificará todos los valores de tiempo en el disco antes de ordenar, lo que lo hace lento cuando va más allá de unas pocas decenas de miles de nodos. Alguien más informó esto también aquí:

https://forums.oracle.com/forums/message.jspa?messageid=9754987#9754987

También puede enumerar cualquier índice directamente, pero luego pierde la capacidad de hacer consultas ad-hoc.

También se informa en los foros un comportamiento extraño relacionado con los tipos de índices y el rendimiento:

https://forums.oracle.com/forums/message.jspa?messageid=9753022#9753022

Entonces, si bien el acceso basado en la clave es rápido y confiable, tenga cuidado con su planificador de consultas inmaduras.

Depende de cuáles sean sus necesidades. No recomendaré un XML DB nativo sobre otro, pero puedo decirle que la industria editorial es un ejemplo de un sector completo que ha abandonado las bases de datos relacionales y ha pasado a lo grande a las bases de datos XML nativas para manejar el contenido de sus publicaciones . El más prominente (y más caro) es el de Marklogic. ExistDB es una OpenSource que parece estar recibiendo algo de tracción.

Aquí hay un excelente artículo sobre este tema de uno de los gurús XML preeminentes, Elliot Rusty Harold.http://cafe.elharo.com/xml/the-state-of-native-xml-databases/

Los mejores [*] Repositorios XML son los construidos desde cero para soportar XML, como Marklogic o existir.

Sin embargo, el motor de almacenamiento para BDB-XML es el venerable motor DB Berkeley, uno de los motores de base de datos integrados más extendidos. Es pequeño, rápido y estable.

Bdb-xml en sí mismo es ciertamente un producto capaz. Anteriormente se vendía bajo el nombre de SleepyCat, si eso le ayuda a encontrar alguna referencia. Es una combinación del motor de almacenamiento BDB con el Xqilla Motor XQuery.

También puede encontrar más información buscando Xqilla. Es un motor bastante potente y aún de código abierto.

*] "mejor", por supuesto, ser un término subjetivo.

Entonces, en conclusión, estas son todas las razones por las cuales BDB-XML no parece ampliamente utilizado:

  • Solo permite bases de datos locales incorporadas (aunque hay disposiciones para hacer replicación maestra-esclavo)
  • No gratis para uso comercial
  • Muchos productos en competencia que se construyeron desde cero para admitir XML

No parece haber ninguna razón para no usarlo, pero de la misma manera no hay mucho para que se destaque de la competencia. Además de eso, la competencia reciente tiene más "¡ooh, brillante!" Las bases de datos de apelación y XML siguen siendo un nicho de mercado.

He estado por el mismo último y he encontrado el Sedna XML DBMS.

"¿Hay algo fundamentalmente malo?"

Sí. Es XML.

Y desafortunadamente eso significa que aquellos que lo inventaron no se molestaron en echar un vistazo al poder de conceptos y tecnologías ya existentes como, por ejemplo, álgebra relacional y cálculo relacional.

Hacer mejor que esos no es una tarea trivial (y eso es cortésmente), y todos los que lo han intentado hasta ahora han fallado.

Eso debería decirle algo.

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