Pergunta

Aparentemente, BDB XML tem sido em torno desde pelo menos 2003, mas eu só recentemente tropeçou no Oracle do site: O Berkeley DB XML.Aqui está a sinopse:

O Oracle Berkeley DB XML é uma fonte aberta, de um banco de dados XML com XQuery baseado no acesso a documentos armazenados em recipientes e indexados com base em seu conteúdo.O Oracle Berkeley DB XML é construído em cima do Oracle Berkeley DB e herda seus recursos e atributos.Como Oracle Berkeley DB, ele é executado no processo com a aplicação sem a necessidade do ser humano de administração.O Oracle Berkeley DB XML adiciona um documento parser de XML e o indexador de XQuery mecanismo no topo do Oracle Berkeley DB para permitir a mais rápida, mais eficiente na recuperação dos dados.

A mim parece que as ideias subjacentes são tecnicamente viáveis e, provavelmente, mais maduro do que o mais recente documento-base do DBs como CouchDB ou MongoDB.Ele tem suporte para C, C++, Ruby e Perl, tanto quanto eu possa determinar.Ele ainda tem HA-de capacidades como a replicação automática usando um mestre/escravo modelo com sistema automático de eleição.

No entanto, eu não consigo encontrar quaisquer projetos que o utilizam.Há algo de fundamentalmente errado com ele?É a licença demasiado onerosos?É muito complicado?

Por que é que não estão sendo utilizados?

Foi útil?

Solução

Eu costumava ser o gerente de produto para o Berkeley DB produtos da Oracle.Estive a trabalhar sobre essas BDB bancos de dados por mais de oito anos, escrevi a "sinopse" que você copiou para sua pergunta.

Comercialmente estamos acostumados em (lista não-exaustiva, apenas em cima da minha cabeça):- Autodesk usa BDB XML no Mapquest - Farelogix usa BDB XML para um sistema de reserva de - Starwood Hotels usa BDB XML para gerenciar informações sobre as propriedades que gerenciar - Juniper Networks usa BDB XML no NetScreen gestor de segurança - muitos eu não posso nome devido ao contrato de restrições...- e assim por diante...

O Berkeley DB XML tem sido relativamente ignorado no mundo open source, por que eu não tenho nenhuma idéia.Existem alguns projetos aqui e ali já usou, nada de público que eu conheço.Eu recentemente fiz ver um excelente post de blog sobre como usar o BDB XML a partir de dentro do Emacs.Uma vez configurado, você pode executar o XQuery declarações sobre o XML de forma interativa dentro do editor de texto.O que disse, é muito viável para fins comerciais e open source de uso.

XQilla é um projeto criado pelo BDB XML engenheiros de alguns outros XML projetos de malha juntos ao longo dos anos.Nós de código aberto (licença Apache 2.0) XQilla, porque é uma grande XQuery e XML parsing library.Somos uma empresa de banco de dados, de modo que o pedaço que leva XML depois de ter sido analisado e organiza-lo em nosso btree bancos de dados, bem como o trabalho de otimização de consultas, indexação, estatísticas, e toda uma tonelada de outro código é o que se senta debaixo de XQilla mas acima BDB da árvore colando os dois juntos em BDB XML.Sinta-se livre para usá-lo se ele resolve o seu problema, estes base de dados não existe em tudo.

Produto construído a partir do zero para XML geralmente têm poucas transacional estruturas de dados fundamentais, que gerem informações sobre o disco.Não há muito de otimização que pode ser feito que não temos já feito em Berkeley DB e usado em Berkeley DB XML.Dizer que um banco de dados construído a partir do zero para gerenciar XML vai ser muito melhor do que a BDB XML está dizendo que há algo faltando em Berkeley DB, eu não acho que há um argumento defensável aqui, mas eu estou querendo saber se alguém tem informações sobre os concorrentes, dados transacionais estrutura crítica para o eficiente XML armazenamento BDB já não implementar.

existir é um Java, XML, banco de dados, temos um Java API JNI se você gostaria e que, em geral, bater as calças fora de existir em desempenho, estabilidade e escalabilidade de testes.

Sedna é um bom banco de dados XML, é o Apache 2.0, então não é um dual-licença é só usar o FIO dental de software.Eu sugiro que você benchmark contra BDB XML, você pode ser surpreendido.

MarkLogic é um grande XML/XQuery servidor de banco de dados, eles construíram uma sólida produto.Não é uma biblioteca de software, é um servidor.Existem diferenças significativas entre BDB XML e MarkLogic, mas eles são ambos disponíveis no mercado - apenas BDB XML é open source.

Alguém mencionou Elliot Rusty Harold blog sobre o estado das bases de dados XML, ser cuidadoso é de cerca de 2007 - ei, não é que antes de qualquer banco de dados NoSQL existia?;-)

Dê uma olhada no Kimbro Staken do antiga, mas ainda relevante revisão (se transformou em um white paper pela Oracle), é bom, mas também com a data."Usar um Banco de dados XML Nativo para os Dados XML:Decidir quando um XQuery baseado no banco de dados XML nativo é melhor do que um banco de dados SQL"

A autoridade real ao longo dos anos tem sido Ron Bourrett.Ele tem muito a dizer sobre o assunto.

