Desde que publicamos el post Todo lo que debes saber sobre las bases noQSL, muchos nos habéis reclamado la prometida segunda parte. Pues bien, vuestros deseos son órdenes y hoy vamos a hablar justamente de eso, de cuándo debemos usar cada una de las opciones explicadas en el post anterior.
Antes de entrar en materia, debemos tener claro que si el proyecto a desarrollar es pequeño no hay ningún problema en utilizar bases de datos SQL. De hecho, es recomendable usarlas ya que el nivel de optimización de este tipo de bases de datos es muy alto. Si por el contrario nos enfrentamos a un proyecto que deba almacenar y procesar un gran número de datos es mejor buscar una solución noSQL.
Por otra parte, debemos recordar que a partir del teorema CAP surgen varias combinaciones entre consistencia, disponibilidad y tolerancia a la partición. También surgen nuevas soluciones que cambian el paradigma del almacenamiento de datos por lo que las noSQL, en función de cómo se tratan los datos, se organizan en:
- Key – Value stores
- Document stores
- Column-oriented stores
- Graph
Pero ¿cuándo es mejor usar cada una de estas opciones? Dentro de las soluciones noSQL hay diferentes consejos que nos pueden ayudar a escoger aquella que más nos convenga. Toma nota de algunos de ellos:
- Si buscamos una base de datos muy rápida y tenemos suficiente con las funciones básicas es mejor decantarse por una base de datos key-value. Se suelen utilizar para montar sistemas de caché en memoria.
- Si queremos ir un paso más allá y poder realizar peticiones más complejas pero sin perder en exceso la rapidez entonces nos decantamos por bases de datos orientadas a documentos. Un ejemplo claro de este tipo de bases de datos es el almacenamiento de perfiles de redes sociales.
- Si queremos guardar muchas cantidades de datos y luego realizar procesamiento de estas deberíamos decantarnos por una base de datos orientada a columnas. Se suelen usar en sistemas “load once and read-only” como almacenamiento de datos en warehouses.
- Si buscamos poder gestionar relaciones deberíamos decantarnos por bases de datos de grafos. Un ejemplo muy claro es la gestión de las relaciones de las redes sociales.
También debes tener en cuenta que hay soluciones que implican usar dos bases de datos noSQL para obtener el máximo rendimiento. Por ejemplo, para crear una red social es buena idea utilizar una base de datos orientada a documentos para almacenar los perfiles de los usuarios y una base de datos de grafos para las relaciones.
Por último os dejamos con una imagen resumen de los diferentes tipos de bases de datos en función de sus garantías CAP:
Nuestro Slashboy Iván Martínez, Software Developer, es el autor de este post.