<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

	<channel>
		<title>Magazine - bases-de-datos</title>
		<link>http://www.genbetadev.com</link>
		<description>
Información sobre el sector de los desarrolladores, el desarrollo de aplicaciones, para móviles, desarrollo web, bases de datos, frameworks y lenguajes de programación		</description>
		<pubDate>2013-06-19 12:40:45</pubDate>

		<generator>http://www.genbetadev.com</generator>
                    <item>
      <title><![CDATA[MariaDB y SkySQL unen fuerzas para llevar a MariaDB a lo más alto]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/mariadb-y-skysql-unen-fuerzas-para-llevar-a-mariadb-a-lo-mas-alto</link>
      <guid>http://www.genbetadev.com/bases-de-datos/mariadb-y-skysql-unen-fuerzas-para-llevar-a-mariadb-a-lo-mas-alto</guid>
      <pubDate>Fri, 26 Apr 2013 07:34:45 +0000</pubDate>

      <author>Pedro Gutiérrez</author>
      <description><![CDATA[
      <p><img alt="MariaDB y SkySQL" src="http://img.genbetadev.com/2013/04/il_logo_di_mariadb37740-1.jpg" class="centro_sinmarco" /></p>

	<p>Si hubiese que hacer apuestas sobre el futuro de <strong>MariaDB</strong> y <strong>MySQL</strong> yo apostaría por MariaDB sin dudarlo (<a href="http://www.genbetadev.com/respuestas/mariadb-acabara-definitivamente-con-mysql">e incluso muchos de vosotros pensáis igual</a>), pero cada día que pasa el fork libre, pero libre de verdad, de MySQL recibe muchos más apoyos y ahora ha saltado la noticia de que <strong>SkySQL va a colaborar con la Fundación MariaDB</strong> (y por lo menos es una empresa que se dedica a proveer bases de datos de software libre y no al negocio de las bases de datos de pago, que es algo que da más confianza).<br />
<!--more--><br />
El principal objetivo de esta unión es, como ellos dicen, conseguir un <strong>NewSQL</strong> (como concepto), que pretende llevar a MariaDB a un nivel de rendimiento superior que el de algunos de los mejores gestores de bases de datos NoSQL y mejorar totalmente la interacción con otras bases de datos NoSQL (como Cassandra o LevelDB), accediendo a otras bases de datos con nuevos motores instalables.</p>

	<p>Lo positivo de la unión con SkySQL y no con otra compañía es que ésta basa su negocio en proveer bases de datos open source de calidad y que ofrezcan el mejor resultados para su clientes, lo que indica que va a hacer todo lo posible para mejorar este proyecto, pero sin influir en sus principios, siendo independiente el proyecto de MariaDB y SkySQL y garantizando que será libre siempre.</p>

	<p>SkySQL colaborará con MariaDB proveyendo de fondos, ayudando con el desarrollo del proyecto e impulsando su uso entre su gama de servicios, siendo sin duda uno de los mejores apoyos que ha recibido MariaDB. Lo siguiente es que las distribuciones de Linux que no se han pasado a MariaDB den el paso, los hosting tomen también esta opción y las empresas a la hora de realizar cambios en su sistema de gestión o lo implementen de nuevo opten por MariaDB y ya sabemos lo que pasará con MySQL.</p>

	<p>Más información | <a href="http://www.skysql.com/news-and-events/press-releases/skysql-merges-with-mariadb-developers">SkySQL</a></p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[¿MariaDB acabará definitivamente con MySQL?: la pregunta de la semana]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/mariadb-acabara-definitivamente-con-mysql-la-pregunta-de-la-semana</link>
      <guid>http://www.genbetadev.com/bases-de-datos/mariadb-acabara-definitivamente-con-mysql-la-pregunta-de-la-semana</guid>
      <pubDate>Wed, 10 Apr 2013 09:28:28 +0000</pubDate>

      <author>Pedro Gutiérrez</author>
      <description><![CDATA[
      <p><img alt="MariaDB" src="http://img.genbetadev.com/2013/04/il_logo_di_mariadb37740.jpg" class="centro_sinmarco"></p>

	<p>Tras la decadencia que está sufriendo <strong>MySQL</strong> desde que está en las manos de <strong>Oracle</strong> se están poniendo de moda distintos nuevos gestores de bases de datos, ya sean NoSQL (como <em>MongoDB</em> o <em>SimpleDB</em>) o sea un <em>fork</em> de <em>MySQL</em> y esté triunfando, <a href="http://www.genbetadev.com/formacion/cual-ha-sido-el-ultimo-curso-o-tutorial-de-formacion-que-has-hecho-la-pregunta-de-la-semana">como es el caso de <strong>MariaDB</strong></a>, que por su comunidad, facilidad de migración y sus mejoras respecto a <em>MySQL</em> está cada vez más presentes en el mundo del desarrollo y en el del <em>hosting</em>.</p>

	<p>Con esta pregunta de la semana queremos saber si creéis que acabará desapareciendo <em>MySQL</em> o <em>MariaDB</em> o por el contrario se dejará de lado los gestores de bases de datos que hacen uso del lenguaje <strong><span class="caps">SQL</span></strong>.</p>

<blockquote><a href="http://www.genbetadev.com/respuestas/mariadb-acabara-definitivamente-con-mysql">¿MariaDB acabará definitivamente con MySQL?</a></blockquote>

	<p><!--more--><br />
Recuerda que para responder, debéis hacerlo desde nuestra sección de <a href="http://www.genbetadev.com/respuestas/mariadb-acabara-definitivamente-con-mysql">Genbeta Dev Respuestas</a> y en este artículo los comentarios están cerrados. Gracias.</p>

	<p>En la pregunta de la semana pasada queríamos saber: <a href="http://www.genbetadev.com/respuestas/cuanta-diferencia-hay-entre-lo-que-cobras-y-tus-expectativas-salariales">¿Cuánta diferencia hay entre lo que cobras y tus expectativas salariales?</a>. Y las respuestas son un poco pesimistas (algo abundante en estos días), pero la respuesta mejor valorada es la de <a href="http://www.genbetadev.com/usuario/vcspider">Vcspider</a> con la siguiente respuesta:</p>

	<p><blockquote>La verdad es que tengo un sueldo medianamente decente, no puedo comprarme una casa de 200m2 en el centro ni conducir un Ferrari pero tengo dinero para pagar mis gastos imprescindibles y los de mi familia (hipoteca, agua, luz, comida, ropa, <span class="caps">ADSL</span>, teléfono) y aun me da para algún capricho y para ahorrar un poquito así que me considero bien pagado.</p>

	<p>Mi problema no es con lo que yo gano sino con lo que ganan otros con trabajos sin responsabilidad, riesgo o dificultad, normalmente resultado de enchufismo o peloterismo, con una productividad nula y demasiado remunerados. También creo que algunos trabajos físicos deberían de pagarse mejor, y lo pagaría con lo que le quitamos a los apoltronados.</blockquote></p>

	<p>Muchas gracias a todos por participar. Nos vemos la semana que viene con las mejores respuestas a la pregunta que os hemos propuesto. Y recordad que la sección de <a href="http://www.genbetadev.com/respuestas">Genbeta Dev Respuestas</a> está a vuestra disposición para resolver todas las dudas que tengáis.</p>

	<p>En Genbeta Dev Respuestas | <a href="http://www.genbetadev.com/respuestas/mariadb-acabara-definitivamente-con-mysql">¿MariaDB acabará definitivamente con MySQL?</a></p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[¿MariaDB será el MySQL del futuro?]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/mariadb-sera-el-mysql-del-futuro</link>
      <guid>http://www.genbetadev.com/bases-de-datos/mariadb-sera-el-mysql-del-futuro</guid>
      <pubDate>Tue, 02 Apr 2013 05:34:51 +0000</pubDate>

      <author>Pedro Gutiérrez</author>
      <description><![CDATA[
      <p><img alt="MariaDB" src="http://img.genbetadev.com/2013/04/il_logo_di_mariadb37740.jpg" class="centro_sinmarco" /></p>

	<p>Hoy en día <strong>MySQL</strong> suele ser la primera opción a la hora de usar bases de datos (por lo menos en el ámbito del software libre o del <em>low cost</em>), <strong>MySQL</strong> ha sufrido algunos cambios estos últimos años, en la que podemos destacar el cambio de propietario (de <strong>Sun</strong> a <strong>Oracle</strong>) y poco más, ya que en las manos de <strong>Oracle</strong> no está evolucionando como se podría esperar.</p>

	<p>Pero por suerte <strong>MariaDB</strong>, el proyecto <em>open source</em> derivado de <strong>MySQL</strong> que más está dando que hablar últimamente gracias a la adopción como gestor de base de datos por defecto de varios sistemas operativos <strong><span class="caps">GNU</span>/Linux</strong> de gran relevancia (como Fedora y OpenSUSE entre otros) y por el paso de <strong>Wikipedia</strong> a este gestor de bases de datos.<br />
<!--more--></p>

<h2>¿Qué es MariaDB?</h2>

	<p>Como muchos sabréis <strong>MariaDB</strong> es un derivado de <strong>MySQL</strong> que va al compás de <strong>MySQL</strong>, aunque <strong>MariaDB</strong> suele tener un retraso al liberar la versión estable, equivalente en nomenclatura a la de <strong>MySQL</strong>, para poder implementar sus mejoras y realizar las pruebas pertinentes.</p>

	<p>Pero el gestor de bases de datos <strong>MariaDB</strong> gana a <strong>MySQL</strong> por varios motivos, el primero y más claro es que funciona igual que <strong>MySQL</strong> y por ello no hace falta realizar ningún cambio para usar este gestor, actúa igual y usa los mismos conectores con las distintas plataformas y lenguajes a las que se puede conectar (como <strong><span class="caps">PHP</span></strong> o <strong>Perl</strong> entre otros), hasta usa el mismo archivo de configuración, el <code>my.ini</code>.</p>

	<p>Otras mejoras son la implementación de nuevos motores de almacenamiento y añadir versiones mejoradas de algunos (sin descuidar los que hay en <strong>MySQL</strong>, como <code>InnoDB</code> o <code>MyISAM</code>), se ha mejorado también <code>INFORMATION_SCHEMA</code> añadiendo información extra que no encontramos en <strong>MySQL</strong> y otro cambio que me ha llamado también la atención es que en <strong>MySQL</strong> las &#8220;<em>vistas</em>&#8220; o consultas almacenadas que podemos usar rápidamente leían todas las tablas que estaban implicadas en la propia consulta, independientemente de si se captasen datos de la misma y por eso en <strong>MariaDB</strong> se ha añadido la funcionalidad de no leer esas tablas para ahorrar esfuerzos y mejorar el rendimiento.</p>

<h2>¿Por qué puede ser el futuro de MySQL?</h2>

	<p>Desde mi punto de vista personal la pregunta que me hago es: <em>¿por qué no?</em>, realmente <strong>MySQL</strong> lo gestiona <strong>Oracle</strong> y obviamente no podemos esperar de una empresa que vende un producto que es una base de datos, además gestione un proyecto de software libre para que se beneficie todo el mundo y sin pagar por ello.</p>

	<p>La razón anterior simplemente sirve para hacernos una idea del avance que probablemente tendrá <strong>MySQL</strong>, pero <strong>MariaDB</strong> en cambio está cada vez teniendo un mayor respaldo de la comunidad, además de estar avalada por desarrolladores que participaron en el proyecto original de <strong>MySQL</strong> y otros tantos más de prestigio.</p>

<h3>¿Sería dura una transición a MariaDB?</h3>

	<p>En el caso de que se abandonara el proyecto original muchas empresas serían las que optarían por dar el cambio y es que realmente no hay que emplear grandes esfuerzos, tiene una total compatibilidad con los archivos de <strong>MySQL</strong>, la ventaja es que está vitaminado y más optimizado, por lo que un <em>copia pega</em> podría solucionar toda la transición a <strong>MariaDB</strong> y no deberíamos de tocar ni un carácter el código que usemos.</p>

	<p>Más información | <a href="https://mariadb.org/">MariaDB</a></p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[¿Te suena el término "Big Data"?, a Obama si ]]></title>
      <link>http://www.genbetadev.com/actualidad/te-suena-el-termino-big-data-a-obama-si</link>
      <guid>http://www.genbetadev.com/actualidad/te-suena-el-termino-big-data-a-obama-si</guid>
      <pubDate>Tue, 13 Nov 2012 07:01:03 +0000</pubDate>

      <author>Pedro Gutiérrez</author>
      <description><![CDATA[
      <div class="caption-img"> <img alt="Imagen de "La Cueva"" src="http://img.genbetadev.com/2012/11/1352401118617The-Cave-para-detalledn.jpg" class="centro" /> <span>Imagen de &#8220;La Cueva&#8221;</span> </div>

	<p>El término <strong>Big Data</strong> hace referencia a los sistemas que capturan, analizan, buscan y visualizan <strong>grandes conjuntos de de datos</strong>, que últimamente están dando mucho que hablar en sectores como la meteorología, la genómica, la biología y ahora cada vez más en el sector de las finanzas o en el de los buscadores de Internet y empresas que estudian a la sociedad.</p>

	<p>¿Y que tiene que ver esto con el desarrollo y que tiene que ver Obama?, como es de esperar estos análisis los tienen que hacer supercomputadoras con softwares muy complejos, como el que creó un grupo de &#8220;<em>cerebritos</em>&#8220; durante dos años para que <strong>Barack Obama</strong> ganara estas elecciones.<br />
<!--more--><br />
Este grupo formado por programadores, ingenieros, sociólogos y matemáticos estuvieron confinados en &#8220;La Cueva&#8221; (el nombre es en honor a las ventanas que no tuvieron la oportunidad de tener, estando totalmente aislados) desarrollaron una base de datos con todos los datos electorales, sondeos, listas de donantes, datos recogidos por encuestadores&#8230; todo esto fue dividido por franjas de edad, sexo, raza, y por el lugar donde viven.</p>

	<p>Todo lo anterior entra dentro de lo normal, y no haría falta un supercomputador durante dos años para analizar estos datos, pero entra en juego otro factor: <strong>Facebook</strong> y <strong>las redes sociales</strong>, que fueron rastreadas letra por letra analizando a cada potencial votante en búsqueda de esas personas que estaban dudosas, recogiendo sus aficiones, perfiles de consumo, preferencias, círculos de amigos&#8230; y esto fue la clave (aunque no parezca mucho), pero con <em>solo</em> estos datos y el gran computador trabajando hicieron las primeras pruebas, intentado que las personas hicieran microdonaciones (y si, funcionó, <strong>recaudaron mil millones de dólares</strong>), gracias a ese software de estadística y previsión hecho por ese conjunto de genios.</p>

	<p>El software que usaron en los últimos meses de campaña iba más lejos que analizar parámetros básicos de la población, sino que era capaz de saber con precisión que personas eran las que estaban dudosas y crearon una <em><span class="caps">APP</span></em> que transmitía automáticamente (cosa normal cuando no se mira los permisos que se otorgan en Facebook) mensajes elaborados por sociólogos que mandaban mensajes por Facebook animando a acudir a las urnas, a bajarse la <em><span class="caps">APP</span></em> y sobre todo a votar a Obama (<strong>y el 20% picó y se la bajó</strong>). Es más, por poner un ejemplo este software identificó como grupo de población dudosa a las mujeres menores de 35 años del condado de Dade, que casualmente la gran mayoría seguían la serie <em>Sons of Anarchy</em>, donde casualmente se llenó de publicidad diseñada para convencer a las personas que cumplían este perfil.</p>

<h3>Resumen</h3>

	<p>Lo importante del artículo no es la creación de la mayor máquina política creada jamás, sino la importancia que tendrá el <strong>Big Data</strong> para las empresas, que serán capaces de encontrar las necesidades de la población incluso antes de que haya la necesidad, todo gracias a el software creado para este análisis y las impresionantes máquinas necesarias para procesar esta cantidad ingente de datos.</p>

	<p><img alt="Smarter Computering de IBM" src="http://img.genbetadev.com/2012/11/smarter-computing.jpeg" class="centro" /></p>

	<p>En este terreno cada vez se está avanzando muchísimo más (que está más ligado a la potencia de procesamiento casi que al software), ya que dentro de poco se almacenarán y analizarán miles de <em>petabytes</em>, formado por todo tipo de información. En estos momentos <strong><span class="caps">IBM</span></strong> se podría decir que encabeza el sector con soluciones de una envergadura enorme, acabando de presentar hace poco lo que denomina <a href="http://www.ibm.com/smarter-computing/es/es/index.html">la nueva generación de &#8220;<strong>Smarter Computing</strong></a>, que al igual que otras tecnologías similares están pensadas para analizar grandes cantidades de datos en tiempo real y también están hechas para autoprotegerse de amenazas que pueden afectar a la seguridad de sus sistemas y a la de su valiosa información.</p>

	<p>Aunque el artículo no estaría completo si nombramos solo a <strong><span class="caps">IBM</span></strong> y no nombramos a la mayor empresa de recolección, guardado, análisis y <em>venta</em> de datos: <strong>Google</strong>, que analiza en tiempo real datos de millones de páginas web, arrastrando su información de un lado a otro de sus resultados de búsqueda, sin contar las datos personales de los hábitos en la web de cada individuo, con su popular herramienta de análisis web (<em>Google Analytics</em>), su plataforma de publicidad (<em>Google Adsense</em>) y todo su ecosistema, que al fin y al cabo nos da de forma gratuita&#8230; y a cambio reciben &#8220;<strong>Big Data</strong>&#8220;, de una envergadura enorme, tan grande que la información que recibió Obama para ganar las elecciones sería irrelevante.</p>

	<p>Más información | <a href="http://es.wikipedia.org/wiki/Big_data">Wikipedia &#8211; Big Data</a> y <a href="http://www.publico.es/internacional/445113/el-arma-total-de-obama-para-vencer-a-romney-un-megacerebro-informatico-que-controla-facebook#ixzz2BWjzUjgG">Publico</a> (como ganó las elecciones Obama)</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Aumenta el interés por los ataques de inyección SQL]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/aumenta-el-interes-por-los-ataques-de-inyeccion-sql</link>
      <guid>http://www.genbetadev.com/bases-de-datos/aumenta-el-interes-por-los-ataques-de-inyeccion-sql</guid>
      <pubDate>Sun, 04 Nov 2012 03:18:33 +0000</pubDate>

      <author>Pedro Gutiérrez</author>
      <description><![CDATA[
      <p><img alt="SQL inject" src="http://img.genbetadev.com/2012/11/logo-mysql1.jpg" class="centro_sinmarco" /></p>

	<p><strong>Imperva</strong> ha realizado un estudio llamado &#8220;<em>Monitorizando los Foros de los Hackers</em>&#8220; (y casualmente se encarga de monitorizar los foros frecuentados por <em>hackers</em> en búsqueda de patrones que señalen que intereses están más extendidos) y los resultados apuntan directamente a que los ataques <em>DDoS</em> y los <em><span class="caps"><span class="caps">SQL</span></span> injection</em> están presentes en el 19% de las conversaciones.</p>

	<p>Muchos de los que hayáis programado con <strong><span class="caps"><span class="caps">PHP</span></span></strong> y MySQL (siguiendo el caso del ejemplo que os expongo abajo) os habréis puesto a implementar medidas de seguridad contra este tipo de ataques, pero muchos otros puede que no hayan parado a pensar en esto, y no solo ahora, sino hace años, cuando se crearon muchos de los actuales sistemas de algunas empresas donde puede que no se implementaran las medidas necesarias para evitar estos ataques y aún no se hayan solventado, ya que este mismo estudio revela que menos del 5% del presupuesto de TI va destinado a mejorar la seguridad de estos sistemas que pueden contener datos importantes (y expuestos a ataques).<br />

<!--more--><br />

<h2>Un repaso rápido a <span class="caps"><span class="caps">SQL</span></span> injection</h2></p>

	<p>En resumen este tipo de ataques aprovechan las consultas que se han realizado en una página para introducir un código añadido que actúa como queramos.</p>

	<p>Por ejemplo, si tenemos una consulta en la que le pedimos que nos muestre un dato determinado que está asociado a una <em>ID</em> numérica (como: <code>`id` = &#39;1&#39;</code>) y alguien puede <strong>jugar con las comillas</strong> y añadir algún código indeseado (como sería borrar una tabla: <code>`id` = &#39;1</code><span style="text-decoration:underline"><code>&#39;; DROP TABLE `Usuarios`;&#39;</code></span><code>&#39;</code>).</p>

	<p>Os voy a poner un ejemplo funcional muy básico (<a href="http://www.genbetadev.com/seguridad-informatica/cuanto-tardaria-un-hacker-en-reventar-nuestra-contrasena">como el del otro día con el <del>super</del> ataque por fuerza bruta</a>), en este lo único que hay es un archivo <strong><span class="caps"><span class="caps">PHP</span></span></strong> que accede a una base de datos y busca en los registros una entrada donde coincida el usuario y la contraseña con la que le hemos mandado por un formulario.</p>

	<p>Para realizar el ejemplo necesitas lo siguiente:<br />

<ul><br />

<li>5 minutos.</li><br />

<li>Un servidor <span class="caps"><span class="caps">PHP</span></span> y MySQL (debería de dar igual local o en la nube).</li><br />

<li>Tener desactivadas las <strong>magic_quotes</strong> (que evitan este tipo de ataques, y me ha tocado desactivar mediante una apaño que hay en <a href="http://php.net/manual/es/security.magicquotes.disabling.php">php.net</a>), tenerlo en cuenta por si misteriosamente no va la inyección.</li><br />

</ul></p>

<h3>La base de datos</h3>

	<p>Lo primero es crear la base de datos donde estarán los usuarios, que se llamará <code>PruebaSQL</code>, que contendrá la tabla <code>Usuarios</code> donde tenemos a tres usuarios con los siguientes datos (por cada usuario):<br />

<ul><br />

<li><strong>ID</strong>: identificación numérica única (que se autoincrementa).</li><br />

<li><strong>User</strong>: nombre del usuario.</li><br />

<li><strong>Pass</strong>: contraseña del usuario (sin ningún tipo de encriptación ni hash, más que nada para que fuese más visual, ya que con este ejemplo funcionaría igual).</li><br />

</ul></p>

<pre class='prettyprint'><code>id	name		pass
+-------+---------------+-------
1	Pedro		qwerty
2	Carlos		12345
3	Manuel		password
</code></pre>

<h3>El <span class="caps"><span class="caps">PHP</span></span></h3>

	<p>Este código es muy simple, tanto como una consulta que comprueba si existe algún registro que coincida el usuario y la contraseña con el que le hemos mandado por el formulario y si coincide (o hacemos coincidir por otros medios) nos avisa devolviéndonos el <code>usuario</code> y la <code>id</code> del usuario.</p>

<pre class='prettyprint'><code>if(isset($_GET[&#39;login&#39;])){	//Si la URL tiene la variable &quot;login&quot; establecida se ejecuta
	$mysql=mysql_connect(&#39;localhost&#39;,&#39;Usuario_DB&#39;,&#39;Contraseña_DB&#39;);	//Nos conectamos al servidor MySQL
	mysql_select_db(&#39;PruebaSQL&#39;,$mysql);	//Seleccionamos la DB sobre la que trabajaremos
	//Pasamos las variables conseguidas por el formulario mediante POST
	$user=$_POST[&#39;user&#39;];
	$password=$_POST[&#39;password&#39;];
	//Creamos la consulta con los datos del formulario
	$query=mysql_query(&quot;SELECT * FROM `Usuarios` WHERE `user`=&#39;&quot;.$user.&quot;&#39; AND `pass`=&#39;&quot;.$password.&quot;&#39;&quot;);
	$resp=mysql_fetch_array($query, MYSQL_ASSOC);	//Leemos la respuesta
	//Si hay una &#39;id&#39; establecido en la respuesta se ejecuta (si los datos son incorrectos no se ejecuta)
	if(isset($resp[&#39;id&#39;])){
		echo &quot;Sesión iniciada con ID: &quot;.$resp[&#39;id&#39;].&quot; (&quot;.$resp[&#39;user&#39;].&quot;)&quot;;	//Nos indica que hemos acertado
	}else{
		echo &quot;Fallo en la autentificación&quot;;	//Hemos fallado en la autentificación
	}
	mysql_close($mysql);	//Cerramos la conexión con la base de datos
}
</code></pre>

<h3>El <span class="caps"><span class="caps">HTML</span></span></h3>

	<p>Al igual que el <span class="caps"><span class="caps">PHP</span></span> este formulario es muy simple, manda el usuario y la contraseña por <code>POST</code> a la misma página a la que esta pero pasándole la variable &#8220;login&#8221; (el equivalente a <code>index.php?login=si</code>).</p>

<pre class='prettyprint'><code>&lt;;form action=&quot;?login=si&quot; method=&quot;post&quot;&gt;
	User		&lt;;input name=&quot;user&quot;&gt;&lt;;br&gt;
	Password	&lt;;input name=&quot;password&quot;&gt;&lt;;br&gt;
	&lt;;input type=&quot;submit&quot;&gt;
&lt;;/form&gt;</code></pre>

<h2>Realizar el ataque</h2>

	<p>Voy a dar por hecho que todos sabemos lo que es una base de datos.<br />

Para realizar el ataque lo que realmente haremos es mandarle unos datos erróneos al servidor y en la contraseña <strong>añadiremos la inyección de <span class="caps"><span class="caps">SQL</span></span></strong>, que consiste en añadir a esta misma consulta otra que nos devolverá los mismos datos, pero solo le necesitamos establecer la <code>id</code> (y como hay dos consultas y la primera no devuelve nada cogerá la segunda, inyectada).</p>

<pre class='prettyprint'><code>#El usuario y la contraseña que mandamos son &quot;Error&quot;, y se haría esta consulta:
SELECT * FROM `Usuarios` WHERE `user`=&#39;Error&#39; AND `pass`=&#39;Error&#39;
#Y en este ejemplo veremos el resultado de la inyección del SQL
SELECT * FROM `Usuarios` WHERE `user`=&#39;Error&#39; AND `pass`=&#39;&#39; UNION SELECT * FROM `Usuarios` WHERE `id` = &#39;1&#39;
</code></pre>

	<p>Para conseguir el resultado de la inyección <span class="caps"><span class="caps">SQL</span></span> tenemos que inyectar el propio código que modificará la consulta (en el campo de la contraseña del formulario):</p>

<pre class='prettyprint'><code>&#39; UNION SELECT * FROM `Usuarios` WHERE `id` = &#39;1
</code></pre>

<h3>Probarlo nosotros mismos</h3>

	<p>Este ejemplo se puede probar sin muchas complicaciones, creamos la base de datos, añadimos la misma tabla y añadimos el archivo <span class="caps"><span class="caps">PHP</span></span> con el <span class="caps"><span class="caps">HTML</span></span> incluido y tirando.</p>

	<p>Pero como se que a muchos os dará pereza pasar toda esta odisea he subido <a href="http://lab.xitrus.es/PruebaSQL/" target="_blank">el ejemplo</a>, podéis probar a identificaros con el usuario y la contraseña que ya sabéis (las mismas que la de la tabla de Usuarios), y posteriormente probar metiendo el código inyectado, y podéis probar con distintas <code>ID</code>.</p>

	<p>Vía | <a href="http://www.csospain.es/Los-ataques-de-inyeccion-SQL-acaparan-el-interes-de-los-hack/seccion-actualidad/noticia-127487"><span class="caps"><span class="caps">CSO</span></span> España</a></p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Cómo de mal está tu base de datos en un periquete ]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/como-de-mal-esta-tu-base-de-datos-en-un-periquete</link>
      <guid>http://www.genbetadev.com/bases-de-datos/como-de-mal-esta-tu-base-de-datos-en-un-periquete</guid>
      <pubDate>Sun, 07 Oct 2012 08:04:03 +0000</pubDate>

      <author>Fernando Siles</author>
      <description><![CDATA[
      <p><img alt="como de jodida esta tu base de datos" src="http://img.genbetadev.com/2012/10/650_1000_Captura de pantalla 2012-10-07 a la(s) 11.57.57.png" class="centro_sinmarco" /></p>

	<p>Domingo. Y los domingos en <a href="http://www.genbetadev.com">Genbeta Dev</a> son para las curiosidades, para echarnos unas risas y seguir desconectados, que el fatídico lunes está a la vuelta de la esquina. Hoy os presentamos <strong>Howfuckedismydatabase.com</strong>, una hilarante web donde, proporcionando cual es <strong>tu base de datos</strong> te ofrecen un <strong>diagnóstico muy profesional de como de jodida está</strong>&#8230; pero profesional en plan Pazos en &#8216;Airbag&#8217;, <em>ya tu sabeh</em>&#8230;<!--more--></p>

	<p>Ahora mismo está disponible el diagnóstico para <strong>Postgre, MySQL, <span class="caps">MSSQL</span>, Oracle, <span class="caps">SQL</span> Lite, MS Access y bases de datos NoSQL</strong>. Ve pinchando en todos los enlaces y pártete el pecho de la risa. Y ojo, será una parida de web pero hay consultoras carísimas que no te dan mucha más información de tus bases de datos. Además, para que no todo sea risa y diversión, te recomiendan libros y guías para <em>desjoder</em> tu base de datos. Todo un detalle.</p>

	<p>Pd1: lo mismo esta web es más antigua que el Fortran y todos la conocéis pero yo no la había visto en mi vida hasta esta semana y lo cierto es que me ha hecho llorar de la risa.</p>

	<p>Pd2: la gente detrás de esta genial web tienen otra de mucha utilidad para linuxeros de pro: <strong>Howfuckedismydistro.com</strong>. No apta para talibanes del software libre y/o gente sin sentido del humor.</p>

	<p>Vía | <a href="http://howfuckedismydatabase.com/">Howfuckedismydatabase.com</a> (a través de un tuit de <a href="https://twitter.com/asiermarques/status/252770235524993026">@asiermarques</a>)</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Diseño emergente en la base de datos]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/diseno-emergente-en-la-base-de-datos</link>
      <guid>http://www.genbetadev.com/bases-de-datos/diseno-emergente-en-la-base-de-datos</guid>
      <pubDate>Mon, 20 Aug 2012 10:39:34 +0000</pubDate>

      <author>josejuan</author>
      <description><![CDATA[
      <p><img alt="SQL emergente" src="http://img.genbetadev.com/2012/08/sql_emergente.jpg" class="centro_sinmarco" /></p>

<p>Es muy frecuente al desarrollar aplicaciones que los requisitos no estén completamente definidos desde el principio y/o que éstos sufran cambios a corto y medio plazo, bien porque son descartados, modificados o porque aparecen otros nuevos. Es por ésto que las metodologías ágiles establecen estrategias que se adaptan a dichos precarios escenarios.</p>

<p>Carlos Ble en su post <a href="http://www.carlosble.com/2012/08/diseno-emergente-tambien-para-la-base-de-datos/">Diseño emergente, también para la base de datos</a> describe una forma de trabajar a nivel de base de datos mediante un enfoque emergente. Si bien muchos programadores llevan utilizando estrategias ágiles (o emergentes) desde hace mucho tiempo, y que lo que Carlos describe también se realiza desde hace mucho tiempo; la clarividencia con la que técnicas concretas (Scrum, Kanban, &#8230;) y Carlos en su artículo ponen de manifiesto un determinado aspecto es, a mi juicio, muy interesante y revelador, porque te hace pensar de forma consciente sobre problemas que llevas resolviendo, <i>&#8220;inconscientemente&#8221;</i>, desde hace mucho tiempo.</p>

<p>Así, con independencia de lo correcto o no de cada solución, del tipo de contexto que cada uno tengamos que resolver (y que serán diferentes), el compartir nuestras estrategias hace que cada cual piense en sus propios problemas y tome de cada uno aquello que le resulta útil.</p>

	<p><p>Por tanto, te propongo un ejemplo práctico de cómo normalmente yo aplico el enfoque de <b>Diseño emergente en la base de datos</b>.</p><br />
<!--more--></p>

<h2>Breve reseña al diseño emergente</h2>

<p>Cuando alguien diseña algo (un avión, una casa, un coche, &#8230;) es habitual planificar todos y cada uno de los aspectos que finalmente formarán parte del producto. Así, todo es diseñado y planificado de antemano. A modo de ejemplo llevado al extremo, podemos imaginar un sencillo y humilde tornillo ubicado en la parte interna de uno de los motores de los ya obsoletos transbordadores espaciales de la <span class="caps">NASA</span>. Es muy probable que dicho tornillo esté presente explícitamente en multitud de planos (no en todos, claro, en algunos estará presente de forma implícita) y que su tamaño, dimensiones y composición química fueran diseñados o elegidos realizando un cálculo concreto. Quien montara el motor, puso ese tornillo y no otro, porque así <b>estaba decidido de antemano</b>.</p>

<p>Un carpintero, puede construir una silla a partir de planos similares a los usados en la <span class="caps">NASA</span>, pero será probable que no se le indique el tipo concreto de tachuela que debe usar ni cuantas debe poner. Así, cuando el carpintero tenga que poner las tachuelas a la silla, <b>decidirá en ese mismo momento</b> que tipo de tachuela pondrá y con que separación. Es decir, el diseño final de la silla <b>ha emergido</b> del propio proceso de construcción, en oposición a una cuidadosa planificación previa.</p>

<p>Llevado al extremo, podríamos imaginar a un artista frente a un tronco de madera; el artista no sabe (no ha decidido aún) que figura va a esculpir, empieza observando el material, va esquilmando los trozos de madera agrietados o dañados, golpeando aquí y allá. Al poco vislumbra la imagen de un caballo rampante y comienza a dar grosera forma al material, pero aún no sabe cual será la posición de las patas, la cola, la crin, &#8230; todos y cada uno de los golpes del artista <b>son espontáneos</b> no hay absolutamente ningún tipo de diseño previo, cuando termina su obra, podemos decir que <b>el caballo rampante ha emergido del proceso</b> realizado por el artista.</p>

<p>En el diseño de software y concretamente en el agilismo, el diseño emergente se produce al aplazar decisiones, análisis, trabajos y/o requisitos sin que ello impida comenzar a desarrollar <b>y utilizar</b> las aplicaciones y sistemas involucrados. En cierto momento, <b>surge la necesidad</b> de implementar un requisito que ni siquiera se había comentados con anterioridad, este nuevo requisito <b>a emergido</b> del uso y/o desarrollo de la aplicación.</p>

<h2>¿Es necesario el diseño emergente en la base de datos?</h2>

<p>El artículo de Carlos me gustó porque puso de manifiesto un aspecto que ha estado presente desde siempre, pero que él ha sabido exponer de forma explícita y no como <i>&#8220;un problema menor&#8221;</i> con el que nos encontramos a diario. En los siguientes párrafos, intentaré transmitir el tipo de problema que se trata.</p>

<p>Como en cualquier elemento de software, un cambio en una parte afecta a otras y las bases de datos (concretamente relacionales) no son una excepción. Por ejemplo el añadir, quitar o cambiar las propiedades de un campo de una tabla, requiere normalmente ajustar otras partes del sistema. En casos concretos se dispone de herramientas que automatizan ciertos procesos (eg. <span class="caps">CRUD</span>), <b>pero en general</b>, cualquier cambio aparentemente nimio, exige un esfuerzo apreciable en otras partes del sistema.</p>

<p>El uso de <b><span class="caps">ORM</span></b> (Object relational mapping) es hoy muy común y permite automatizar buena parte del trabajo que hace un <b><span class="caps">DBA</span></b> (DataBase Administrator) tiene bastantes (y ágiles) ventajas. Algunos de los problemas que voy a describir se mitigan o eliminan completamente usando un <span class="caps">ORM</span> pero otros se mantienen igualmente. A mi en particular sólo me gusta usar <span class="caps">ORM</span> en aplicaciones compactas que hacen uso intensivo de un framework (eg. un portal web), en general, yo me siento muy cómodo teniendo en todo momento control sobre la base de datos, por lo que asumiré en lo siguiente que no se usa un <span class="caps">ORM</span>.</p>

<p>Respecto de las bases de datos, algunos ejemplos habituales que me vienen a la cabeza son los <i>&#8220;campos zombies&#8221;</i>, que serían aquellos que se introducen en el diseño pero que luego nunca se usan o se usan realmente poco, están en la base de datos, pero como si no estuvieran, de forma similar tendríamos las <i>&#8220;tablas zombies&#8221;</i>; otro ejemplo podrían ser las <i>&#8220;tablas tocapelotas&#8221;</i> que en diseño se han definido como relaciones <i>&#8220;uno a cero o uno&#8221;</i> pero cuya partición termina siendo un infierno porque realmente debería ser una única tabla y en todas las consultas se arrastra un horripilante <i>&#8220;<span class="caps">LEFT</span> <span class="caps">OUTER</span> <span class="caps">JOIN</span>&#8221;</i> que nunca o casi nunca actúa (siempre se hace el <span class="caps">JOIN</span>); otros muchos ejemplos provienen de un exceso o falta de normalización, a veces el diseño está muy normalizado penalizando en demasía el rendimiento obligando o bien a desnormalizar el diseño o a crear estructuras adicionales de cacheado; el caso contrario es una falta de normalización (cuando en diseño se piensa que el producto cartesiano en la práctica será pequeño, pero no es así) que produce tablas con ingentes cantidades de registros (innecesarios).</p>

<p>En definitiva, existen muchas situaciones en las que el mejor diseño no está claro (los motivos de que no estén claros son muy variados y pocas veces debidas a cuestiones técnicas) y es sólo cuando la aplicación se pone en marcha que <b>emergen</b> esos fallos dejando patente un mal diseño.</p>

<h2>Diseño emergente en la base de datos</h2>

<p>Como solución a los problemas mencionados, Carlos propone incluir en las tablas que lo requieran un campo en el que serializar todos aquellos datos cuyo diseño no esté claro aún. Por ejemplo, podemos llamar al campo <b>xdata</b> y serializar a <b>json</b>, <b>xml</b>, &#8230; después utiliza esa información en la capa de aplicación.</p>

<p>Yo utilizo ese esquema cuando los datos dentro de <b>xdata</b> no tengo que procesarlos internamente en la base de datos, habitualmente porque hay aplicaciones externas y personalizables que hacen uso de ella. Aun así, rara vez directamente en un campo <b>xdata</b> como tal, yo prefiero normalizar ese campo, veamos como.</p>

<h2>La tabla de registro</h2>

<p>Muchos conoceréis el <i>&#8220;Windows Registry&#8221;</i>, realmente no es mas que una gran tabla que asigna un valor a una clave. La estructura arbórea que surge, proviene únicamente de fijar delimitadores en las claves (como una ruta de archivo en <b>/home/josejuan/datos/listado.txt</b>).</p>

<p>Un resumen muy general de mi estrategia preferida sería precisamente esa, tener una tabla que almacena pares de <b>&#8220;clave + valor&#8221;</b>.</p>

	<p><p>Por poner un ejemplo, los diferentes estados en los que puede estar un semáforo, se podrían codificar como:</p><br />
<script src="https://gist.github.com/3403233.js"> </script></p>

	<p><p>De esta forma, no es preciso crear una tabla semáforo para almacenar los posibles estados en que puede estar. Si por ejemplo cuestionamos la necesidad de tener un campo <b>&#8220;telephone 3&#8221;</b> en la tabla <b>&#8220;<span class="caps">USER</span>&#8221;</b> se podría codificar en la misma tabla anterior como:</p><br />
<script src="https://gist.github.com/3403242.js"> </script></p>

<p>Por claridad y rendimiento, suelo tener tablas de registro especiales para conjuntos de datos especiales. Por ejemplo, si nuestro sistema cuenta con entidades <i>&#8220;<span class="caps">EMPRESA</span>&#8221;</i> será habitual tener una tabla de registro especial para esta entidad.</p>

<p>Me consta que este tipo de estrategias de una u otra forma es usada por muchos programadores.</p>

<h2>Ejemplo práctico</h2>

	<p><p>Por escribir algo de código y clarificar la estrategia anterior, supongamos que estamos creando una aplicación (usando <b>Extreme programming</b>) y que por el momento únicamente necesitamos registrar cuentas de acceso para los usuarios, en tal caso, con la siguiente tabla sería suficiente:</p><br />
<script src="https://gist.github.com/3403297.js"> </script></p>

	<p><p>El <b>Product Owner</b> rápidamente empieza a pedir requisitos que si bien están claros, son coherentes y son validables, tenemos serias dudas de su utilidad práctica final (algo subjetivo mientras no se demuestre lo contrario) ¿serán necesarios los cuatro campos de teléfono, dos de fax, el correo principal, el secundario y otros tantos campos <i>&#8220;de imperiosa necesidad&#8221;</i>?. Tras ver las orejas al lobo, decidimos cumplir con los requisitos usando una tabla de registro, que podría ser ésta:</p><br />
<script src="https://gist.github.com/3403320.js"> </script></p>

	<p><p>Por tema de eficiencia, hemos dejado dos campos valor: uno pequeño y con datos en la página de registro y otro blob de acceso lento. Como verás, el campo pequeño es de tipo <b>varbinary</b> porque será capaz de almacenar cualquier tipo de dato que sea necesario (nosotros almacenamos un número como un número, no como una cadena, una fecha como una fecha, etc&#8230;).</b></p>

	<p><p>Para probar el rendimiento de las consultas, vamos a generar 10.000 registros de usuario con aproximadamente unos 100.000 registros de valores en la tabla de registro. Esto se puede hacer con el siguiente script:</p><br />
<script src="https://gist.github.com/3403328.js"> </script></p>

<p>Los datos han generado para cada usuario la siguiente información:</p>
<ul>
<li><b>last_access</b>, un campo fecha con la fecha de último acceso del usuario.</li>
<li><b>error_count</b>, un campo numérico con el número de errores asociados al usuario.</li>
<li><b>message_status</b>, un campo de texto con un mensaje de estado asociado al usuario.</li>
<li><b>message list</b>, que es <b>una tabla</b> asociada al usuario con un histórico de mensajes (mensaje 1, mensaje 2, &#8230;).</li>
</ul>

<p>Para acceder a los datos, se puede utilizar una vista que simule una tabla, de forma que se minimizan los cambios a realizar en las consultas (básicamente añadir o quitar campos) en caso de cambios en la estructura. Por ejemplo la siguiente vista permite acceder (indizada adecuadamente, es decir, es eficiente) a los campos de registro de cada usuario:</p><br />
<script src="https://gist.github.com/3403517.js"> </script><br />
<p>(Esta consulta es estándar pero puede implementarse mediante <b><span class="caps">PIVOT</span> <span class="caps">TABLE</span></b> que en ciertos escenarios puede tener un mejor rendimiento).</p>

	<p><p>Para acceder al histórico de mensajes, también podemos simular una tabla a partir de la de registro, por ejemplo:</p><br />
<script src="https://gist.github.com/3403522.js"> </script></p>

<p>En ambos casos, a partir de una tabla de registro a la que pueden añadirse estructuras adicionales, hemos creado dos <i>&#8220;tablas virtuales&#8221;</i> sin tener que modificar la estructura de la base de datos.</p>

	<p><p>Por ejemplo, para listar los usuarios con más de 9 errores en los últimos 3 días bastaría escribir:</p><br />
<script src="https://gist.github.com/3403714.js"> </script></p>

	<p><p>O bien para saber cual es el número medio de mensajes y longitud media por mensaje de todos los usuarios bastaría con hacer:</p><br />
<script src="https://gist.github.com/3403724.js"> </script></p>

<p>Como vemos, podríamos incluso realizar vistas y consultas sobre datos (claves) que ni siquiera existen.</p>

<h2>Utilidad de la tabla de registro</h2>

<p>La utilidad de la tabla de registro es bastante limitada como medio de evolucionar <i>&#8220;emergentemente&#8221;</i> una aplicación. En mi opinión, otras técnicas ágiles, usar <span class="caps">ORM</span> o refactorizar serán probablemente mejores alternativas que trabajar en el diseño y estructura de la aplicación apoyándose en la tabla de registro.</p>

<p>Además, aunque depende del tipo de aplicación, cambios en la lógica de negocio e interface de usuario son mucho más costosos que en la base de datos, un <b><span class="caps">DBA</span></b> experimentado no tiene problemas en añadir, eliminar o modificar objetos de la base de datos, quizás son algo molestos, sobre todo si lo usas en combinación con una herramienta <span class="caps">CASE</span> y datos en vivo, pero nada que no se pueda hacer en unos minutos.</p>

<p>Sin embargo, la tabla de registro es insustituible como medio para añadir de forma rápida y versátil estructuras que no suponen un coste añadido o a posteriori. Para almacenar valores de informe, de histórico, datos constantes, de configuración, &#8230; y en general, datos que no tendrán un coste o cobertura muy alta en la aplicación (si un dato es altamente actualizado, accedido, mapeado, &#8230; desde muchos puntos, será preferible que tenga <i>&#8220;entidad propia&#8221;</i>).</p>

<p>Así, yo la uso indiscriminadamente como forma de disponer de un gestor <b>No-<span class="caps">SQL</span></b> dentro de mi gestor <b>Sí-<span class="caps">SQL</span></b>.</p>

<p>Vía | <a href="http://www.carlosble.com/2012/08/diseno-emergente-tambien-para-la-base-de-datos/">Diseño emergente, también para la base de datos</a>.<br />

Más información | <a href="http://en.wikipedia.org/wiki/Emergent_Design">Emergent Design</a>.<br />

Más información | <a href="http://en.wikipedia.org/wiki/Windows_Registry">Windows Registry</a>.<br />

Más información | <a href="http://en.wikipedia.org/wiki/Extreme_programming">Extreme programming</a>.<br />

Más información | <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">Object relational mapping</a>. <a href="http://en.wikipedia.org/wiki/Database_administrator">Database Administrator</a>.<br />

</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Twitter nos deja ver (y tocar) su fork de MySQL ]]></title>
      <link>http://www.genbetadev.com/actualidad/twitter-nos-deja-ver-y-tocar-su-fork-de-mysql</link>
      <guid>http://www.genbetadev.com/actualidad/twitter-nos-deja-ver-y-tocar-su-fork-de-mysql</guid>
      <pubDate>Mon, 16 Apr 2012 16:30:00 +0000</pubDate>

      <author>Fernando Siles</author>
      <description><![CDATA[
      <p><img alt="twitter mysql" src="http://img.genbetadev.com/2012/04/twitter-mysql.jpg" class="centro_sinmarco" /></p>

	<p><strong>Twitter</strong>, el gigante del microblogging, usa MySQL como base de datos para la gran mayoría de su sistema (tweets, timelines, datos del usuario&#8230;). Como es lógico en una web que tiene que soportar un tráfico tan brutal, han tenido que, aprovechando el carácter <strong>open source</strong> (de momento) del <span class="caps">SGBD</span> de Oracle, <strong>tunear MySQL</strong> al máximo para que ofrezca un rendimiento óptimo (aquellos pioneros que estábamos en Twitter en 2007 podemos dar fe de que la web estaba más tiempo caída que de pie). La novedad está en que la semana pasada Twitter decidió <strong>compartir con el resto de la humanidad este fork</strong> propio de MySQL.</p>

	<p>Este <strong>Twitter MySQL</strong> está basado en <strong>MySQL 5.5</strong>, está <a href="https://github.com/twitter/mysql">disponible en Github</a>, se comparte con una <strong>licencia <span class="caps">BSD</span></strong> y Twitter hace hincapié en que lo comparte con fines ilustrativos y que no se va a encargar en ningún caso de bugs, compatibilidades o mantenimiento. Las <strong>características más novedosas</strong> de Twitter MySQL se pueden agrupar en cinco campos:</p>

<ul>
<li>Nuevas <strong>variables de estatus</strong>.</li>
<li>Optimización del acceso a memoria no uniforme (<strong><span class="caps">NUMA</span></strong>).</li>
<li><strong>Timeout de las querys</strong> del lado del servidor.</li>
<li>Exportación y restauración del <strong>pool de conexiones</strong> de manera más liviana.</li>
<li>Optimización para <strong>dispositivos <span class="caps">SSD</span></strong>.</li>
</ul>

	<p>Pues ya sabes, <em>forkea</em>, cacharrea y luego nos cuentas porque buena pinta desde luego tiene, visto desde fuera.</p>

	<p>Vía | <a href="http://engineering.twitter.com/2012/04/mysql-at-twitter.html">Twitter Engineering</a><br />
Descarga | <a href="https://github.com/twitter/mysql">Github</a><br />
En Genbeta Dev | <a href="http://www.google.com/url?q=http://www.genbetadev.com/actualidad/mysql-deja-de-ser-libre">MySQL deja de ser libre (nuestra inocentada del día)</a><br />
En Genbeta Dev | <a href="http://www.google.com/url?q=http://www.genbetadev.com/desarrollo-web/twitter-libera-bootstrap-su-framework-css-para-aplicaciones-web">Twitter libera Bootstrap, su framework <span class="caps">CSS</span> para aplicaciones</a></p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Llega MySQL Cluster 7.2 "70 veces más veloz" y con soporte NoSQL]]></title>
      <link>http://www.genbetadev.com/bases-de-datos/llega-mysql-cluster-72-70-veces-mas-veloz-y-con-soporte-nosql</link>
      <guid>http://www.genbetadev.com/bases-de-datos/llega-mysql-cluster-72-70-veces-mas-veloz-y-con-soporte-nosql</guid>
      <pubDate>Mon, 27 Feb 2012 06:47:51 +0000</pubDate>

      <author>Oscar Campos</author>
      <description><![CDATA[
      <p><img id="image78810" src="http://img.genbetadev.com/2012/02/logo-mysql.jpg" class="centro_sinmarco" alt="logo-mysql.jpg" /></p>

	<p>Oracle ha anunciado una nueva release de <a href="http://en.wikipedia.org/wiki/MySQL_Cluster">MySQL Cluster</a>. En esta nueva release, se soporta el uso de <strong>NoSQL</strong> a través de una <span class="caps">API</span> C++ un protocolo <strong>memcached</strong> y una interfaz <strong>REST</strong>.</p>

	<p>Por otro lado, el acceso a la interfaz <span class="caps">SQL</span> de toda la vida se realiza de la forma habitual (<span class="caps">JDBC</span>, etc). Oracle asegura que en esta nueva release se ha mejorado la velocidad al ejecutar consultas complejas por setenta, una información algo exagerada quizás.</p>

	<p>Como siempre, Oracle lanza una release de su software propietario <strong>MySQL Cluster Manager</strong> que acompaña a MySQL Cluster (libre) y que tiene como fin ayudarnos a realizar despliegues de clusters MySQL.<!--more--></p>

	<p><h2>Mejoras</h2><br />
La nueva versión añade mejoras en lo referente al <strong>autosharding</strong> (almacenamiento de datos segmentados en varias máquinas) y la manera en la que los conflictos de replicación de los datos son solucionados además de añadir mejoras en cuanto a la respuesta y escalabilidad que permiten la replicación entre varios data centers.</p>

	<p>También se ha trabajado para solucionar los problemas con los privilegios de usuario en la replicación y en la sucesión de un entorno más sencillo de administración de permisos y usuarios. </p>

	<p>Como no, también se han hecho importantes avances en la tarea de certificar e integrar los nodos del cluster dentro de la infraestrutura Oracle VM para tomar ventaja de la escalabilidad elástica de los despliegues en la nube. MySQL Cluster 7.2 está certificado en Oracle Linux y Oracle Solaris.</p>

	<p><h2>NoSQL</h2><br />
El cluster NoSQL es <em>hashed</em> y las tablas se comparten através de los nodos de forma automática (haciendo hash en la clave primaria). Los datos se replican a los nodos para mejorar seu propia salud y además permite que podamos <strong>actualizarlo online</strong>.</p>

	<p>En cuanto a como mapear una base de datos <span class="caps">SQL</span> relacional para que sea accesible via <strong>Memcached</strong> que puede llegar a ser un dolor, Oracle facilita el siguiente <a href="http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/">tutorial</a> donde explican como conseguirlo, con un poco de trabajo eso si.</p>

	<p><h2>Futuro GPL</h2><br />
Según el vice presiente de MySQL Engineering Tomas Ulin, el futuro de MySQL Clustering como software <span class="caps">GPL</span> está garantizado aunque Oracle ofrece además otras licencias que ofrecen obviamente un nivel de soporte y servicios que no se ofrecen en las versiones libres.</p>

	<p>Lejos de lo que se vaticinaba en un primer momento, Oracle ha seguido desarrollando MySQL así como todo el stack de aplicativos y servicios que lo rodean mejorando su integración con el ecosistema de bases de datos de la compañía.</p>

	<p>No sabemos hasta cuando seguirá siendo así pero mientras siga el buen trabajo por parte de la compañía, bienvenido sea, aunque supongo que para esto como para casi todo, habrá opiniones de diverso indole.</p>

<p>Via | <a href="http://www.infoq.com/news/2012/02/mysqlcluster72">InfoQ</a><br />
En Genbetadev | <a href="http://www.genbetadev.com/busqueda?cx=partner-pub-9977500652563564%3A9925236086&q=MySQL&ie=UTF-8&oe=UTF-8&cof=FORID%3A10&x=0&y=0">MySQL en Genbetadev</a></p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Amazon lanza DynamoDB, una base de datos NoSQL desarrollada internamente]]></title>
      <link>http://www.genbetadev.com/programacion-en-la-nube/amazon-lanza-dynamodb-una-base-de-datos-nosql-desarrollada-integramente-por-ellos</link>
      <guid>http://www.genbetadev.com/programacion-en-la-nube/amazon-lanza-dynamodb-una-base-de-datos-nosql-desarrollada-integramente-por-ellos</guid>
      <pubDate>Thu, 19 Jan 2012 20:45:32 +0000</pubDate>

      <author>Txema Rodríguez</author>
      <description><![CDATA[
      <p><img id="image78500" src="http://img.genbetadev.com/2012/01/dynamodb-amazon_650.png" class="centro" alt="DynamoDB Amazon" /></p>

	<p>Amazon Web Services ha anunciado el lanzamiento de <strong>DynamoDB</strong>, una base de datos NoSQL que ha desarrollado y probado internamente Amazon durante estos últimos años. La demanda de bases de datos NoSQL está en claro auge debido al crecimiento de los volúmenes de datos y aplicaciones web actuales. Por eso Amazon sabiendo esta necesidad ha añadido un nuevo miembro a su oferta de bases de datos en la nube compuesta hasta ahora por <a href="http://aws.amazon.com/es/rds/">RDS</a> (base de datos relacional) y <a href="http://aws.amazon.com/es/simpledb/">SimpleDB </a>(NoSQL).</p>

	<p>Al igual que la mayoría de los servicios ofrecidos por Amazon Web Services, DynamoDB puede ser gestionada en unos pocos clics desde la <strong>consola de administración de AWS</strong>. Así si lo requerimos podemos iniciar una nueva tabla de <strong>DynamoDB</strong>, aumentar o disminuir los recursos, según las necesidades consultando las estadísticas de rendimiento.</p>

	<p><!--more--></p>

	<p>Todos <strong>los datos se almacenan discos de estado sólido (<span class="caps">SSD</span>)</strong> para asegurar que el acceso de datos sea más rápido. Además de cuenta con una amplia infraestructura que replica los datos entre los distintos servidores repartidos por el mundo con la intención de ampliar las zonas de disponibilidad. </p>

	<p><strong>DynamoDB no tiene un esquema fijo</strong>. En su lugar, cada elemento de datos puede tener un número diferente de atributos. Se pueden usar varios tipos de datos como strings, números o conjuntos. Integra Amazon Elastic MapReduce lo que permite realizar análisis complejos de grandes cantidades de información usando Hadoop sobre <span class="caps">AWS</span>. </p>

	<p>Es interesante saber que <strong>DynamoDB</strong>  ha sido creado íntegramente por el equipo de Amazon, los cuales siguen siendo reacios a integrar alguna de las bases de datos NoSQL en el mercado. Ya en 2007 publicaron un <a href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html">paper con detalles sobre los que sería la tecnología</a> que implementaría <strong>DynamoDB</strong> y que la compañía ha ido probando en sus propios productos. El uso más reciente del  que se enorgullecen es haber trasladando <strong>los metadatos de su Amazon Cloud Drive</strong> de una base de datos relacional a DynamoDB en previsión del pico de tráfico que provocaría la salida al mercado del Kindle Fire. </p>

	<p><iframe width="640" height="360" src="http://www.youtube.com/embed/oz-7wJJ9HZ0" frameborder="0" allowfullscreen></iframe></p>

	<p>Más información | <a href="http://aws.amazon.com/es/dynamodb/">Amazon DynamoDB</a><br />
Vía | <a href="http://www.allthingsdistributed.com/2012/01/amazon-dynamodb.html">All Things Distributed</a></p>      ]]></description>
      </item>
        	  <atom:link href="http://www.genbetadev.com/categoria/bases-de-datos/rss2.xml" rel="self" type="application/rss+xml" />
	</channel>

</rss>


