entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

MySQL: realizar un query con where dentro de campo xml

Hola a todos, tengo la siguiente duda con MySQL:

Como puedo realizar la búsqueda de un dato dentro de una estructura XML que esta en el campo de una tabla?

A parte de eso, esta tabla va a tener un crecimiento exponencial, ya que es la tabla principal de la aplicación, podría llegar a 50 millones de registros en un determinado tiempo,

entonces mi segunda pregunta: es prudente manejar un campo XML en esta tabla, y luego hacer búsquedas de un valor sobre este campo ?

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola,

se pueden hacer consultas sobre una estructura XML en un campo a partir de MySQL 5.1 usando la notación XPath:

http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html

A priori, no hay problema en tener almacenados 50 millones de registros, pero esto depende de qué información debas recuperar de la DB. Con buenos índices, no deberí haber problemas... pero no se puede indizar por un atributo de un XML en un campo.

Sin saber más del problema y de la desición de guardar XML no se puede decir mucho más, pero siempre hay que tener en cuenta que los RDBMS se comportan mucho mejor si los almacenamientos están al menos en 3ra Forma Normal... y un dato en XML es muy probable que esté violando la 1ra Forma Normal.

Saludos cordiales!

0voto

Dagnover Franco comentado

Muchas gracias por tu respuesta Leonardo, me sirvió un resto el enlace que me diste.

0voto

carlossevi comentado

Muy buena la respuesta de Leonardo. Yo personalmente evitaría a toda costa el uso de este tipo de campos porque no lo veo natural en cuanto a normalización y sobre todo por el hecho que apunta de que no puede indizarse un atributo del XML.

Evitaría tener una tabla de 50 millones de registros con un campo XML sobre el que vaya a aplicar algún tipo de filtrado a nivel de atributo, sobre todo teniendo en cuenta que va a ser la tabla de más importancia dentro de tu aplicación. La cosa es muy diferente si es un campo en el que se van a guardar y rescatar valores y no hay necesidad de indización.

Eso no quiere decir que haya casos de uso en los que no queda más remedio que hacerlo, aquí ya se entra en necesidades muy concretas de los proyectos que tenemos que entender que has contemplado.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta