[XML] XML database ervaringen

Pagina: 1
Acties:
  • 299 views sinds 30-01-2008
  • Reageer

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Topicstarter
Bij mij op het werk gebruiken we Oracle 8i voor de opslag van XML content. Nu bestaan er ook "echte" XML-databases zoals die van Software AG. Ik benieuwd of er GoT-ers zijn met ervaringen met dit soort databases en of we tot categorieën van dit soort DBMS-en kunnen komen.
Het gaat mij dus niet om het opslaan van een XML-bericht in een CLOB (dit kunnen de de meeste RDBMS-en), maar voor al om de speciale XML toeters en bellen die de DBMS dan ook heeft, zoals XML-query mogelijkheden en full text search opties

Verwijderd

Ik weet dat MS SQL 2000 (7 ook) mogelijkheden hebben om XML rechtstreeks uit te poepen, maar heb er nog geen ervaring mee opgedaan omdat XML momenteel zo weinig gebruikt wordt. :)

Verwijderd

Er zijn diverse Oracle packages die je voor XML kan gebruiken.

Wat voorbeeld(code) zijn te vinden op:
http://examples.oreilly.com/orxmlapp/
en dan orxmlapp_examples.zip
Alleen is dit volgens mij een alwat verouderde manier.
Gaat met xPath, waarbij de performance niet echt optimaal is.

Op Technet heb je ook voorbeelden zoals:
http://technet.oracle.com/docs/tech/xml/xdk_plsql/doc_library/Production9i/doc/plsql/xsu/xsu_userguide.html

Verwijderd

XML is een database in ascii met hierarchische recordsets. zolang je RDBMS model dat ondersteunt, kun je XML trees in je database kwijt. 'echte xml database' is marketingpoop, xml is een representatievorm van data in ascii, geen RDBMS materiaal. Oracle, SQLServer, DB2, allemaal halen ze de data eerst uit hun eigen format en transformeren dat naar XML.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Topicstarter
Ben het niet met je eens Otis. Een RDBMS kent niet standaard DTD functionaliteit, geen XML-query functionaliteit, geen versiebeheer, geen metadata componenten

Verwijderd

Geen X-Path query mechanismen etc.

Zie ook hier [www.x-hive.com]

Verwijderd

Op vrijdag 15 maart 2002 10:12 schreef Goodielover het volgende:
Ben het niet met je eens Otis. Een RDBMS kent niet standaard DTD functionaliteit, geen XML-query functionaliteit, geen versiebeheer, geen metadata componenten
XML kent ook geen versiebeheer. XML IS een datastructuur-beschrijvingstaal. Meer niet. Geen programmacode, geen functionaliteit, NIETS meer. Alles wat je er mee wilt doen komt van programmatuur dat de XML interpreteert. exact eender aan wat een RDBMS doet met de data in de databasefiles eronder. Wat houdt bv een 'XML query' in? XML heeft geen commando's. Of bedoel je XPath queries?

DTD's zijn de basis van elke database: je datamodel in het format van je database, veelal in SQL-92 format.

XML is wel flexibeler vwb relaties tussen data in 1 tree, dan bv een gemiddeld rdbms. Ik zie echter in XML men nog niet zosnel OLAP cubes definieren, is wel mogelijk overigens.

Wat je los moet zien van elkaar zijn de data in een bepaalde structuur opgeslagen en de logica daarop. De logica op de structuur kan alle mogelijke fratsen uithalen op de structuur eronder. Wil je XML uitvoer? You got it! wil je XML aanleveren ? Kom maar op!.

Verwijderd

Ik denk dat XML-databases veelal het werk uit de handen van een programmeur nemen. X-hive bijvoorbeeld kan je aan de hand van XPath queries (en ondertussen vast al andere mechanismen) complete objecten (wel alleen in Java) terug geven. Intern werken deze databases natuurlijk soortgelijk aan RDMS. Je krijgt bij een XML-database gewoon al een heel stuk interfacing erbij.

Verwijderd

Op vrijdag 15 maart 2002 11:17 schreef XKB het volgende:
Geen X-Path query mechanismen etc.