O MongoDB e CouchDB em um outro segmento de mercado.Eles distribuídos, particionado, eventualmente consistente BASE de estilo (não ÁCIDO) gestão de dados e alguns acham que eles fazem isso muito bem.Eu acho que eles são jovens, o júri é ainda para fora.Eles são um bom começo e espero que eles continuem a crescer, o armazenamento de dados é uma coisa difícil de acertar e de um tamanho não caber todos os problemas/necessidades.BDB XML distribuídos da história é construído no único mestre, multi-réplica sempre consistente (se você quiser) baseada em log de replicação e PAXOS baseado em algoritmos de eleição, quando o mestre falhar.Nós não partição de dados, cada nó contém os mesmos dados (o banco de dados inteiro).Não permitimos que escreve em qualquer lugar, somente no mestre.Nós oferece suporte a mais de TCP/IP para a replicação (heck, você pode usar um barramento de hardware personalizado para o seu servidor, se quiser).Nós construímos o nosso HA produto para resolver leitura escalabilidade, disponibilidade do sistema e de tolerância a falhas.NoSQL distribuídos sistemas são projetados para a escrita de qualquer lugar dados particionados de gestão.A escolha é bom, certo?:)

O XML como um esquema de dados e XQuery como uma linguagem para acessar e gerenciar o conteúdo XML tem sido e continua a ser uma solução de sucesso.Talvez não tanto no mais sites públicos, utilizando soluções NoSQL esses dias (o que é bom, e interessante para mim), mas mais que isso no documento de gestão, finanças, genômica, bioinformatic, a troca de dados, mensagens, e muito mais.XML pode ser um nicho de banco de dados quando comparado com o SQL/relacional produtos, mas certamente é muito mais bem sucedido do que bases de dados de objectos ou de qualquer novo garoto sobre o bloco de banco de dados NoSQL como solução.Cada solução de armazenamento tem o seu lugar, XML irá continuar a fazer coisas úteis em um futuro distante.

No final do dia, eu espero que você escolha um banco de dados atenda às suas necessidades.

Outras dicas

Uma coisa a ter em mente é a licença de Berkeley DB. A menos que você abre o seu projeto, você precisará comprar uma licença da Oracle, e é por isso que suspeito que você não veja mais. Todos os bancos de dados de Berkeley DB são excelentes de outra forma. Costumo usá -los para qualquer coisa que não vou distribuir (projetos internos).

A partir das minhas experiências, o Berkeley DB XML tem muitas promessas e muitos casos de uso relevantes. Mas você deve ter cuidado para não esperar que funcione em todos os casos. Observe que o último lançamento foi Berkeley DB XML 2.5.16 em 22 de dezembro de 2009.

A tecnologia em que se baseia, Berkeley DB, é muito robusta e cegamente rápida, se você a configurar corretamente para o seu caso de uso. Existem muitos detalhes para acertar (por exemplo, ativar transações, registro, entendimento de todos os sinalizadores necessários para fazer funcionar o MVCC). Acredito que a maioria das pessoas tem problemas por causa dessa complexidade.

Eu encontrei algumas outras deficiências. O maior deles é que o planejador de consultas não usará índices ao classificar. Isso significa que você não pode fazer um padrão de acesso a dados bastante comum, que é o equivalente a:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

Se você fizer isso, o Berkeley DB verificará todos os valores do tempo no disco antes de fazer o pedido, o que o torna mais lento quando você vai além de algumas dezenas de milhares de nós. Alguém mais relatou isso também aqui:

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

Você também pode enumerar qualquer índice, mas perde a capacidade de fazer consultas ad-hoc.

Também está relatado nos fóruns algum comportamento estranho relacionado a tipos e desempenho de índices:

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

Portanto, embora o acesso baseado em chave seja rápido e confiável, tenha cuidado com seu planejador de consulta imaturo.

Depende de quais são suas necessidades. Não recomendo um db XML nativo sobre outro, mas posso dizer que a indústria editorial é um exemplo de um setor inteiro que praticamente abandonou bancos de dados relacionais e transferiu muito tempo para bancos de dados XML nativos para lidar com o conteúdo de suas publicações . O mais proeminente (e mais caro) é o da Marklogic. Existdb é um OpenSource que parece estar recebendo alguma tração.

Aqui está um excelente artigo sobre esse assunto por um dos proeminentes gurus XML, Elliot Rusty Harold.http://cafe.elharo.com/xml/the-state-of-native-xml-databases/

Os melhores repositórios [*] XML são os construídos desde o início para apoiar o XML, como Marklogic ou existir.

No entanto, o mecanismo de armazenamento para BDB-XML é o venerável motor Berkeley DB, um dos mecanismos de banco de dados incorporados mais amplos. É pequeno, rápido e estável.

BDB-XML Certamente é um produto capaz. Anteriormente, foi vendido com o nome Sleepycat, se isso o ajudar a encontrar alguma referência. É uma combinação do mecanismo de armazenamento BDB com o Xqilla Motor XQuery.

Além disso, você pode encontrar mais informações pesquisando Xqilla. É um motor bastante poderoso e ainda de código aberto.

*] "melhor", é claro, sendo um termo subjetivo.

Então, em conclusão, essas são todas as razões pelas quais o BDB-XML não parece amplamente usado:

  • Permite apenas bancos de dados locais internos (embora existam provisões para replicação de escravos mestre)
  • Não gratuito para uso comercial
  • Muitos produtos concorrentes que foram construídos desde o início para apoiar o XML

Parece não haver nenhum motivo para não usá -lo, mas da mesma forma não há muito para fazê -lo se destacar da competição. Além disso, a recente competição tem mais um "ooh, brilhante!" Os bancos de dados de apelação e XML ainda são um mercado de nicho.

Eu tenho sido o mesmo ultimamente e me deparei com o Sedna xml dbms.

"Existe algo fundamentalmente errado com isso?"

Sim. É xml.

E, infelizmente, isso significa que aqueles que o inventaram não se incomodaram em dar uma olhada no poder de conceitos e tecnologias já existentes, como, digamos, álgebra relacional e cálculo relacional.

Fazer melhor do que isso não é uma tarefa trivial (e isso está colocando educadamente), e todos que tentaram até agora falharam.

Isso deve te dizer uma coisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top