domingo, 22 de enero de 2017

Criterios para seleccionar una Base de Datos NoSQL


En la década del año 2000 surge una nueva tendencia de bases de datos: el NoSQL. el término NoSQL, o “Not only SQL”, representa una amplia clase de sistemas de gestión de bases no relacionales, distribuidas, horizontalmente escalables, de código abierto o privativas y que mucho más rápidas que sus contraparte, las RDBMS (Sistemas Manejadores de Bases de datos Relacionales) fundamentalmente debido a que no implementan las propiedades ACID (Atomicity, Consistency, Isolation and Durability) .


Razones para seleccionar una base de datos NoSQL
Dentro de las principales razones que se tienen para seleccionar este tipo de base de datos se encuentran:
  • Especialmente diseñados para las aplicaciones de tipo “Big data” (Datos Masivos) y para servir datos en los que la importancia del contenido es baja.
  • Son sistemas más económicos y menos complejos que las base de datos de tipo relacional por lo que se reduce el costo en infraestructura y desarrollo.
  • Utilizan modelos de datos más flexibles que los ofrecidos por el modelo relacional con las operaciones SQL.

Seleccionar el tipo de modelo de datos
Una de las principales diferencias entre las bases de datos NoSQL y las RDBMS es el modelo de datos. En las RDBMS el modelo relacional une a todo este grupo de base datos en cambio, en las NoSQL no existe un solo tipo de modelo de datos, sino que existen distintos tipos. Básicamente se pueden agrupar en cuatro grandes tipos de modelo de datos NoSQL. Por lo tanto, se debe determinar qué tipo de modelo de datos se adapta más a la naturaleza del  proyecto.
Los modelos de datos NoSQL pueden ser agrupados en:
Orientado a Documentos: Son aquellas que gestionan datos semi estructurados. Es decir documentos. Estos datos son almacenados en algún formato estándar como puede ser XML, JSON o BSON.
Orientadas a columnas: Este tipo de bases de datos están pensadas para realizar consultas y agregaciones sobre grandes cantidades de datos. Funcionan de forma parecida a las bases de datos relacionales, pero almacenando columnas de datos en lugar de registros.
Tipo clave-valor: Son aquellas que guardan registros (tuplas) que contienen una clave y su valor, cuando se quiere recuperar un dato, simplemente se busca por su clave y se recupera el valor. Están diseñadas para un rendimiento excelente en grandes volúmenes de datos, para lograr esto se renuncia a funcionalidades como la verificación intrínseca de la integridad de datos, referencias externas o triggers. Todo se deja a la aplicación, siendo la base de datos, simplemente donde se guardan los datos.
Orientado a grafos: Son aquellas que representan la información como nodos de un grafo y sus relaciones con las aristas del mismo, de manera tal que se puede usar la teoría de grafos para recorrer la base de datos ya que esta puede describir atributos de los nodos (entidades) y las aristas (relaciones). Son útiles para guardar información en modelos con muchas relaciones, como redes y conexiones sociales.


Determinar el modelo de consistencia
Los sistemas NoSQL por lo general mantienen varias copias de los datos para proporcionar escalabilidad y disponibilidad. El modelo de consistencia para los datos que utilizan múltiples copias tiene dos tipos de sistemas: los consistentes y los eventualmente consistentes.
Sistemas consistentes: En este tipo de sistema se garantiza que la escrituras sea inmediatamente visible para las consultas posteriores. Es útil para aplicaciones que se requiere que los datos estén  siempre coherentes.
Sistemas eventualmente consistentes: En este tipo de sistema existe un periodo durante el cual no todas las copias de los datos están sincronizadas. Como no se comprueba la consistencia de los datos en cada una de las operaciones supone una mejora importante en el rendimiento del sistema  aunque esto implique el peligro de una inconsistencia momentánea de los datos. Es útil para datos que no cambian a menudo, como por ejemplos archivos históricos o logs.
Las bases de datos orientadas a documento o grafo pueden ser consistentes o eventualmente consistentes, mientras que las bases de datos de tipo clave-valor y orientadas a columna son típicamente eventualmente consistentes.

Evaluar la interfaz de programación (API)
La función principal de una API (Application Programming Interface) es mantener es interactuar con la base de datos para poder realizar acciones como el acceso y manipulación de los datos. En las bases de datos NoSQL no existe un estándar por lo que cada base de datos posee su propia API así que debe evaluarse con detenimiento cuál API resulta más acorde con las necesidades del proyecto-

Seleccionar entre Base de datos NoSQL bajo software libre o Privativa
Existen base de datos NoSQL tanto privativas como de Software libre. En lo personal recomiendo la implementación de productos basados en software libre.
En el caso de seleccionar una de este tipo, se debe evaluar la fortaleza de su comunidad de tal manera que se disponga de un gran número de profesionales familiarizados con el producto, tener fácil acceso a documentación, código y ejemplos.

En el caso que se decida por un producto privativo, se debe evaluar el estado del proyecto, la solidez de la empresa que lo respalda, conocer que cuales son los planes de la empresa en cuanto a la evolución del producto y no solo “darle  continuidad”. Se debe verificar que la empresa cuente con experiencia y ofrezca servicios tales como: soporte, entrenamiento y certificaciones entre otros.


No hay comentarios:

Publicar un comentario