Zie ook hier [www.x-hive.com]
Ja en? Wat is het verschil tussen:

<xsl:value-of select="/*"/>

en

SELECT * FROM Table

Syntax. Functioneel hetzelfde. Daar gaat het om. Kun je iets in XPath wel, wat je in SQL niet kunt: DAN heb je meerwaarde. Patternmatching is iets wat SQL wel kan, maar veelal traag. XPath/XSL(T) is verder een functionele taal, SQL een procedurele.

De vraag is: wat wil je doen? Waar heb je de XML voor nodig? XML gebruiken omdat het een buzzword is, is niet nuttig. XML gebruiken omdat het door iedere XML parser te interpreteren is, en met een XSLT sheet makkelijk te transformeren naar je eigen formaat, DAN praat je over dingen die er toe doen. Data opslaan in XML lijkt me leuk, maar IMHO niet de te prefereren weg. Ik zie geen enkele XML parser tabellen met een paar honderduizend records even snel inlezen en er bewerkingen op doen.

Verwijderd

Op vrijdag 15 maart 2002 11:37 schreef XKB het volgende:
Ik denk dat XML-databases veelal het werk uit de handen van een programmeur nemen. X-hive bijvoorbeeld kan je aan de hand van XPath queries (en ondertussen vast al andere mechanismen) complete objecten (wel alleen in Java) terug geven. Intern werken deze databases natuurlijk soortgelijk aan RDMS. Je krijgt bij een XML-database gewoon al een heel stuk interfacing erbij.
Precies. als layer OP de RDBMS in feite: waar je XML kunt gebruiken voor nuttige zaken (zie boven), daar zet je XML in. Voor de zaken waar andere alternatieven net zo goed of beter zijn, gebruik je geen XML.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Topicstarter
Hier ben ik het ook helemaal mee eens Otis. Het gat mij om een applicatie domein waar content die XML/SGML gestructureerd is wordt gearchiveerd en bewerkt. Andere meer relationele data moet je niet willen opslaan in een XML-database.
Toch heeft Software AG een "echte" XML-database omgeving Tamino genaamd. Mijn vraag is dus ook. Hebben mensen hier ervaring mee. Hebben mensen OO-databases ingezet voor dit doel? Voor ons is XML absoluut geen hype. Onze tent draait op toegankelijke en goed metagedateerde content.

  • esmit
  • Registratie: Augustus 2001
  • Laatst online: 14:59
Terug naar de vraag van de topicstarter:
Ik denk dat je bedoelt te vragen naar ervaringen met OODBMS-en. Ik heb (voor mijn werk) wel eens gekeken naar de bruikbaarheid van eXcelon (www.eXceloncorp.com). Wij hebben toen besloten het niet te gaan gebruiken wegens de prijs (pittig duur), onzekerheid over de performance en support en (dus) de levensvatbaarheid van het product.

Reken erop dat het leren werken met een object-georienteerd DBMS een flinke schok voor je kan zijn als je tot op het bot gewend bent in relationeel DMBS termen te denken.
Het is in een OODBMS bijvoorbeeld erg lastig om relaties te leggen, maar aan de andere kant heb je dat ook nauwelijks nodig omdat je xml-boomstructuurtjes terugkrijgt, dus alle relevante informatie van je object is bij de hand.
Wil je echter ook leuke rapportages draaien op je verzamelde data dan krijg je het moeilijk, aggregatie van gegevens is een stuk lastiger.

Je moet je je vooral afvragen of je de andere denkwijze van het benaderen van data eigen wilt gaan maken, met al het vallen en opstaan wat erbij hoort, denk ik.

*sig*


Verwijderd

