Buscando una solución NoSQL para el análisis de logs (2 de 4)

Publicado
Comentarios:  Ninguno

¡¡¡¡AAAaaaarghh!!!! ¡Hay demasiadas opciones!

Bueno, bueno, bueno ….

Llevo unas cuantas horas (mas bien días) leyendo sobre el tema y lo primero que llama la atención es la cantidad de opciones distintas de sistemas de administración de bases de datos NoSQL que hay disponibles en el mundo Open Source. Si citamos las más conocidas tenemos: MongoDB, CouchDB, Cassandra, Membase, Redis, Riak, Neo4J, FlockDB y HBase, entre otras.

Lo primero que recomendaría sería dar una lectura rápida al artículo NoSQL de la wikipedia en inglés (con aportaciones del menda lerenda ) y el primer artículo de la serie Picking the Right NoSQL Database Tool.

Un resumen rápido sería que según la manera de almacenar los datos las bases de datos NoSQL se dividen en …

Orientadas a documentos
Como MongoDB y CouchDB. Almacenan los datos en formatos estructurados (registros) como JSON.

Ejemplo de documento en JSON

{
    "Last Name": "PELLERIN",
    "First Name": "Franck",
    "Age": 29,
    "Address": {
        "Street": "1 chemin des Loges",
        "City": "VERSAILLES"
    }
}

Clave-Valor
Como Cassandra, Membase, Redis o Riak. Almacenan los datos en pares clave-valor (un valor podría ser un objeto)
de Grafos
Como Neo4J y FlockDB. Almacenan los elementos y las relaciones entre ellos con un estilo de grafo (para redes sociales, redes de transporte, mapas de carreteras, topologías de red, por ejemplo)
Tabulares
Como Cassandra o HBase. Almacenan los datos en filas, con varias columnas que corresponden a una clave, con un resultado similar a una tabla

Preguntas que debemos hacernos

Al final la elección de una u otra opción va a depender fundamentalmente del tipo de datos que manejemos y de la naturaleza del problema que queramos solucionar. No hay una base de datos NoSQL “tope de gama”, ni una o dos soluciones que podamos emplear siempre. Según la naturaleza de lo que queramos soluciones usaremos una u otra, o incluso varias simultáneamente.

Y desde luego, una solución NoSQL no sustituye a una base de datos relacional, la complementa. A menos, claro, que estemos usando una base SQL para el problema equivocado.

Deberíamos poder responder a las siguientes preguntas antes de elegir una opción:

  • ¿Qué tipos de datos manejamos? ¿Arrays asociativos, pares de clave-valor, datos estructurados (XML o similar)?
  • ¿Necesitamos transacciones?
  • ¿Necesitamos usar MapReduce

Y al revisar las distintas opciones:

  • ¿La última versión está considerada estable?
  • ¿Tiene soporte comercial?
  • ¿Cuál es la curva de aprendizaje? ¿Dispone de documentación y/o de una comunidad activa?

Enlaces interesantes

Ver también

El resto de esta serie de artículos


Etiquetas:

Comentarios

Actualmente no hay comentarios a este artículo.

Añadir comentarios ...

Escribe debajo tu comentario. Los campos marcados con * son obligatorios. Tienes que previsualizar tu comentario antes de enviarlo definitivamente.