<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Reflexiones y notas sobre el mundo de los servicios IT enfocados a soluciones de negocio. Reseñas sobre la elaboración de sistemas de información,valoración de frameworks, programación y opiniones sobre herramientas de desarrollo de aplicaciones &#187; simpledb</title>
	<atom:link href="http://www.esviable.es/tag/simpledb/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.esviable.es</link>
	<description>Reflexiones y notas sobre el mundo de los servicios IT enfocados a soluciones de negocio. Reseñas sobre la elaboración de sistemas de información,valoración de frameworks, programación y opiniones sobre herramientas de desarrollo de aplicaciones</description>
	<lastBuildDate>Sat, 22 May 2010 04:28:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Integración de Aplicaciones (Bases de Datos Relacionales y No Relacionales)</title>
		<link>http://www.esviable.es/2010/02/14/integracion-de-aplicaciones-bases-de-datos-relacionales-y-no-relacionales/</link>
		<comments>http://www.esviable.es/2010/02/14/integracion-de-aplicaciones-bases-de-datos-relacionales-y-no-relacionales/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 02:22:55 +0000</pubDate>
		<dc:creator>Efren</dc:creator>
				<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[aplicaciones web]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[integracion aplicaciones]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[no relacionales]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[relacionales]]></category>
		<category><![CDATA[rendimiento]]></category>
		<category><![CDATA[simpledb]]></category>

		<guid isPermaLink="false">http://www.esviable.es/?p=129</guid>
		<description><![CDATA[Aunque pueda ser aplicado a entornos corporativos modelo Intranet, el objetivo de este artículo es aportar una valoración objetiva sobre los sistemas de bases de datos disponibles en el mercado, de cara a crear un modelo de negocio basado en aplicaciones Web accesibles desde Internet.
En este artículo no se plantean las posibilidades del cloud computing.
Cada vez [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque pueda ser aplicado a entornos corporativos modelo Intranet, el objetivo de este artículo es aportar una valoración objetiva sobre los sistemas de bases de datos disponibles en el mercado, de cara a crear un modelo de negocio basado en aplicaciones Web accesibles desde Internet.</p>
<p>En este artículo no se plantean las posibilidades del <strong>cloud computing</strong>.</p>
<p>Cada vez son más los profesionales que se plantean el uso de <strong>bases de datos no relaciones para optimizar el rendimiento de sus Aplicaciones Web.</strong> La llegada al mercado de los <strong>ORM</strong> ha simplificado la portabilidad y dependencia de las aplicaciones web.</p>
<p><span id="more-129"></span>En base a mi experiencia, los entornos con miles de usuarios concurrentes en los que la mayor parte de la información se genera en base a las acciones de los usuarios experimentaran un mejor rendimiento a nivel de sistemas ( servicios y hardware) con un sistema no relacional.</p>
<p><strong>Integración de Aplicaciones</strong></p>
<p><strong> </strong></p>
<p>Cada vez es más corriente encontrar el concepto de <strong>Integración por Base de Datos Compartida</strong>, en donde se integran múltiples aplicaciones mediante el uso compartido de una única base de datos. Cuando se tiene estas Bases de Integración, es importante que todas las aplicaciones puedan recuperar fácilmente todos los datos compartidos, de ahí la importancia del acceso a los datos.</p>
<p>Ya es un hecho que las aplicaciones hablen entre ellas a través de documentos de texto (en general, <strong>XML, SOAP, JSON</strong>) sobre <strong>HTTP</strong>.</p>
<p>Si tomamos como protocolo de integración <strong>HTTP</strong>, podremos cambiar el modelo de Bases de Integración por Bases de Aplicación. Este cambio es profundo. Como primer paso permite un enfoque mucho más simple para el mapeo objeto-relacional. Rompe con la necesidad de los modelos de datos relacionales.<strong> Al integrar aplicaciones a través de  HTTP, deja de importar cómo una aplicación almacena sus datos, lo que a su vez significa que una aplicación puede elegir el modelo de datos que tiene más sentido para sus necesidades</strong>.</p>
<p><strong>Sistemas de Base de Datos, hoy</strong></p>
<p>¿Cuáles son las opciones que tenemos a la hora de escoger un sistema de base de datos para una aplicación web?</p>
<p><strong>Bases de datos relacionales clásicas</strong></p>
<ul>
<li>MySql</li>
<li>PostgreSQL</li>
<li>Oracle</li>
<li>MSSql Server</li>
</ul>
<p>No comentaré sus características porque considero que son bastante conocidas por la mayoría  del público que lea este artículo</p>
<p><strong>Bases de datos no relacionales / orientada a objetos</strong></p>
<p><strong>SimpleDB</strong></p>
<p>Tiene algunas limitaciones. La primera es que una consulta no puede durar más de 5 segundos. La segunda, que no hay más tipos de datos que cadenas de texto. Cada almacenamiento, recuperación o comparación se realiza en formato de cadena de texto (string), por lo que las comparaciones de fechas no funcionan a menos que se éstas se conviertan al formato ISO8601. La tercera, el tamaño máximo de cada cadena de texto es de 1024 caracteres, lo cual limita mucho los textos (como descripciones de productos, etc.) que puedes almacenar un atributo simple. Pero debido a que el esquema es dinámico y flexible, puedes superar esta limitación añadiendo atributos &#8220;DescripcionProducto1&#8243;, &#8220;DescripcionProducto2&#8243;, etc.  El límite por cada elemento es de 256 atributos. Mientras SimpleDB sea Beta, los dominios no pueden ser más grandes de 10GB, y las bases de datos enteras no pueden superar 1TB.</p>
<p>Una característica clave de SimpleDB es que utiliza un modelo de consistencia eventual. Este modelo de consistencia es bueno para la concurrencia, ya que después de haber cambiado un atributo en un elemento, los cambios no serán reflejados en las operaciones de lectura inmediatas a dicho cambio. Esto hay que tenerlo muy en cuenta en casos como, por ejemplo, cuando no quieras vender la última entrada de un concierto en el sistema de reserva para cinco personas debido a que los datos no fueron consistentes en tiempo de venta.</p>
<p><strong>Google AppEngine Datastore (BigTable)</strong></p>
<p>Google AppEngine Datastore está construido con BigTable, el sistema de almacenamiento interno de Google para la manipulación de datos estructurados. En sí mismo, Google AppEngine Datastore no es un mecanismo de acceso directo a BigTable, si no una especie de interfaz simplificada superpuesta a BigTable.</p>
<p>El AppEngine Store soporta muchos más tipos de datos y elementos que SimpleDB, incluyendo tipos de lista, que contiene colecciones dentro de un elemento simple.</p>
<p>Sin embargo, no podrás realizar interfaces con el AppEngine Datastore (o con BigTable) utilizando aplicaciones externas a la plataforma de servicios web de Google.</p>
<p><strong>CouchDB</strong></p>
<p>CouchDB es una base de datos orientada a documentos, open source y gratuita. Derivada del almacenamiento clave/valor, utiliza JSON para definir el esquema de un elemento. CouchDB está concebida para tender un puente al hueco que existe entre bases de datos relacionales y bases de datos orientadas a documentos gracias a las &#8220;vistas&#8221;, que pueden ser creadas dinámicamente a través de JavaScript. Estas vistas mapean los datos del documento en estructuras similares a tablas que pueden ser indexadas y consultadas.</p>
<p><strong>Mongo</strong></p>
<p>Mongo es el sistema de base de datos desarrollada en 10gen por Geir Magnusson y Dwight Merriman (recordemos de DoubleClick). Como CouchDB, Mongo es una base de datos orientada a documentos JSON, salvo que está diseñada para ser una verdadera base de datos de objetos, más que para un almacenamiento de clave/valor puro. Originalmente, 10gen enfocó poner juntos una pila completa de servicios web, aunque sin embargo, más recientemente ha tenido que ser reenfocado principalmente en la base de datos Mongo.<strong> </strong></p>
<p><strong>Cassandra</strong></p>
<p>Este sistema de base de datos fue desarrollado por Facebook, abandonando el prestigioso MySQL. Este sistema ya forma parte de la incubadora de proyectos de Apache. Cassandra es open source, altamente distribuido, y tiene un modelo de datos similar al de BigTable (Google). Entre sus características cabe destacar la alta disponibilidad, consistencia eventual, escalabilidad incremental, replicación optimista, administración mínima. Posee API para acceder desde lenguajes de programación tales como C++, C#, Java, Perl o PHP (entre otros).</p>
<p><strong>Por qué escoger una base de datos no relacional</strong></p>
<p>Entre otras, destacaría cinco puntos por los cuales se debería optar por una plataforma de base de datos no relacional clave/valor para una aplicación:<br />
1) <strong>Los datos están fuertemente orientados a documentos</strong>, haciéndolos más acordes y naturales con el modelo de datos clave/valor que con el modelo de datos relacional.<br />
2) El entorno de desarrollo está fuertemente orientado a objetos (<strong>ORM</strong>), y una base de datos clave/valor podría reducir la necesidad de código &#8220;tubería&#8221;.<br />
3) El almacenamiento de datos (<strong>escritura</strong>) es económico y se integra fácilmente con la plataforma de servicios web de tu proveedor.<br />
4) Disponen de una <strong>escalabilidad distribuida</strong>.</p>
<p>5) El futuro del almacenamiento de datos es necesariamente distribuido y con una o varias capas de caches de gran tamaño<br />
Esto no significa el fin de las bases de datos relacionales, de hecho son la elección apropiada para muchos escenarios pero si se debe tener en cuenta como profesional cuál es la elección apropiada para las necesidades y perspectivas de crecimiento y negocio del cliente.</p>
<p><strong>La escalabilidad, el rendimiento y la integración forman ya parte de las características de un negocio en Internet.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.esviable.es/2010/02/14/integracion-de-aplicaciones-bases-de-datos-relacionales-y-no-relacionales/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