Op vrijdag 15 maart 2002 11:56 schreef Goodielover het volgende:
Hier ben ik het ook helemaal mee eens Otis. Het gat mij om een applicatie domein waar content die XML/SGML gestructureerd is wordt gearchiveerd en bewerkt. Andere meer relationele data moet je niet willen opslaan in een XML-database. Toch heeft Software AG een "echte" XML-database omgeving Tamino genaamd. Mijn vraag is dus ook. Hebben mensen hier ervaring mee. Hebben mensen OO-databases ingezet voor dit doel? Voor ons is XML absoluut geen hype. Onze tent draait op toegankelijke en goed metagedateerde content.
Ik heb zelf geen ervaring met Tamino of databases zoals 'Jasmine' van CA (OO database). Waar ik wel ervaring mee heb is metadata behorende bij content. Dit is zeer goed te realiseren in gewone RDBMS-en. Of je dat traject opwilt is natuurlijk een 2e. In jouw geval zou ik zeker een ready-to-use applicatie zoeken die direct XML interpreteren kan, boeie hoe dat wordt opgeslagen. Voor iedere database vendor is 'XML' geen hype meer maar realiteit. (Voor veel developers overigens ook hoor :)) Dus ik denk niet dat je veel moeite zult hebben met het vinden van een applicatie die doet wat je wilt. Ik weet niet of je aan de producten van Computer Associates hebt gedacht (CA) maar hun Jasmine database was iig wel een van de 1e OO database die op de markt werd gebracht.

Verwijderd

wow.. Otis is weer goed bezig :D

Verwijderd

Op vrijdag 15 maart 2002 12:43 schreef Gordijnstok het volgende:
wow.. Otis is weer goed bezig :D
Het is dit of een saaie gui-generator schrijven met formafhandelingscode (aaaaarg). :) Op vrijdag ben ik dan eerder geneigd hier te posten, heel gek ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
XML is een database in ascii met hierarchische recordsets.
Als je puur naar de vraag-stelling kijkt heb je denk ik volledig gelijk. XML databases zijn echter toch wel fundamenteel verschillend van relationele databases (of beter: zouden moeten zijn). Het eerste verschil is uiteraard het hierarchische model, maar dat is zeker niet het belangrijkste. De kern van XML database is z'n semi-gestructureerdheid. XML databases houden het data-model aan van XML en dat is nu eenmaal vrij semi-gestructureerd, wat zo zijn voordelen heeft.

Een XML database moet dus niet alleen XML kunnen verwerken en XML kunnen uitpoepen, het moet in staat zijn semistructured data te beheren.
zolang je RDBMS model dat ondersteunt, kun je XML trees in je database kwijt.
Tja, dat zie ik dus niet zo zitten: allereerst is de mapping van XML data naar een relationele model alles behalve aantrekkelijk. Verder kan je zo maar op zeer matige wijze gebruik maken van het kenmerk van XML: semi-gestructeerdheid.
'echte xml database' is marketingpoop, xml is een representatievorm van data in ascii, geen RDBMS materiaal.
Tja, XML database is ook geen aantrekkelijk term voor de oplossing waarnaar we zoeken. Je moet in deze situatie abstraheren van de syntax van XML. Waar we naar op zoek zijn is een vorm van data-opslag die goede support biedt voor semi-gestructureerdheid (en uiteraard het werken met een hierarchisch model). In tegenstelling tot wat je zou vermoeden als je de huidige hype rond XML bekijkt, is dit echter absoluut niet nieuw: er bestaan al tijden data-modellen voor semi-gestructureerdheid en er waren zelfs al complete systemen die implementaties verschaften. Voorbeelden hiervan zijn het Lore systeem en in mindere mate Strudel. Het is dus absoluut geen marketingpoop, maar een fundamenteel ander systeem...
Oracle, SQLServer, DB2, allemaal halen ze de data eerst uit hun eigen format en transformeren dat naar XML.
Dat is dus heel leuk in de praktijk, maar verder absoluut niet iets wat ik een XML database zou willen noemen. Het worden vaker 'XML-enabled' databases genoemd en die term staat mij wel aan :) .
Alles wat je er mee wilt doen komt van programmatuur dat de XML interpreteert. exact eender aan wat een RDBMS doet met de data in de databasefiles eronder. Wat houdt bv een 'XML query' in? XML heeft geen commando's. Of bedoel je XPath queries?
Het relationele model is natuurlijk compleet anders dan het hierachische, semistructured model van XML. Een RDBMS opereert dus op een compleet ander model en is daardoor imho niet geschikt voor het behandelen van het model achter XML. XML Query, XPath en dergelijke zijn query-talen die wel gebaseerd zijn op dat model, daarom zijn ze interessant en daarom is het ook interessant om een database te hebben die goed kan omgaan met dit model :) .
Ja en? Wat is het verschil tussen:

