Domanda

A quanto pare, BDB-XML è stato intorno almeno dal 2003, ma solo di recente mi sono imbattuto su di esso sul sito web di Oracle: Berkeley DB XML . Ecco la fascetta pubblicitaria:

  

Oracle Berkeley DB XML è un open source, database XML integrabile con accesso XQuery-based per i documenti memorizzati in contenitori e indicizzate in base al loro contenuto. Oracle Berkeley DB XML è costruito sulla base di Oracle Berkeley DB e ne eredita le sue funzionalità avanzate e gli attributi. Come Oracle Berkeley DB, viene eseguito nel processo con l'applicazione senza necessità di essere somministrate all'uomo. Oracle Berkeley DB XML aggiunge un parser documento, indicizzatore XML e XQuery motore sulla parte superiore del Oracle Berkeley DB per consentire il più veloce, più efficiente il recupero dei dati.

A me sembra che le idee di fondo sono tecnicamente valido e probabilmente più maturo rispetto ai DB più recenti basati su documenti come CouchDB o MongoDB. Ha il supporto per C, C ++, Ruby e Perl, per quanto posso determinare. Essa ha anche HA-funzionalità come replica automatica utilizzando un modello / master-slave con l'elezione automatica.

Tuttavia, non riesco a trovare alcun progetto che lo utilizzano. C'è qualcosa di fondamentalmente sbagliato con esso? È la licenza troppo oneroso? E 'troppo complicato?

Perché non è in uso?

È stato utile?

Soluzione

ho usato per essere il product manager per Berkeley DB prodotti a Oracle. Sono stato in giro lavorando su questi database BDB per oltre otto anni ormai, ho scritto il "Blurb" copiato nella tua domanda.

Commercialmente siamo abituati a (elenco non esaustivo, appena fuori dalla parte superiore della mia testa):  - Autodesk utilizza BDB XML in Mapquest  - Farelogix utilizza BDB XML per un sistema di prenotazione  - Starwood Hotels utilizza BDB XML per gestire le informazioni sulle proprietà che gestiscono  - Juniper Networks utilizza BDB XML nel gestore della sicurezza NetScreen  - molti non posso nome a causa di restrizioni di contratto ...  - e così via ...

Berkeley DB XML è stato relativamente ignorato nel mondo open source, perché non ne ho idea. Ci sono alcuni progetti qui e là lo hanno usato, niente di tutto ciò che pubblico, che io sappia. Recentemente ho visto un ingegnoso post sul blog su come utilizzare BDB XML dall'interno di Emacs. Una volta che l'installazione è possibile eseguire istruzioni XQuery su XML in modo interattivo all'interno dell'editor di testo. Detto questo, è molto valida per l'uso commerciali che open source.

XQilla è un progetto creato da ingegneri XML BDB da pochi altri progetti XML abbiamo a maglia insieme nel corso degli anni. Abbiamo open source (licenza Apache 2.0) XQilla perché è una grande biblioteca XQuery e parsing XML. Siamo una società di database, in modo che il pezzo che prende XML dopo che è stato analizzato e organizza nelle nostre banche dati btree così come il lavoro sulla ottimizzazione delle query, l'indicizzazione, le statistiche, e tutta una tonnellata di altro codice è quello che si trova sotto XQilla ma sopra btree di BDB incollando i due insieme in BDB XML. Sentitevi liberi di usare se si risolve il problema, questi nessun database lì a tutti.

prodotto costruito da zero per XML in genere hanno un paio di strutture di dati transazionali al loro nucleo che gestiscono le informazioni sul disco. Non c'è molto di ottimizzazione che si può fare che non abbiamo già fatto a Berkeley DB e usato a Berkeley DB XML. Dire che un database costruito da zero per gestire XML sta per essere significativamente migliore di BDB XML sta dicendo che c'è qualcosa che manca da Berkeley DB, io non ci credo che un argomento difendibile qui, ma io sono disposto a imparare, se qualcuno ha informazioni su una struttura di dati transazionali concomitante critica per efficiente memorizzazione XML che BDB non sia già implementa.

