2008-10-12 8 views
5

Tengo un sistema que genera una gran cantidad de documentos XML todos los días (del orden de 1 millón) y me gustaría poder almacenarlos e indexarlos para poder, por ejemplo, buscar todos los documentos con un determinado campo establecido en un valor dado.¿Qué base de datos tiene la mejor compatibilidad con XML?

Entiendo que existen fundamentalmente dos tipos de bases de datos XML, las que proporcionan soporte XML sobre una base de datos relacional convencional y las que son bases de datos XML "nativas". Dado que estoy abierto a usar cualquiera, ¿qué recomendarías?

Respuesta

3

No puedo darle un buen candidato, pero si quiere evitar elegir uno malo, evite Oracle XmlDB. Es lento y con errores como el infierno. Una de las peores extensiones que Oracle hizo a su DBMS.

+0

Gracias, que solo estaba buscando en él. –

1

Según las personas que trabajaron en él monetDB es bastante capaz de manejar xml. Básicamente, cuando quiera hacer xquery en los contenidos, quiere tener algo que pueda hacer eso correctamente. La estructura de un documento XML que es muy flexible y de longitud indeterminada es fundamentalmente diferente de la de un rdbms. Esto significa que las cosas deben almacenarse e indexarse ​​inteligentemente. Para los sistemas dbms tradicionales, es un atajo sencillo para almacenar el xml como un BLOB (objeto binario). Pero los BLOB generalmente no están indexados y viven principalmente fuera del almacén de datos primario. Para analizar correctamente xml, el sistema debe ir al xml cuando se almacena. MonetDB aparentemente hace esto.

6

Microsoft SQL Server tiene soporte para columnas XML. Esto es más que solo compatibilidad con BLOB/TEXT.

Puede usar columnas XML de forma no estructurada, donde SQL Server se asegurará de que sean correctas. Esto permite el almacenamiento de documentos XML arbitrarios dentro de SQL Server, pero al mismo tiempo asegura que está tratando con XML y no solo con bytes/caracteres arbitrarios. SQL Server le permite consultar sobre esto usando XQuery.

También puede crear columnas XML que se ajusten a un esquema utilizando XSD. Lo que es más interesante, SQL Server permite indexar el XML para que sus consultas XPath tengan un buen rendimiento. Para obtener más información, consulte "What's New for XML in SQL Server 2008". (Aunque la mayor parte del soporte XML existe en SQL Server 2005.)

0

Definitivamente pruebe con MS-SQL, Oracle y otros sistemas existentes compatibles con XQuery.

Pero, si las consultas basadas en XML que necesita son conocidas de antemano, podría ser más fácil simplemente almacenar el XML en un BLOB y agregar un campo indexado o dos con una copia del elemento XML relevante (s).

3

DB2 9.x con soporte PureXML es una posibilidad.

4

También es posible que desee verificar MarkLogic Server o eXist.

Si tiene una cantidad moderada de contenido (un par de GB), entonces eXist hará. Más allá de eso, es probable que desee examinar MarkLogic.

Puede descargar y verificar ambos, ya que eXist es gratuito y MarkLogic tiene una licencia comunitaria para que juegue con él.

4

Si está buscando una db XML nativa, definitivamente sugiero Sedna. Brillante soporte para desarrolladores también.

1

A partir de DB2 Viper, IBM DB2 comenzó a proporcionar compatibilidad nativa para el almacenamiento de datos XML, así como la consulta de datos XML.

DB2 está diseñado para optimizar el acceso a XML y datos relacionales y estas capacidades están disponibles para C++, .NET, COBOL, Java y PHP.

XQuery es un lenguaje nuevo utilizado para consultar datos XML en DB2

consulta de demostración:

create table person(name varchar(20), data xml); 

insert into person values('bane', XMLPARSE(DOCUMENT ' 
<person> 
<first-name>Tom</first-name> 
<last-name>Hardy</last-name> 
<mobile>89898989</mobile> 

</person> 
' STRIP WHITESPACE)) 


some simple xQueries 

SELECT * 
FROM googolplex.person 
WHERE xmlexists('$s[person/first-name="bane"]' PASSING person AS "s"); 
Cuestiones relacionadas