<xsl:value-of select="/*"/>
en
SELECT * FROM Table

Syntax. Functioneel hetzelfde. Daar gaat het om.
Nou ja, ze opereren natuurlijk wel op een compleet ander model. Een query taal voor relationele sterk gestructureerde data is denk ik ongeschikt voor gebruik op het model van XML.
Kun je iets in XPath wel, wat je in SQL niet kunt: DAN heb je meerwaarde.
XML Query en XSLT zijn op hun slofjes relationeel compleet (voor XPath is dat wat lastig, want dat is uiteraard gewoon een taal voor path-expressies, alhoewel XPath 2.0 een heel eind gaat komen ;) ). SQL is uiteraard ook relationeel compleet.
Data opslaan in XML lijkt me leuk, maar IMHO niet de te prefereren weg. Ik zie geen enkele XML parser tabellen met een paar honderduizend records even snel inlezen en er bewerkingen op doen.
Tja, het is natuurlijk niet gezegd dat een XML database intern zijn data ook in de XML syntax opslaat... Ik hoop het niet ;) .

Hier kan je overigens een overzicht vinden van XML Database producten:
http://www.rpbourret.com/xml/XMLDatabaseProds.htm

Al deze wijsheid heb ik overigens opgedaan in het boek 'Data on the Web, from relations to semistructured data and XML'. Het is een boek waar erg vaak naar verwezen wordt. Het boek plaatst de huidige XML ontwikkelingen in een verfrissend perspectief en legt fraai de link naar het verleden en de theorie van semi-gestructureerde data. Als je echt in deze materie geinteresseerd bent is het wel een aanrader. Overigens is het al wel vrij oud (wat heet oud in deze tijd: 2000), dus misschien dat er ondertussen wel een betere versie is.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Het relationele model is natuurlijk compleet anders dan het hierachische, semistructured model van XML. Een RDBMS opereert dus op een compleet ander model en is daardoor imho niet geschikt voor het behandelen van het model achter XML. XML Query, XPath en dergelijke zijn query-talen die wel gebaseerd zijn op dat model, daarom zijn ze interessant en daarom is het ook interessant om een database te hebben die goed kan omgaan met dit model.
SQL is een set-taal, dwz, werkt met sets en doet daar operaties op. Ik zie het verschil niet echt met bv XPath, die exact hetzelfde doet. De interne representatie zal XPath voordelen opleveren tov SQL, maar semantisch gezien werken ze gelijk: selecteer uit de universe of discourse alle items die voldoen aan criteria. Binnen een relationele database zul je relaties tussen items gebruiken zodat SQL een betere oplossing kan vinden op de vraag die is gesteld. Dat een RDBMS allang niet meer platte relaties gebruikt voor het beantwoorden van vragen blijkt wel uit bv OLAP.

Dat XPath op een andere wijze de gebruiker zijn vragen laat samenstellen en wellicht op een andere wijze antwoorden gaat zoeken is wel duidelijk, maar IMHO is het semantisch niet verschillend met SQL.

