🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #164

Re: Base de datos XML open/free?

#164
From: Pascal J. Bourguignon
Date: Fri, 24 Sep 2010 16:41
136 lines
5221 bytes
raul.garate@SINESTOgmail.com (Raul_G) writes:

> Jos� Miguel Santib��ez wrote:
>
>> En el cap�tulo anterior (news:i7fsvb$cp1$2@jagger.tie.cl), *Er MAjNifico* 
>> <eatyou@spammer.org> dijo:
>
>>> Estimados maestros,
>>> alguien sabe de una buena base de datos para XML que sea del mundo open 
>>> o que se free?
>>> Se agradecen aportes! :-)
>>> 
>
>> ehh... no entend� que es lo que quieres... �alg�n administrador open source 
>> de XML?
>
>> -- 
>>                            Jose M. Santiba�ez A.
>>                              <jms@nivel5.cl>
>>                            <http://caos.cl/jms>
> Lo que el muchacho quiere, es una base de datos pero que cumpla con los 
> siguientes requisitos:

>  - Que sea para XML

�Qu� quiere decir esto?

Si se trata solamente de almacenar una cadena XML de manera persistente,
se puede usar qualquier base de dato SQL o otro.

Pero quizas se quiere tambi�n poder hacer busquedad en esa base de datos
como se hace con XPATH, para extraer sub-arboles del XML directamente de
la base de dato.

> Yo lo entend� clarito, pero aun con 20 a�os de experiencia no he visto 
> nunca una BD as�.

En efecto, no se conoce base de datos especificamente hechas para
estructuras XML.  Pero se podria mapear una estructura XML sobre una
base de datos SQL o OO.


Por ejemplo, podriamos tener tablas:

create table elements (
   id   int not null,
   tag  varchar(32)  not null,
);

create table attributes (
   element_id int not null,
   name  varchar(32)  not null,
   value varchar(256)  not null
);

create table contents (
   parent_element_id int not null,
   index             int not null,
   child_element_id  int,
   text_id int
);

create table texts (
   id int,
   text varchar(32768)
);


y mapear:

<input>
<device type="serial-port"><name>ttyS0</name><speed>9600</speed></device>
<device type="tcp-ipv4"><address>192.168.1.1</address><port>10020</port></device>
</input>

en:

elements
========
id        tag
--------  --------
1         "input"
2         "device"
3         "name"
4         "speed"
5         "device"
6         "address"
7         "port"

attributes
==========
element_id  name     value
----------  -------  ------------
2           "type"   "serial-port"
5           "type"   "tcp-ipv4"

texts
=====
id        text
--------  --------------------
1         "\n"
2         "ttyS0"
3         "9600"
4         "\n"
5         "192.168.1.1"
6         "10020"
7         "\n"

contents
========
parent_element_id  index  child_element_id  text_id
-----------------  -----  ----------------  -------
1                  1      NULL              1
1                  2      2                 NULL
1                  3      NULL              4
1                  4      5                 NULL
1                  5      NULL              7
2                  1      3                 NULL
2                  2      4                 NULL
3                  1      NULL              "ttyS0"
4                  1      NULL              "9600"
5                  1      6                 NULL
5                  2      7                 NULL
6                  1      NULL              "192.168.1.1"
7                  1      NULL              "10022"


Aparte el problema clasico en SQL de no poder hacer queries procesando
de un solo golpe hierarquias, (tenemos que hacer proceduras almacenadas,
o varias queries para buscar elementos relacionados en la hierarquia),
se puede hacer queries bastante interesante en el XML, como colectar
todos los elementos con un tag determinado, etc.


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/
Technical Details
Message-ID: <8739szqejw.fsf@kuiper.lan.informatimago.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
References: <i7fsvb$cp1$2@jagger.tie.cl> <Xns9DFCA58405655jmsnews@200.54.144.211> <9332091848f4cfb69977f1c59b31e656$1@usenet.no-ip.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,12eb4dbe891644ff
X-Google-NewGroupId: yes
X-Google-Attributes: gide499fe1f24,domainid0,public,usenet
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: pjb@informatimago.com (Pascal J. Bourguignon)
Newsgroups: chile.comp.programacion
Subject: Re: Base de datos XML open/free?
Date: Fri, 24 Sep 2010 18:41:55 +0200
Organization: Informatimago
Lines: 136
Message-ID: <8739szqejw.fsf@kuiper.lan.informatimago.com>
References: <i7fsvb$cp1$2@jagger.tie.cl>
 <Xns9DFCA58405655jmsnews@200.54.144.211>
 <9332091848f4cfb69977f1c59b31e656$1@usenet.no-ip.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: individual.net vDZ/BRDAuGcQgA1KTOoWXAzTnkhH/T1yFuYTV4pYlhbw5Wmjmk
Cancel-Lock: sha1:ZDU4MmMwNzk1MDkwMjY3ZmY2YmFiZWIwZDI5NmFiMTQ5Nzk5MjZiOA== sha1:+H6GrFek6hJnj/zfidAz+1H6vA0=
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA
      oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9
      033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac
      l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR
      mV+hO/VvFAAAAABJRU5ErkJggg==
X-Accept-Language:         fr, es, en
X-Disabled: X-No-Archive: no
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)