Domanda

Sto considerando una soluzione open source ottimale per l'archiviazione di documenti XML con ulteriori query su di essi in modo efficace. La quantità di dati sarà piccola. Per quanto ho capito, i database XML nativi potrebbero costituire una soluzione adeguata al mio caso. Ovviamente memorizzano i documenti XML in modo altamente efficiente. Sarebbe bello imparare la tua esperienza. Qualche suggerimento su una soluzione adeguata? Hai esperienza con i motori di archiviazione xml nelle tue app?

È stato utile?

Soluzione

Lavoriamo con server XML nativi nel nostro lavoro. Stanno bene se i tuoi dati sono inferiori a circa 100-200 MB-s, ma dopo non sono riuscito a trovare un server adeguato in grado di gestire i dati. Ho provato quanto segue:

  • eXist: server XML nativo basato su Java (open source): con file di grandi dimensioni di solito mangia la memoria della JVM e quindi genera un'eccezione di memoria esaurita
  • sedna: server XML nativo basato su C (open source): è in grado di gestire database di dimensioni molto grandi, ma segfault se si tenta di eseguire una query di dati non indicizzati dal database
  • Database XML Tamino (proprietario): uno dei primi database XML, maturo ma con supporto xquery scadente (almeno l'ultima versione che stiamo usando ha un pessimo supporto per XQuery), e come abbiamo visto anche un un professionista qualificato non è riuscito a configurarlo correttamente per essere abbastanza veloce.

Ecco i miei suggerimenti:

  • Per i piccoli dati e per i sistemi basati su Java, provare eXist. Ha anche un supporto per database basato su file simile a SQlite che potrebbe essere utile.
  • Per dati medio-piccoli, in cui le prestazioni sono importanti, utilizzare sedna. Secondo il mio test è il più veloce dei tre.
  • Se hai bisogno di supporto, usa Tamino. Ha almeno il supporto.

Per database di grandi dimensioni (da 1 GB in su) non consiglierei nessuno di questi (ancora). eXist di solito si arrestava in modo anomalo con un database delle dimensioni di 200 MB. sedna si è arrestato in modo anomalo con un database di dimensioni pari a 1 GB durante l'interrogazione di qualcosa che non era indicizzato e tamino non è stato in grado di caricare 500 MB di dati in una corsa prima di arrestare l'intero sistema. Naturalmente tutti questi sistemi si stanno evolvendo, quindi forse un po 'più tardi saranno sicuri da usare, ma i database XML nativi sono purtroppo ancora immaturi.

Altri suggerimenti

Hai esaminato le principali soluzioni fornite dal fornitore come Oracle XML DB . Non l'ho provato, ma varrebbe sicuramente la pena valutare se hai un budget per queste cose!

Anche Wikipedia ha un bel elenco di DBS XML , che potresti voler valutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top