eXist è un database XML Java, abbiamo un API Java JNI se vuoi e noi generalmente battere i pantaloni fuori esiste nel test di performance, stabilità e scalabilità.

Sedna è una buona base di dati XML, è Apache 2.0, quindi non è un dual-licenza è solo software FLOSS. Io suggerirei di riferimento contro BDB XML, potreste essere sorpresi.

Mark Logic è un / server di database XQuery, hanno costruito un prodotto molto solido grande XML. Non è una libreria software, è un server. Ci sono differenze significative tra BDB XML e Mark Logic, ma sono entrambi disponibili in commercio - solo BDB XML è open source

.

Qualcuno ha detto il blog di Elliot Rusty Harold sullo stato del database XML, fare attenzione a che sia circa 2007 - hey, non è che prima che esistesse qualsiasi database NoSQL? ; -)

Date un'occhiata a vecchio ma ancora attuale recensione ( trasformato in un white paper da Oracle ), è buono, ma anche datato. "Utilizzare un database XML nativo per i dati XML: Decidere quando un database XML nativo XQuery-based è meglio di un database SQL"

La vera autorità nel corso degli anni è stato Ron Bourrett . Egli ha molto da dire sull'argomento.

MongoDB e CouchDB sono in un segmento di mercato diverso. Essi distribuiti, partizionati,infine coerente BASE-stile di gestione dei dati (non ACID) e alcuni pensano di fare molto bene. Penso che sono giovani, la giuria è ancora fuori. Sono fuori per un buon inizio e spero che continuino a crescere, la memorizzazione dei dati è una cosa difficile da ottenere di destra e uno taglia non va bene problematici / esigenze di tutti. storia distribuita di BDB XML è costruito su master singolo, multi-replica sempre coerente (se vuoi) replica di log-based e PAXOS a base di algoritmi di elezione quando il padrone non riesce. Noi non partizione dati, ogni nodo contiene gli stessi dati (l'intero database). Non permettiamo scrive ovunque, solo al master. Sosteniamo più di TCP / IP per la replica (diamine, è possibile utilizzare un bus personalizzato hardware al server se si desidera). Abbiamo costruito il nostro prodotto HA per risolvere lettura scalabilità, disponibilità del sistema e la tolleranza d'errore. sistemi distribuiti di NoSQL sono progettati per scrivere ovunque partizionato gestione dei dati. La scelta è buono, giusto? :)

XML come uno schema di dati e XQuery come linguaggio di accedere e gestire i contenuti XML è stato e continua ad essere una soluzione di grande successo. Forse non tanto nei più comuni siti web che utilizzano le soluzioni NoSQL questi giorni (che va bene, e interessante per me) ma di più nella gestione dei documenti, la finanza, la genomica, bioinformatica, lo scambio di dati, messaggistica e molto altro ancora. XML può essere un database di nicchia rispetto ai prodotti SQL / relazionali ma è certamente molto più successo di database degli oggetti o di qualsiasi nuovo capretto sul blocco di soluzione di database NoSQL. Ogni soluzione di storage ha il suo posto, XML continuerà a fare cose utili anche in futuro.

Alla fine della giornata, spero che si sceglie una banca dati adatta alle vostre esigenze.

Altri suggerimenti

Una cosa da tenere a mente è la patente di Berkeley DB. A meno che non si sta per aprire fonte progetto, è necessario acquistare una licenza da Oracle, che è il motivo per cui ho il sospetto che non si vede più. Tutti i database Berkeley DB sono abbastanza eccellente altrimenti. Io tendo ad usarli per qualcosa che non ho intenzione di distribuire (in progetti di casa).

Dalle mie esperienze Berkeley DB XML ha un sacco di promesse e un sacco di rilevanti casi d'uso. Ma si deve fare attenzione a non aspettarsi che funzioni in tutti i casi. Si noti che l'ultima release era Berkeley DB XML 2.5.16 in 22 DICEMBRE 2009.

