Si acaba de empezar a explorar el mundo de las bases de datos, probablemente ya sepa dos cosas: utilizar los datos de forma eficaz es lucrativo y elegir una base de datos para gestionar esos datos puede ser abrumador.
Es cierto, la capacidad de los datos para mejorar los ingresos brutos es cada vez mayor. Pueden optimizar las experiencias de los usuarios y potenciar el machine learning. Pero eso significa que hay cientos de proveedores luchando por almacenarlos y analizarlos por usted. ¿Cómo elegir? Bueno, como ocurre con la mayoría de las cosas en la vida, el conocimiento es poder.
Eche un vistazo a esta visión general del panorama de las bases de datos, concretamente sobre cómo situarlas en un contexto empresarial. Empezaremos con una inmersión profunda en las licencias y el modelado de datos.
Las licencias de software son, por de una manera suave, complejas. No solo los derechos de propiedad intelectual (para eso, sugiero consultar “An Introduction to the Law and Economics of Intellectual Property” de Besen y Raskind y Open Source Licensing: Software Freedom and Intellectual Property Law de Rosen), sino específicamente por qué debería preocuparse por una licencia y tendencias en el panorama de las bases de datos de código abierto que tienen implicaciones para su negocio.
¿Todo listo?
Todas las licencias de software conllevan reglas y regulaciones sobre cómo usar la tecnología que debe seguir. Eso significa que las licencias del software que adopte pueden tener un impacto tangible en su forma de hacer negocios. Ignorar o violar estas reglas puede exponerlo a riesgos legales, pérdidas financieras y, francamente, empañar la reputación de su empresa. Tanto si compra software como si adopta tecnologías de código abierto, la licencia limitará en última instancia el uso del código en cierta medida. Todo esto para decir que tenga en cuenta estas limitaciones a medida que desarrolle su producto para ayudar a mitigar el riesgo legal a largo plazo.
A continuación, tenga en cuenta que las licencias no son fijas. De hecho, en este momento, muchas empresas que respaldan proyectos de bases de datos de código abierto están cambiando sus licencias de bases de datos para que sean más restrictivas. Dependiendo de su caso de uso, eso puede significar que si ha estado utilizando una base de datos de forma gratuita, ahora puede estar expuesto a acciones legales. No es para asustarle, es para que se mantenga alerta. A medida que se producen estos cambios, es importante reaccionar de forma adecuada. En algunos casos, un cambio de licencia puede requerir rediseñar un servicio, adoptar una base de datos diferente o celebrar un acuerdo comercial con el proveedor.
Quienes frecuenten Hacker News o TechCrunch no serán ajenos a la conversación en torno al software de base de datos comercial y de código abierto. He aquí lo esencial: en los últimos tres años, ha estallado un debate debido a una confluencia de factores como el crecimiento de los principales proveedores de nube pública y el éxito en el mercado, o la falta de él, de los proveedores de bases de datos centradas en el código abierto.
Dicho esto, la relación entre el software libre y el software propietario no es binaria; es, por supuesto, un espectro:
Nota: la distancia ilustrada no es científica, la relatividad es más importante.
En el espectro anterior, en el extremo izquierdo, hay licencias de software de bases de datos comerciales o propietarias, como Oracle, IBM® Db2 y Microsoft SQL Server. Se trata de tecnologías potentes y repletas de características que impulsan las cargas de trabajo en todos los sectores. Al comprar este software a un proveedor, o como servicio cloud, está pagando una prima para obtener acceso a lo siguiente:
Soporte a nivel de código
Un robusto ecosistema de herramientas
Servicios profesionales y consultores
Visibilidad e influencia en la hoja de ruta de esa base de datos
A la derecha, hay software de dominio público. Este software no tiene derechos de autor, lo que significa que puede modificarse, distribuirse o venderse sin restricciones. Los proyectos cercanos al extremo derecho del espectro a menudo se rigen por los estándares de un tercero imparcial, como Apache Software Foundation o The Linux Foundation.
La Open Source Initiative (OSI) mantiene una lista generalmente aceptada de lo que es y lo que no es una licencia de código abierto. En general, el software de código abierto se caracteriza por la capacidad de “bifurcar el código”. Esto significa que si la dirección del proyecto (software) no concuerda con lo que necesita o desea, puede modificar o editar el código como mejor le parezca.
El uso de una tecnología de código abierto es particularmente atractivo debido a los costes cero de licencia, la mayor transparencia del desarrollo y la innovación que proviene de una diversidad de partes interesadas, mantenedores y áreas problemáticas. En comparación con el software comercial, con el software de código abierto, se renuncia a la influencia de la hoja de ruta, a las garantías en torno a las correcciones de errores o parches de seguridad y a los contratos, y se obtiene cero vendor lock-in y una mayor flexibilidad de la línea de negocio (ya ve que es una compensación que usted y su equipo deben considerar cuidadosamente).
Si seguimos el recorrido del gráfico anterior de izquierda a derecha, hay diferentes niveles de permisividad de licencias como Apache 2.0, MPL y GPL 3.0.
Apache 2.0: Apache Cassandra, Apache CouchDB
Licencia pública de Mozilla: RabbitMQ
BSD: Redis
GPL 3.0: Neo4j
Propietario: IBM® Db2, Microsoft SQL Server
A finales de la década de 2000, la mayoría de los proveedores de bases de datos nacientes se dirigían al mercado como “código abierto” para obtener un fácil acceso a la adopción y la mentalidad de los desarrolladores. Es posible que conozca empresas de este campo, como Mongo Inc., Redis Labs y Elastic. Estas empresas desarrollaron proyectos comunitarios como MongoDB, Redis y Elasticsearch, pero buscaron monetizar esa inversión con versiones de licencia empresarial, implementaciones gestionadas en la nube o servicios profesionales.
Sin embargo, el cambio de paradigma del cloud computing ha hecho que este modelo de negocio sea precario porque los principales proveedores pueden proporcionar fácilmente estas tecnologías como un servicio gestionado nativo de plataforma de primera clase. Estas ofertas se entregan con integraciones atractivas para la seguridad, el cumplimiento, la monitorización y la información de registro en sus respectivas nubes, sin proporcionar una compensación garantizada a los creadores del software.
En los últimos años, las empresas han reevaluado su ruta hacia el mercado. Ahora, los vemos adoptar modelos de licencias que protegen sus inversiones en desarrollo. Por ejemplo, MongoDB , Redis Labs y Confluent, con diversos grados de severidad, han cambiado las licencias de partes de código para evitar que otras empresas las ejecuten como un servicio sin compensación.
“Entonces, Josh, ¿cuál es tu consejo?” Muy buena pregunta.
Mire, hay buenas razones para utilizar bases de datos comerciales y/o de código abierto. Lo importante es que sepa en lo que se está metiendo usted y su empresa. Revise la licencia antes de crear una aplicación para asegurarse de que su proyecto es conforme, y si en cambio desea elegir una licencia para un proyecto de código abierto, consulte la página web “Choose a license” de Github.
Por lo tanto, una consideración importante son las licencias, porque nadie quiere ser demandado. La otra son las familias de modelos de datos, pero por una razón diferente. Al crear una aplicación, conocer los tipos de modelos de datos le ayudará a elegir la herramienta adecuada para el trabajo.
Ahora que ya conoce las licencias, hablemos de otra consideración crítica a la hora de seleccionar su base de datos: los modelos de datos.
Cuando empecé en IBM, necesitaba ponerme al día rápidamente, así que recurrí a NoSQL Distilled de Martin Fowler.
En sus escritos, y en el sector en general, la gente tiende a clasificar las bases de datos en cinco familias de “modelos de datos”: documental, clave-valor, de grafo, relacional y de columna ancha. He aquí una breve descripción general de cada una de ellas, incluidos casos de uso y ejemplos específicos de bases de datos. Esto le ayudará a determinar, en función de sus conjuntos de datos y necesidades empresariales, qué base de datos necesita.
En este caso, los datos se modelan en documentos similares a JSON, en lugar de filas y columnas. Estas bases de datos, por naturaleza, valoran la disponibilidad sobre la coherencia transaccional. Las bases de datos documentales se prestan a la simplicidad y la escalabilidad, así como a la rápida iteración en el desarrollo.
Casos de uso empresarial:
Aplicaciones móviles que requieren iteraciones rápidas
Información de registro de eventos, compras en línea, gestión de contenidos y procesamiento analítico en profundidad
Catálogos de comercio minorista con atributos de producto
Ejemplos:
Firebase
Este tipo de modelo representa el tipo más básico de base de datos no relacional, donde cada elemento de la base de datos se almacena como un nombre de atributo (denominado clave) con su valor correspondiente.
Casos de uso empresarial:
Almacenes de preferencias y perfiles de usuario
Recomendaciones de productos basadas en datos de navegación
Carritos de la compra
Ejemplos:
DynamoDB
Redis
ETCD
Los datos aquí se modelan como vértices y aristas (valores y conexiones). De forma similar a cómo las personas piensan y procesan la información, las bases de datos de grafo recuerdan las relaciones entre unidades discretas de datos. Estas bases de datos hacen que la persistencia, la exploración y la visualización de datos y relaciones sean más intuitivas.
Casos de uso empresarial:
Detección del fraude
Motores de recomendación en tiempo real
Master Data Management
Operaciones de red y TI
Gestión de identidad y acceso
Ejemplos:
Neo4j
AWS Neptune
El modelo relacional , introducido por R.F. Codd cuando trabajaba aquí en IBM, es el titán del sector. Los datos se almacenan en tablas como filas y columnas y, a menudo, tienen motores de consulta sofisticados para el análisis y la exploración. Las bases de datos relacionales admiten garantías transaccionales y cumplimiento ACID (atomicidad, coherencia, aislamiento y durabilidad), mientras que la mayoría de las bases de datos de las otras cuatro familias son, en última instancia, coherentes.
Casos de uso empresarial:
Comercio electrónico
Planificación de recursos empresariales
Gestión de la relación con el cliente
Ejemplos:
IBM Db2
Los almacenes de familias de columnas permiten un acceso muy rápido a los datos mediante una clave de fila, un nombre de columna y una marca de tiempo de celda. El esquema flexible de este tipo de bases de datos significa que las columnas no tienen que ser coherentes entre registros, y puede añadir una columna a filas específicas sin tener que agregarlas a cada registro. Los almacenes de columnas anchas se derivan del artículo BigTable de Google. Estos modelos de datos no deben confundirse con los modelos de almacenamiento orientados a columnas, que son más relevantes para las tecnologías de almacenamiento de datos y los patrones de acceso analítico debido a una mejor compresión de los datos en el disco y un uso más eficiente de la CPU.
Casos de uso empresarial:
Análisis bursátil y de seguridad
Análisis de Clickstream
IoT y telemetría
Ejemplos:
Apache Cassandra
DataStax Enterprise
Google Cloud BigTable
En resumidas cuentas, cada modelo de datos primario tiene ventajas y desventajas (y aquí apenas hemos arañado la superficie). Pero en caso de duda, opte por algo probado en batalla y omnipresente como PostgreSQL. Para más información sobre el arquetipo de familias de modelos de datos, consulte el libro de Martin Fowler NoSQL Distilled, en particular los capítulos 8-11.
¡Uf! He cubierto bastante terreno aquí, pero si tiene ganas de saber más, he aquí algunas sugerencias basadas en el tiempo que desee invertir:
15 minutos: “How to Choose a Database”, de Ben Anderson
15 minutos: “SQL vs. NoSQL Databases: What’s the Difference?”, de Ben Anderson y Brad Nicholson
Tres horas: análisis Jepsen de la seguridad de los sistemas distribuidos
Una semana: Designing Data-Intensive Applications , de Martin Kleppman.
¿Desea empezar a crear? IBM® Cloud cuenta con una amplia gama de servicios de bases de datos gestionadas para ayudar a su equipo a poner en marcha de inmediato.