Een XPath query voor /node1/node2/*/node4 is IMHO gelijk aan een query waarbij een relatie gelegd wordt tussen table 1 (node1) en table 2 (node2) en table 4 (node4) waarbij zoals gezegd XPath anders de vraag laat formuleren (en hier dus DUIDELIJK korter dan de SQL variant :P). In XML kun je node2 wel zonder relatie in een node1 hangen (zoals hierboven) maar of dat logisch is zonder een echte relatie, valt te betwijfelen. XML staat het toe, SQL kan niets met die relatie behalve als je expliciet die relatie legt in code. Wat weer neerkomt op de semantische relaties die er zijn tussen nodes in een XMLboom.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Otis: Ik zie het verschil niet echt met bv XPath, die exact hetzelfde doet. De interne representatie zal XPath voordelen opleveren tov SQL, maar semantisch gezien werken ze gelijk: selecteer uit de universe of discourse alle items die voldoen aan criteria.
Daar kan ik mij inderdaad wel in vinden, maar we gaan nu sterk richting te query-talen die een dbms mogelijk zou moeten maken. Toch een klein stukje: met XPath beschrijf je uiteraard paden in je XML content. Het hierarchische model is hierbij natuurlijk erg belangrijk, net als de semi-gestructuteerdheid. Het (tussen) resultaat van beide operaties zijn inderdaad simpelweg sets.

Het essentiele van mijn punt was echter dat het onzinnig is om XML data relationeel op te gaan slaan en daar XPath expressies op los te laten. RDBMS werken op een relationeel model en de mapping van het model van hierarchische semi-gestructureerde data mapt daar waardeloos naar. Als je een query dan gaat uitdrukken over dit (XML) model, maar deze geevalueerd moet worden over een relationeel model krijg je een chaos en een enorm inefficiente toestand. Het optimaliseren van queries zal lastig worden.

Als je semistructured data generiek wilt opslaan in een relationeel model krijg je namelijk maar twee tabellen. De ene tabel legt de link vast tussen twee knopen en de andere tabel beschrijft een leaf-value. Deze mapping leent zich uitermate slechts voor het opbouwen van result-sets uit XPath, XQuery, Lorel of een andere query-taal over semi-structured data.

Uiteraard kan je de situatie wel sterk verbeteren als je door middel van een schema meer informatie kunt verschaffen en als je data-model vrijwel niet semi-structured meer is. Veel voordelen van XML vallen dan echter ook weg.
maar IMHO is het semantisch niet verschillend met SQL.
We focussen hier erg op de semantiek van een query-taal. Het gaat echter niet alleen om wat je met een query-taal uitdrukt, maar ook om de mogelijkheden tot evaluatie van de qeury. Een query taal voor semi-gestructureerde data kan simpelweg het beste worden geevalueerd door een systeem die ook dit model kan beheren en een goed query-plan kan maken bij een query (en deze queries ook nog kan optimaliseren). Het relationele model is simpelweg te strak voor XML content en 'XML-enabled' databases verpesten het hierdoor imho voor een groot deel.
Een XPath query voor /node1/node2/*/node4 is IMHO gelijk aan een query waarbij een relatie gelegd wordt tussen table 1 (node1) en table 2 (node2) en table 4 (node4) waarbij zoals gezegd XPath anders de vraag laat formuleren
Inderdaad, maar het gaat niet alleen om de gebruikerskant... Diepe paden met eventueel zelfs semi-gestructureerde resulaten zullen vaak voorkomen in queries over een XML model. Het relationele model is hier niet voor gebouwd en in een SQL equivalent van deze query zal je waarschijnlijk een hopeloos slechte performance krijgen. Dan laat ik het probleem nog even liggen dat een node in XML verschillende inhoud kan hebben, wat in relationele modellen nogal lastig is.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Ik heb laatst een kleine studie naar Native XML Databases gedaan, en moet zeggen dat de bestaande me nogal onvolwassen overkwamen ;(. Ik heb X-Hive, Tahoma en nog eentje bekeken, en beide zijn al wel extreem duur ($50.000) maar qua functionaliteit vallen ze in het niets vergeleken met bv. SQL Server (dat nog goedkoper is ook!). Als enige voordeel bieden ze Native XML ondersteuning, maar daarmee heb je zowat alles gezecht. Het up-daten van data is een ramp, en het querieën is ook nog niet alles. Hoewel dat querieën vooral bij Tahoma toch tamelijk veel kan.

Maar tot nu toe ben ik (nog ?) niet onder de indruk.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Het grootste 'probleem' is denk ik ook dat we op dit moment met een fantastisch doorontwikkeld systeem te maken hebben: relationele databases. OO-databases hebben imho hierdoor nooit door kunnen breken (daar waren wel meer redenen voor uiteraard ;) )... Veel nieuwe technologie valt nogal snel in het niets bij deze fantastische systemen en vanwege de goede performance is het snel verleidelijk om ze in te zetten voor doeleinden waar ze eigenlijk niet voor bedoeld waren....

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1