La tecnologia si basa su, Berkeley DB, è molto robusto e veloce come il fulmine, se si configura correttamente per il vostro caso d'uso. Ci sono molti dettagli da ottenere (ad esempio abilitare le transazioni, la registrazione, la comprensione tutte le bandiere necessari per ottenere MVCC di lavoro). Credo che la maggior parte delle persone hanno problemi a causa di questa complessità.

Ho eseguito in un paio di altre carenze però. Il più grande è che il pianificatore query non utilizzerà gli indici durante l'ordinamento. Ciò significa che non si può fare un modello di accesso ai dati piuttosto comune che è l'equivalente di:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

Se si esegue questa operazione Berkeley DB controlla tutti i valori di tempo su disco prima di ordinare, che lo rende lento quando si va al di là di poche decine di migliaia di nodi. Qualcun altro ha riferito anche questo qui:

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

È possibile enumerare tutti gli indici direttamente pure, ma poi si perde la capacità di fare le query ad-hoc.

riportato anche sui forum è un po 'strano comportamento relative ai tipi di indice e le prestazioni:

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

Così, mentre l'accesso basata su chiave è veloce e affidabile, fare attenzione della sua immatura pianificatore query.

Dipende da che cosa i vostri bisogni sono. Non vi consiglio uno XML DB nativo su un altro, ma posso dirvi che l'industria editoriale è un esempio di un intero settore che ha praticamente abbandonato i database relazionali e si è trasferito alla grande per i database XML nativo per la gestione del contenuto delle loro pubblicazioni . Il più importante (e più costosa) è quella da Mark Logic. eXistDB è un opensource che sembra essere sempre un po 'di trazione.

Ecco un ottimo articolo su questo argomento da uno dei guru xml preminente, Elliot Rusty Harold. http://cafe.elharo.com/xml/the -state-di-natale-XML-database /

Le migliori [*] repository XML sono quelle costruite da zero per supportare XML, come Mark Logic esistono .

Tuttavia, il motore di archiviazione per il BDB-XML è il venerabile motore di Berkeley DB, uno dei motori di database più diffusi embedded. E 'piccolo, veloce e stabile.

BDB-XML sé è certamente un prodotto in grado. E 'stato precedentemente venduto sotto il nome Sleepycat, se questo ti aiuta a trovare tutti i riferimenti. E 'una combinazione di motore di archiviazione BDB con il XQilla motore XQuery.

Inoltre si potrebbe trovare ulteriori informazioni alla ricerca di XQilla . E 'un motore abbastanza potente, ed ancora l'open source.

[*] "migliore", naturalmente, essendo un termine soggettivo.

Quindi, in conclusione, questi sono tutti i motivi per cui BDB-XML non sembra ampiamente utilizzati:

  • Solo permette built-in, database locali (anche se ci sono fondi per fare la replicazione master-slave)
  • Non libero per uso commerciale
  • Molti prodotti concorrenti che sono state costruite da zero per supportare XML

Non sembra esserci alcuna ragione per non usarlo, ma allo stesso modo non c'è molto per farlo risaltare dalla concorrenza. In cima a quello, la competizione recente ha più di un "Ooh, lucido!" ricorso e XML database stessi sono ancora un mercato di nicchia.

Sono stato per la stessa ultimamente e sono imbattuto il DBMS XML Sedna.

"C'è qualcosa di fondamentalmente sbagliato con esso?"

Sì. E 'XML.

E purtroppo questo significa che chi ha inventato essa non si è preoccupato di dare uno sguardo alla potenza dei concetti e delle tecnologie come, ad esempio, l'algebra relazionale e calcolo relazionale già esistente.

Fare meglio di quelli non è un compito banale (e che sta mettendo educatamente), e tutti coloro che hanno provato finora non è riuscita.

Questo dovrebbe dirvi qualcosa.

scroll top