Eligiendo La Base De Datos Correcta

Admond Lee
Apr 08, 2020

Contents Outline

Eligiendo La Base De Datos Correcta

Apr 08, 2020 6 minutes read

Un paso crítico para comenzar cualquier proyecto de base de datos: relacional vs. no relacional, Teorema CAP y más.

@fellowferdi unsplash.com


Cuando se inicia un nuevo proyecto de base de datos de una empresa, uno de los pasos más críticos es elegir la base de datos correcta. Con la llegada del big data, simplemente hay muchas más opciones para sus necesidades de gestión de datos. Elegir la base de datos correcta significará lo siguiente:

  • Ante todo, debe comprender cómo se utilizará su base de datos en el marco de los requisitos de su proyecto.
  • Con un tipo de base de datos, sólo se satisfarán algunas de las necesidades de la base de datos.
  • El rendimiento sólo se obtiene después de que se hayan satisfecho todas las necesidades de la base de datos de forma individual con el tipo de base de datos adecuado.
  • Siempre hay unas cosas por sacrificar entre la consistencia, la disponibilidad y la tolerancia de la partición.

Entendiendo estas cosas por sacrificar

La razón por la que tenemos muchas opciones de bases de datos disponibles hoy en día se debe al Teorema CAP. CAP significa consistencia, disponibilidad (availability) y tolerancia de partición (partition tolerance).

  • Consistencia significa que cualquier petición de lectura devolverá la escritura más reciente.
  • Disponibilidad significa que el nodo que no responde debe responder en un tiempo razonable.
  • Tolerancia de partición significa que el sistema seguirá funcionando a pesar de los fallos de la red o del nodo.

"En un momento dado, sólo se pueden satisfacer dos de estos tres requisitos a la vez".

Las bases de datos relacionales se caracterizan tradicionalmente por su gran coherencia y alta disponibilidad a expensas de la tolerancia a las particiones.

Ejemplos: SQL Server, MySQL, base de datos Oracle, PostgresSQL, IBM DB2

Se han creado bases de datos no relacionales para atender a las necesidades de disponibilidad y tolerancia de partición o (de consistencia y tolerancia de partición).

Ejemplos: Memcached, Redis, Coherencia, Hbase, BigTable, Accumulo, MongoDB, CouchDB

"Para los sistemas complejos que son intensivos en lectura y escritura, puede ser importante tener una combinación de bases de datos relacionales y no relacionales para dividir las tareas de lectura versus escritura para optimizar el CAP".

Preguntas importantes para hacer
El siguiente paso para elegir una base de datos es tener una lista de preguntas para hacer en relación con su requisito empresarial. Aquí hay algunas

  • ¿Cuántas relaciones hay en sus datos? 
  • ¿Cuál es el nivel de complejidad de sus datos? 
  • ¿Con qué frecuencia cambian los datos? 
  • ¿Con qué frecuencia su aplicación consulta los datos? 
  • ¿Con qué frecuencia consulta su aplicación la relación subyacente a los datos?
  • ¿Con qué frecuencia actualizan sus usuarios los datos? 
  • ¿Con qué frecuencia actualizan los usuarios la lógica de los datos?
  • ¿Qué tan crítica es su aplicación en un escenario de desastre?

Comprensión de las ventajas y desventajas
Las bases de datos relacionales están optimizadas para las escrituras. Están optimizadas para la consistencia y la disponibilidad.

Las ventajas de las bases de datos relacionales incluyen simplicidad, facilidad de recuperación de datos, integridad de los datos y flexibilidad.

Las desventajas de las bases de datos relacionales incluyen:
  • Costosas - costosa la creación y el mantenimiento de la base de datos.
  • Límites estructurados - las bases de datos relacionales tienen límites en cuanto a la longitud de los campos. Esto puede ser engorroso para almacenar una gran cantidad de información en un campo. 
  • Aislamiento - múltiples bases de datos relacionales pueden convertirse fácilmente en "islas de información". Puede ser difícil conectar las bases de datos donde puedan hablar entre ellas.
Las bases de datos no relacionales están optimizadas para las lecturas. Sirven para las necesidades de disponibilidad y tolerancia de partición, o de consistencia y tolerancia de partición.

Las ventajas de las bases de datos no relacionales incluyen:
  • Flexibilidad: almacenamiento de grandes volúmenes de datos estructurados, semiestructurados y no estructurados. 
  • Programación ágil - puede acomodar rápidas iteraciones de sprints y subidas de código.
  • Escalabilidad económica - puede escalar la arquitectura de manera eficiente sin costosos gastos generales.

Las desventajas de las bases de datos no relacionales incluyen:
  • Consistencia de los datos - las bases de datos no relacionales no realizan transacciones ACID. En su lugar, se basan en la "consistencia eventual". Los beneficios de rendimiento de estas bases de datos significan que hay un costo de consistencia.
  • Estandarización - No existe una interfaz de programación específica para las diferentes bases de datos. Cada una varía en el lenguaje de consulta con otra.
  • Escalabilidad - No todas las bases de datos no relacionales son buenas para automatizar el proceso de fragmentación, o para extender la base de datos a través de múltiples nodos. Esto presenta limitaciones para poder escalar hacia arriba o hacia abajo por la fluctuación de la demanda.

Entendiendo los diferentes tipos de bases de datos no relacionales
Hoy en día, hay diferentes tipos de bases de datos no relacionales. Se clasifican en categorías específicas. Cada categoría de base de datos no relacional sirve para un propósito determinado.

Clave-valor - Estas bases de datos funcionan mejor con un simple esquema de base de datos. Es mejor para muchas lecturas y escritura, pero pocas actualizaciones. Funciona mejor cuando no hay consultas complejas o lógica de negocios.
Ejemplos: Redis, Dynamo DB, y Cosmos DB.

Documento - Estas bases de datos funcionan mejor si se necesita un esquema flexible. Los datos se almacenan en formato XML o JSON. Puede vivir con un alto rendimiento de lectura y puede equilibrar el rendimiento de lectura con el de escritura. Puede utilizar índices para maximizar su rendimiento con estas bases de datos.
Ejemplos: MongoDB, DynamoDB y Couchbase.

Grafos - Estas bases de datos son excelentes para cuando tienes un esquema de base de datos complejo. Necesitas mostrar la lógica de negocio con frecuencia entre los nodos. Estas bases de datos te permitirán navegar entre los nodos.
Ejemplos: Neo4j, Cosmos Db, y Amazon Neptune.

Ahora que ya tiene una sólida comprensión de lo que se necesita para elegir una base de datos para su próximo proyecto empresarial, puede seleccionar una o varias para las diferentes necesidades de aplicaciones que pueda tener. Tu selección será una selección informada y que tiene en cuenta todas las diferentes necesidades empresariales que puedas tener.
Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!