Tipos de bases de datos:

Relacional:

El más conocido. La información se estructura  a base de tablas de dos dimensiones con filas y columnas. Se accede a los datos a través de SQL. Existen numerosas bases de datos de código libre, como MySQL,  H2, PostgreSQL.

Ventajas:

Llevan mucho tiempo en el mercado y hay mucha gente acostumbrada a pensar de forma “relacional”. Son una elección excelente cuando se necesita flexibilidad en las consultas. No presupone cómo se van a utilizar los datos. Siempre que el esquema este diseñado de una manera normalizada, sin duplicidad de registros ni valores calculados, se pueden hacer todo tipos de consultas que sean necesarias. Si esta correctamente administrada y tiene los índices correctos tiene unos resultados sorprendes en la buscada de datos en cantidades muy grandes de información (teradatas). Finalmente, para los que la seguridad de los datos sea algo fundamental, el manejo de transacciones ACID asegura que los commits son completos, atómicos, consistentes, aislados y duraderos.

Desventajas:

Es muy difícil escalar hacia afuera (múltiples almacenes de datos paralelos en vez una sola máquina o cluster.  A veces los requisitos de los datos son demasiado flexibles para encajar en el rígido esquema relacional. Tampoco es el tipo de base de datos indicada para un número elevado de escrituras y lecturas de key values. O para almacenar solamente datos blobs muy grandes.

Key-Value:

Como indica su nombre las bases de datos KV, almacena valores identificados por una clave. Algunos sistemas KV permiten tipos complejos como hashes  y listas. Normalmente, el valor se almacena como un arreglo de bytes (BLOB).  Las bases de datos de este tipo permiten un increíble rendimiento en diferentes escenarios, pero normalmente no lo  son cuando se necesitan consultas complejas  o muchas agregaciones. Son muy eficientes para lecturas y escrituras y se pueden escalar fácilmente.  Ejemplos de este tipo de bases de datos RIAK y Redis.

Riak:

Es una base de datos distribuida que puede almacenar cualquier cosa, texto plano, JSON, XML, imágenes, vídeos, todo es accesible mediante un interfaz HTTP. En principio es una base de datos prueba de fallos sigue funcionando a pesar de que se haya caído uno de los servidores del cluster., pero no es muy flexible a la hora de las consultas.

Riak se basa en REST, cada URI indica un recurso dentro de la base de datos. Y sobre este recurso podemos realizar las básicas de HTTP (Get : recuperar datos, PUT insertar datos, POST modificar datos, DELETE borrar datos). Las búsquedas se basan en el algoritmo MapReduce, hace búsquedas sobre cada elemento individual eligiendo los resultaos y después con reduce los analiza y los une.

Riak es una buena opción  cuando buscamos una base de datos de alta disponibilidad, muy escalable, que no requiera datos complejos.  Sin embargo si lo que se quiere son estructuras de datos complejas o esquemas rígidos o no hay necesidad de escalar horizontalmente RIAK no es una opción. Uno de sus puntos débiles es la manera de hacer las búsquedas.

Bases de datos orientadas a columnas

Como su nombre lo indica, guardan los datos en columnas en lugar de filas. En bases de datos orientadas a columnas, añadir columnas es bastante caro y se hace de registro en registro, cada registro tiene diferente número de columnas o puede que no tenga ninguna, con esto se ahorra mucho espacio en los valores nulos.  Con este cambio ganamos mucha velocidad en lecturas, ya que si se requiere consultar un número reducido de columnas, es muy rápido hacerlo pero no es  eficiente para realizar escrituras.  Por ello este tipo de soluciones es usado en aplicaciones con un índice bajo de escrituras pero muchas lecturas.

HBase:

Ventajas:

Incluye una buena arquitectura de escalabilidad hacía otra máquinas y opciones de versionado. Está diseñada para cantidades enormes de datos, medidos en gigabytes o terabytes. Los datos se replicante entre los maquinas, así si un nodo se cae se puede manejar sin ningún problema. No hay ningún proveedor corporativo pero la comunidad de HBase es muy activa.

Inconvenientes:

Está diseñada para escalar a lo grande, pero no escala muy bien en entornos más pequeños. La comunidad HBase parece estar de acuerdo que lo mínimo son cinco nodos..

HBase es parte de muchos sistemas, estos incluyen Haddop (distribuye los file system) y Zookeper (ayuda la interconexión de nodos). Esto incluye un sobresfuerzo de arquitectura y  de administración y mantenimiento.

No permite ningún orden o indexación fuera de los registros clave.

No hay distintos tipos de datos, todos son bytes para HBase.

Bases de datos orientadas a documentos:

Las bases de datos orientadas a documentos, almacenen documentos como hash, con un campo de identificador único, y valores que pueden ser de multitud de tipos incluidos hash. Los documentos pueden contener estructuras anidadas y esto le permite tener bastante flexibilidad.  No es que tengan un esquema , de hecho el campo documento es un campo binario, normalmente un JSON o XML o cualquier otra cosa que entienda la base de datos.

MongoDB

Ventajas

Tiene la habilidad de manejar gran cantidad de datos, replicándolos y escalando horizontalmente. Tiene un modelo de datos muy flexible. Está construida para ser sencilla de utilizar.

Inconvenientes.

Trabaja mejor en cluster grandes. Y tanta flexibilidad a la hora de almacenar datos puede ser peligrosa y si el modelo no está maduro y cerrado.

CouchDB

Ventajas

Es un miembro robusto y escalable de comunidad NoSQl. Construido en la filosofía de que las redes pueden caer y el hardware no es infalible. CouchDB ofrece una forma descentralizada de almacenar datos. Es lo suficientemente pequeña para convivir en un Smartphone y lo suficientemente grande para soportar una empresa. CouchDB soporta una gran variedad de situaciones de desarrollo.

Esta especialmente pensada para soportar tecnologías web, tal como balanceadores de carga y caches.

Inconvenientes

No permite obtener pedazos de datos de manera eficiente, de hecho no se deberían consultas en tiempo real sobre todos los registros  en producción. Y en ocasiones la manera de replicar los datos no es una buena opción

 

BASES DE DATOS TIPO ESCALIBILIDAD TRANSACCIONAL PERMITE  JSON Consultas Entornos Pequeños      
CASANDRA Orientadas a Columnas Horizontal No Si, pero no es lo recomendable          
MONGODB Orientada a  Documentos Horizontal No Si Flexible (+-) Trabaja mejor en entornos grandes      
CouchDB Orientada a Documentos Horizontal No Si No es fácil Se adapta muy bien      
HBase Orientadas a Columnas Horizontal No No No es fácil No funciona bien      
Riak Key-Value Horizontal No SI No es fácil        

Dia, herramienta gratuita para crear diagramas entidad/relación

Estos días estaba buscando una herramienta de software libre para crear modelos entidad/relación y buscando y buscando me encontré con una grata sorpresa, la herramienta Dia. Dia es una aplicación para crear diagramas técnicos. Su interfaz y las funciones se basan en Windows Visio. Las características del Dia incluyen varias páginas de impresión, exportación a muchos formatos (EPS, SVG, CGM y PNG), y la posibilidad de usar formas personalizadas creadas por el usuario como simples descripciones XML. Dia es útil para dibujar diagramas UML, mapas de la red, y diagramas de flujo.

La podéis encontrar en live.gnome.org/Dia.

Añado un link con un tutotial muy básico:

http://www.youtube.com/watch?v=ZKy14SZCOiI&feature=related

 Una pequeña muestra del interfaz

 

 

 

 

 

 

 

 

Espero que os sea útil