XML vs Base de Datos

18/05/2004 - 01:59 por bnal | Informe spam
Hola, quisiera ver que tan conveniente es obtener datos de
un archivo XML en vez de una BD, lo que sucede es que
quiero hacer una sistmea multiidioma y quiero que los
labels en los diferentes idiomas esten capturados en un
XML en vez de una BD...
es conveniente?
donde puedo investigar de esto?
gracias
 

Leer las respuestas

#1 CESAR DE LA TORRE [Microsoft MVP]
18/05/2004 - 19:58 | Informe spam
Depende de si la aplicación es mono-usuario (para ejecutarse solamente en un
PC) en cuyo caso no está mal que saque los datos de un fichero XML, siempre
y cuando no sea un volumen de datos muy grande en el fichero XML...

En cambio, si la aplicación va a ser una aplicación distribuida con
multiples usuarios (típica aplicación N-Tier probablemente basada en Web,
ASP.NET, componentes de negocio, componentes de acceso a datos, etc.)
obteniendo/actualizando datos muchos usuarios contra la misma aplicación (o
mismo servidor de aplicación) entonces es mucho mas conveniente que utilices
una base de datos como SQL Server (u Oracle, etc.).
También depende del volumen de datos. Si es pequeño, con el fichero XML está
bien, pero si el volumen de datos es muy grande, el acceso al fichero XML
puede volverse muy lento y consumir mucha memoria. Ten en cuenta que el
acceso a un fichero XML por ejemplo desde .NET (C#, VB.NET, etc.) se realiza
con clases del DOM, las cuales cargan en memoria el documento XML y luego lo
vas recorriendo jerarquicamente por los nodos/elementos XML. Esto si es un
volumen muy grande de datos puede llegar a ser lento, porque además se
recorre todo de forma serializada (aunque jerarquicamente). No tienes por
ejemplo la velocidad de las consultas de una base de datos con índices, etc.

En general y a no ser que sea una aplicación 'stand-alone' pequeña, yo
huiría de utilizar un fichero XML como repositorio. Sin embargo, si es muy
bueno utilizar XML como estandard/transmision de datos. Lo mejor en la
mayoría de las aplicaciones, incluso grandes y escalables (para cientos de
usuarios) es que guardes los datos en tablas de bases de datos como SQL
Server, pero después los datos que viajan y utiliza tu aplicación lo hagan
en forma de XML (serían fragmentos de XML). Por ejemplo, en SQL Server
puedes hacer que una consulta de una sentencia SQL te devuelva directamente
los datos en forma de XML. Mira información sobre "SELECT...FOR XML AUTO".

Una vez que tienes fragmentos de XML para tus consultas, puedes hacer muchas
cosas con ello, p.e. cruzarlo con XSLT y transformarlo de forma limpia en
HTML (para una aplicación WEB), o tratar esos fragmentos de XML tambien con
clases del DOM (jerarquías de elemntos XML en memoria), etc.
También utilizar XML es la base para después desarrollar XML Web-Services
(Servicios.Web.XML, de esto trata este foro de NEW) y publicar tus
procedimientos de aplicación para que puedan 'consumirlo' remotamente otras
aplicaciones.

Otra opción que tienes es incluso hace ralgo mixto, es decir, guardar
fragmentos XML en los campos de texto de la base de datos, de esa forma en
un único campo podrías guardar un valor en varios idiomas. :-). Yo lo
harías así, con XML pero basándome en SQL Server, o si es una aplicación
pequeña, utiliza MSDE (Microsoft Data Engine) que es la misma engine de SQL
Server, pero gratuita, para un número pequeño de conexiones simultáneas y el
propio MSDE no tiene la aplicación de gestión de la B.D. (Enterprise
Manager), pero instalando las herramientas cliente de SQL Server en
cualquier PC, puedes administrar un MSDE igual que si fuera un SQL Server.
Teniendo una aplicación basada en una base de datos MSDE, migrarlo a SQL
Server es cosa de 5 minutos, porque realmente MSDE es el mismo motor de base
de datos que tiene SQL Server, pero capado.
Además, MSDE como te digo es gratuito, puedes bajartelo de
www.microsoft.com/downloads.
Desde luego MSDE es mucho mejor por ejemplo que Microsoft Access.

César de la Torre
[Microsoft MVP - .NET XML WebServices]

Renacimiento
Microsoft GOLD Certified Partner
www.renacimiento.com




"bnal" wrote in message
news:e5c701c43c6b$05f66ea0$
Hola, quisiera ver que tan conveniente es obtener datos de
un archivo XML en vez de una BD, lo que sucede es que
quiero hacer una sistmea multiidioma y quiero que los
labels en los diferentes idiomas esten capturados en un
XML en vez de una BD...
es conveniente?
donde puedo investigar de esto?
gracias

Preguntas similares