|

HTML 5 Web SQL Database

Está claro que el HTML5 nos ofrece muchas posibilidades, pero una de las opciones que más me ha gustado es la de tener bases de datos locales.

Para abrir una conexión deberíamos ejecutar lo siguiente:

db = openDatabase("ToDo", "0.1", "A list of to do items.", 200000);

Y para la ejecución de sentencias hay que echar mano de transacciones:

db.transaction(
  function(tx) {
     tx.executeSql("SELECT * FROM ToDo", [],
        function(tx, result) {
           for(var i = 0; i < result.rows.length; i++) {
             document.write('' + result.rows.item(i)['label'] + '
'); } }, null); } );

Bastante sencillo y ofrece muchas posibilidades en nuestras aplicaciones

HTML 5 Web SQL Database

Vía / DZone

HyperGraphDB: otra base de datos de grafos

Si hace tiempo hablé de OQGraph, un plugin para MySQL para almacenar grafos, en este caso se trata de una BD diseñada específicamente para ello. HyperGraphDB es una base de datos orientada a inteligencia artificial y redes sociales que mediante el almacenamiento de grafos facilita aplicaciones de este estilo.

Se trata de una BDopen source realizada en Java que es extensible, portable, distribuida y incrustable. Y cuyas características principales son:

  • Un segmento puede apuntar a más de un nodo.
  • La unidad básica de almacenamiento se llama átomo y cada átomo tiene su tipo y puede apuntar a ninguno o más átomos.
  • Los tipos de datos se manejan mediante un sistema almacenado en una estructura hipergrafo. Los tipos son en sí átomos pero con un rol particular.
  • Es accesible por cualquier lenguaje de programación y el sistema de almacenamiento usado a bajo nivel se basa en BerkeleyDB.
  • Procesos distribuidos basados en P2P para replicación y particionamiento de datos.

Vamos, una joyita para implementar una red social, aunque estaría bien conocer pruebas de rendimiento.

HyperGraphDB

Vía / High Scalability

Consejos para optimizar tu base de datos

Interesantes consejos para optimizar nuestra base de datos en nuestras aplicaciones:

  • Aunque parezca mentira, no siempre es necesario una base de datos relacional. Existen alternativas como memcache, base de datos documentales o de clave-valor.
  • No uses la BD para almacenar contenidos: imágenes o documentos en BLOB.
  • Usa campos numéricos y autoincrementales para los índices primarios, para así tener un acceso rápido al registro, ya que inserts, updates y selects dependen mucho de este índice.
  • Analiza correctamente el uso de índices al igual que haces un análisis detallado de la estructura de la BD.
  • Realiza queries sencillas, en las que solo debes recuperar los campos que necesites y evitar el uso de LIKE y NOT IN

Una lectura interesante y más detallada.

Database Optimize patterns

Bases de datos para tener en cuenta

No solo de MySQL vive el desarrollador web, por lo que está bien conocer estas otras bases de datos:

Alternativas opensource de BigTable de Google:

Alternativas opensource de Amazon Dynamo, almacenamiento distribuido:

Otros proyectos interesantes:

QCon London 2009: Database projects to watch closely

Vía / High Scalability

Lightcloud: BD clave-valor

Lightcloud es una base de datos basada en clave-valor muy rápida, desarrollada por la gente de Plurk, que llega casi al rendimiento de Memcachedb. Está basado en Tokyo Tyrant.

  • Puede almacenar millones de keys en pocos servidores
  • Escala horizontalmente
  • Los nodos se replican vía master-master, failover automático y balanceo de carga
  • Por ahora solo está para Python, pero el puerto puede ser desarrollado fácilmente en cualquier lenguaje

Lightcloud

Vía / High Scalability

Propel: ORM para PHP

Propel es un ORM para PHP que facilita la labor de desarrollo de aplicaciones web, gracias a la capa que transforma el tratamiento de la BD mediante objetos, con la que se puede recuperar, insertar y modificar datos.

No es necesario preocuparse por las conexiones de la BD y escribir SQL. Tampoco es necesario escapar datos o realizar casting. Tan solo es necesario definir la base de datos en formato XML u obtener la definición desde una base de datos ya existente.

Propel

Artículos sobre BD

Buena recopilación de artículos sobre bases de datos, en inglés, pero interesantes:

10 Useful articles about Database design

Thrudb: servicios de BD orientados documentos

Thudb es un conjunto de servicios construidos sobre el framework Thrift de Facebook que provee servicios de indexación y almacenamiento de documentos para realizar y escalar sitios web. El propósito es ofrecer a los desarrolladores web servicios flexibles, rápidos y fáciles de usar que pueden mejorar y reemplazar los sistemas tradicionales de almacenamiento y las capas de acceso.
Entre sus características nos encontramos con la disponibilidad de clientes para la mayoría de los lenguajes, replicación de múltiples master, backups incrementales, multiples backends de almacenamiento (S3 incluido), escalabilidad y API de búsqueda (Lucene).
Los servicios disponibles incluye el almacenamiento de documentos, indexación y búsqueda, cola de mensajes, particionamiento y balanceo de carga.
Thrudb