Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Datos XML en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=82242)

juanelo 13-02-2013 17:10:52

Datos XML en Firebird
 
Que tal,
Antes que todo decirles que intenté por todos los medio conocidos por mi, usar el buscador del foro, pero no hubo manera que funcionara, siempre el mismo mensaje de error que no eran suficientes palabras para que el este funcione.
Pues les expreso mi duda, ¿en firebird 2.5.x hay forma de almacenar datos tipo XML?, ¿o la unica forma sería vía los BLOB?.
Me preocupa el hecho de usar BLOB ya que he oído por ahí que puede dejar muy lentas las consultas que involucren este campo.
Desde ya les agradezco su ayuda.
Gracias!

Al González 13-02-2013 17:51:35

Cita:

Empezado por juanelo (Mensaje 454976)
Antes que todo decirles que intenté por todos los medio conocidos por mi, usar el buscador del foro, pero no hubo manera que funcionara [...]

Hola Juanelo.

Hace tiempo que no te veía por aquí, que gusto leerte de nuevo. :)

No estoy al día con las últimas novedades de Firebird, pero no he visto que se mencione un tipo de campo XML en ese motor.

Respecto a cómo buscar, personalmente uso Google cuando quiero encontrar algo en los foros. Por ejemplo:

https://www.google.com/#hl=es&tbo=d&...clubdelphi.com

Teniendo Google bien catalogado a Club Delphi, ¿para qué usar el buscador del sitio? ;)

Lo que dices de que un campo Blob puede generar lentitud, habría que ver quién dice eso y por qué lo dice. Muchas veces se trata de malas experiencias por falta de un adecuado manejo de la base de datos.

Saludos y un abrazo.

Al.

Casimiro Notevi 13-02-2013 17:51:57

Hombre, para almacenar, depende de la longitud, si ocupa poco puedes usar el varchar(n) y si ocupan más entonces tendrás que usar BLOB, como en cualquier otra base de datos.

EDITO: veo que ha contestado Al González. Por cierto, las consultas de campos BLOB no deben ser lentas.

juanelo 13-02-2013 18:02:33

Gracias por sus respuestas, Al y Casimiro.
El tamaño medio de dichos XML es de 8ks cada uno, por lo que no creo que se pueda usar un campo VARCHAR. Me temo que el camino va a ser el BLOB.
Para terminar de abusar de su confianza, saben si este tipo de campo (BLOB) tiene alguna restricción en cuanto a caracteres contenidos, es decir, con "<", ">", "&", etc. (supongo que no, ya que deberían ser tratados como binarios según yo)
Gracias!

Casimiro Notevi 13-02-2013 18:08:49

Los BLOB en firebird tienen 2 "subtipos" principalmente, uno es el blob normal en el que almacenas "cualquier cosa" y el otro subtipo es el modo "texto", que como su nombre indica... es el indicado para tu caso.
Evidentemente, en ninguno de los tipos vas a perder caracteres.

Casimiro Notevi 13-02-2013 18:11:26

Antes de que preguntes, mira este hilo.

juanelo 13-02-2013 18:12:03

Cita:

Empezado por Casimiro Notevi (Mensaje 454985)
Los BLOB en firebird tienen 2 "subtipos" principalmente, uno es el blob normal en el que almacenas "cualquier cosa" y el otro subtipo es el modo "texto", que como su nombre indica... es el indicado para tu caso.
Evidentemente, en ninguno de los tipos vas a perder caracteres.

Te agradezco mucho la información, y pues a usar BLOBS tipo texto.
Gracias!

Al González 13-02-2013 18:23:07

Cita:

Empezado por juanelo (Mensaje 454989)
[...] y pues a usar BLOBS tipo texto.

^\||/

Yo los uso para guardar facturas electrónicas (CFDIs), y hasta ahora cero problemas.

Por cierto, a veces conviene tener uno o dos campos más de tipo Integer, VarChar, etcétera, con datos "clave" del documento XML. En mi caso, por ejemplo, tengo el campo CFD Blob texto (para el XML), pero además otro llamado FolioCFDI VarChar, que contiene un número especial que también está dentro del XML. Esto porque a veces es necesario encontrar un registro por cierto dato del XML, así que tenerlo en un campo aparte, debidamente indexado, ayuda a hacer más eficientes las búsquedas.

Saludos. :)

juanelo 13-02-2013 18:27:29

Cita:

Empezado por Al González (Mensaje 454990)
^\||/

Yo los uso para guardar facturas electrónicas (CFDIs), y hasta ahora cero problemas.

Por cierto, a veces conviene tener uno o dos campos más de tipo Integer, VarChar, etcétera, con datos "clave" del documento XML. En mi caso, por ejemplo, tengo el campo CFD Blob texto (para el XML), pero además otro llamado FolioCFDI VarChar, que contiene un número especial que también está dentro del XML. Esto porque a veces es necesario encontrar un registro por cierto dato del XML, así que tenerlo en un campo aparte, debidamente indexado, ayuda a hacer más eficientes las búsquedas.

Saludos. :)

Muchas gracias por el consejo Al, de hecho este campo será usador en su totalidad cuando sea requerido y la busqueda del registro que contenga este XML es atravez de una llave entera, no se tiene algún dato (aún) por el cual valga la pena buscar dentro del XML.
Saludos electrónicos :D

Delphius 13-02-2013 19:21:17

Firebird está diseñado para almacenar los campos blobs aparte de los campos normales. Esto le permite agilizar las demás operaciones sin verse afectado por el gran tamaño de los BLOBs. De modo que si para ciertas consultas no necesitas del campo BLOB, al recorrer el conjunto de datos se gana más velocidad... de hecho se comporta igual que cualquier consulta normal.
Sólo en el momento en que requieras hacer alguna operación sobre BLOBs Firebird "linkea" a estos. Aquí es donde puede haber cierta pérdida de velocidad.

Saludos,

Chris 13-02-2013 19:21:21

Cita:

Empezado por juanelo (Mensaje 454976)
Que tal,
Antes que todo decirles que intenté por todos los medio conocidos por mi, usar el buscador del foro, pero no hubo manera que funcionara, siempre el mismo mensaje de error que no eran suficientes palabras para que el este funcione.

La próxima vez pon en google: xml firebird site:clubdelphi.com. Desde hace años no uso el buscador de club, es muy improductivo :)

Chris 13-02-2013 19:30:03

A cómo te han dicho, lo mejor es que utilices el campo BLOB SUB_TYPE TEXT. Esto te permite utilizar las funciones de texto (SUBSTR, ATC, etc) sobre el contenido del campo. Seguro hay una ligera pena en el rendimiento, pero es poca.

Saludos!

Al González 13-02-2013 20:14:24

Cita:

Empezado por Chris (Mensaje 454995)
La próxima vez pon en google: xml firebird site:clubdelphi.com.

Ah mira, qué buena idea. :p (mensaje 2 ;))


La franja horaria es GMT +2. Ahora son las 05:46:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi