Los datos lo son todo. Y por extensión, también lo son las bases de datos. He aquí algunas fantásticas opciones de código abierto para su próximo proyecto.
Para un mundo dominado durante tanto tiempo por los trajes de las bases de datos como Oracle y SQL Server, ahora parece haber un aluvión interminable de soluciones. Una parte de la razón es la innovación alimentada por el código abierto: desarrolladores con mucho talento que quieren rascarse un picor y crear algo con lo que puedan deleitarse.
La otra parte es la aparición de nuevos modelos de negocio, en los que las empresas mantienen una versión comunitaria de su producto para ganar cuota de mercado y tracción, al tiempo que proporcionan una oferta comercial complementaria.
¿El resultado?
Más bases de datos de las que uno puede mantener. No hay ninguna estadística oficial al respecto, pero estoy bastante seguro de que tenemos más de cien opciones disponibles hoy en día si combinamos todo, desde bases de datos de objetos específicas para cada pila hasta proyectos no tan populares de las universidades.
Lo sé; a mí también me asusta. Demasiadas opciones — demasiada documentación que revisar — y una vida que es tan corta. 🙂
Por eso he decidido escribir este artículo, en el que presento diez de las mejores bases de datos que puede utilizar para mejorar sus soluciones, ya sea construyendo para usted mismo o para otros.
No MySQL
Atención: esta lista no va a contener MySQL, a pesar de que es posiblemente la solución de base de datos de código abierto más popular que existe.
¿Por qué?
Simplemente porque MySQL está en todas partes – es lo que todo el mundo aprende primero, es compatible con prácticamente todos los CMS o framework que hay, y es muy, muy bueno para la mayoría de los casos de uso. En otras palabras, MySQL no necesita ser «descubierto» 🙂
Dicho esto, tenga en cuenta que los siguientes no son necesariamente alternativas a MySQL. En algunos casos, podrían serlo, mientras que en otros, son una solución completamente diferente para una necesidad totalmente distinta. No se preocupe, ya que también hablaré de sus usos.
Nota especial: compatibilidad
Antes de empezar, también debo mencionar que la compatibilidad es algo que debe tener en cuenta. Si tiene un proyecto que, por la razón que sea, sólo admite un motor de base de datos concreto, sus opciones están prácticamente descartadas.
Por ejemplo, si ejecuta WordPress, este artículo no le servirá de nada. 🙂 Del mismo modo, quienes ejecuten sitios estáticos en JAMStack no ganarán nada buscando alternativas demasiado seriamente.
Depende de usted averiguar la ecuación de compatibilidad. Sin embargo, si dispone de una pizarra en blanco y la arquitectura depende de usted, aquí tiene algunas buenas recomendaciones.
PostgreSQL
Si viene de la tierra de PHP (WordPress, Magento, Drupal, etc.), entonces PostgreSQL le sonará extraño. Sin embargo, este software de base de datos relacional existe desde 1997 y es la primera opción en comunidades como Ruby, Python, Go, etc.
De hecho, muchos desarrolladores acaban «graduándose» a PostgreSQL por las características que ofrece o simplemente por estabilidad. Es difícil convencer a alguien en un breve escrito como éste, pero piense en PostgreSQL como un producto cuidadosamente diseñado que nunca le defraudará.
Hay muchos buenos clientes SQL disponibles para conectarse a la base de datos PostgreSQL para administración y desarrollo.
Características únicas
PostgreSQL tiene varias características fascinantes en comparación con otras bases de datos relacionales (específicamente, MySQL), tales como:
- Tipos de datos incorporados para Array, Range, UUID, Geolocalización, etc.
- Soporte nativo para almacenamiento de documentos (estilo JSON), XML y almacenamiento de valores clave (Hstore)
- Replicación síncrona y asíncrona
- Programación en PL, Perl, Python, etc
- Búsqueda de texto completo
Mis favoritos personales son el motor de geolocalización (que elimina el dolor cuando se trabaja con aplicaciones basadas en localización — intente encontrar todos los puntos cercanos manualmente y sabrá a lo que me refiero) y el soporte para arrays (muchos proyectos MySQL se deshacen por falta de arrays, optando en su lugar por las infames cadenas separadas por comas).
Cuándo utilizar PostgreSQL
PostgreSQL es siempre una mejor opción que cualquier otro motor de base de datos relacional. Es decir, si está comenzando un nuevo proyecto y ha sido mordido por MySQL anteriormente, es un buen momento para considerar PostgreSQL. Tengo amigos que se rindieron luchando contra los misteriosos fallos de bloqueo transaccional de MySQL y se pasaron definitivamente a PostgreSQL. Si usted decide lo mismo, no estará exagerando.
PostgreSQL también tiene una clara ventaja si necesita facilidades NoSQL parciales para un modelo de datos híbrido. Dado que el almacenamiento de documentos y de clave-valor están soportados de forma nativa, no necesita ir a la caza, instalación, aprendizaje y mantenimiento de otra solución de base de datos.
Cuando no se utiliza PostgreSQL
PostgreSQL no tiene sentido cuando su modelo de datos no es relacional y/o cuando tiene requisitos arquitectónicos muy específicos. Por ejemplo, considere Analytics, donde constantemente se crean nuevos informes a partir de datos existentes. Tales sistemas son de lectura pesada y sufren cuando se les impone un esquema estricto. Claro, PostgreSQL tiene un motor de almacenamiento de documentos, pero las cosas empiezan a venirse abajo cuando se trata de grandes conjuntos de datos.
En otras palabras, ¡utilice siempre PostgreSQL a menos que sepa al 100% lo que está haciendo! 🙂
Eche un vistazo a este curso de SQL y PostgreSQL para principiantes si está interesado en aprender más.
MariaDB
MariaDB fue creado como sustituto de MySQL por la misma persona que desarrolló MySQL.
¿Está confundido?
Bueno, en realidad, después de que MySQL pasara a manos de Oracle en 2010 (mediante la adquisición de Sun Microsystems, que, por cierto, es también cómo Oracle llegó a controlar Java), el creador de MySQL inició un nuevo proyecto de código abierto llamado MariaDB.
¿Por qué importa todo este aburrido detalle, se preguntarán? Es porque MariaDB se creó a partir de la misma base de código que la de MySQL (en el mundo del código abierto, esto se conoce como «bifurcar» un proyecto existente). Como resultado, MariaDB se presenta como un sustituto «drop-in» de MySQL.
Es decir, si está utilizando MySQL y quiere migrar a MariaDB, el proceso es tan fácil que no se lo creerá.
Por desgracia, dicha migración es un camino de ida. Volver de MariaDB a MySQL no es posible, y si intenta utilizar la fuerza, ¡la corrupción permanente de la base de datos está asegurada!
Características únicas
Aunque MariaDB es esencialmente un clon de MySQL, no es estrictamente cierto. Desde la introducción de la base de datos, las diferencias entre ambas han ido creciendo. En el momento de escribir estas líneas, adoptar MariaDB debe ser una decisión bien meditada por su parte. Dicho esto, hay muchas novedades en MariaDB que pueden ayudarle a realizar esta transición:
- Verdaderamente libre y abierto: Dado que no hay una única entidad corporativa que controle MariaDB, puede estar libre de repentinas licencias predatorias y otras preocupaciones.
- Varias opciones más de motores de almacenamiento para necesidades especializadas: por ejemplo, el motor Spider para transacciones distribuidas; ColumnStore para almacenamiento masivo de datos; el motor ColumnStore para almacenamiento paralelo y distribuido; y muchos, muchos más.
- Mejoras de velocidad respecto a MySQL, especialmente gracias al motor de almacenamiento Aria para consultas complejas.
- Columnas dinámicas para las distintas filas de una tabla.
- Mejores capacidades de replicación (por ejemplo, replicación multifuente)
- Varias funciones JSON
- Columnas virtuales
. . . Y muchas, muchas más. Es agotador estar al día de todas las funciones de MariaDB. 🙂
Cuándo utilizar MariaDB
Si desea un verdadero sustituto de MySQL, debería utilizar MariaDB, ya que quieren mantenerse en la curva de la innovación y no planean volver a MySQL de nuevo. Un caso de uso excelente es la utilización de nuevos motores de almacenamiento en MariaDB para complementar el modelo de datos relacional existente en su proyecto.
Cuándo no utilizar MariaDB
La compatibilidad con MySQL es la única preocupación aquí. Dicho esto, se está convirtiendo en un problema menor a medida que proyectos como WordPress, Joomla, Magento, etc., han empezado a soportar MariaDB. Mi consejo sería no utilizar MariaDB para engañar a un CMS que no lo soporte, ya que muchos trucos específicos de la base de datos bloquearán el sistema fácilmente.
Consulte la diferencia entre MariaDB vs MySQL y la guía de instalación de MariaDB.
CockroachDB
El equipo detrás de CockroachDB parece estar compuesto por masoquistas. Con un nombre de producto como ese, seguro que quieren poner todas las probabilidades en su contra y aun así ganar
Pues no del todo.
La idea detrás de «cucaracha» es que es un insecto construido para la supervivencia. Pase lo que pase: depredadores, inundaciones, oscuridad eterna, comida podrida, bombardeos, la cucaracha encuentra la forma de sobrevivir y multiplicarse.
La idea es que el equipo que está detrás de CockroachDB (compuesto por antiguos ingenieros de Google) se sentía frustrado por las limitaciones de las soluciones SQL tradicionales cuando se trata de gran escala. Esto se debe a que, históricamente, las soluciones SQL debían alojarse en una sola máquina (los datos no eran tan grandes). Durante mucho tiempo, no hubo forma de construir un clúster de bases de datos que ejecutaran SQL, razón por la que MongoDB captó tanta atención.
Incluso cuando la replicación y la agrupación en clústeres aparecieron en MySQL, PostgreSQL y MariaDB, fue doloroso en el mejor de los casos. CoackroachDB quiere cambiar eso, trayendo sharding sin esfuerzo, clustering y alta disponibilidad al mundo de SQL.
Cuándo utilizar CockroachDB
CockroachDB es el sueño hecho realidad del arquitecto de sistemas. Si jura por SQL y ha estado cociendo a fuego lento las capacidades de escalado de MongoDB, le encantará CockroachDB. Ahora puede configurar rápidamente un clúster, lanzarle consultas y dormir tranquilo por la noche. 🙂
Cuándo no utilizar CockroachDB
Más vale malo conocido que bueno por conocer. Con esto quiero decir que si su RDBMS actual le funciona bien y cree que puede gestionar los problemas de escalado que conlleva, quédese con él. CockroachDB es un producto nuevo para todos los genios implicados, y no querrá tener que luchar contra él más adelante. Otra razón importante es la compatibilidad con SQL: si hace cosas exóticas con SQL y depende de él para cosas críticas, CockroachDB presentará demasiados casos límite para su gusto.
A partir de ahora, consideraremos soluciones de bases de datos no SQL (o NoSQL, como se denomina) para necesidades muy especializadas.
ClickHouse
¿Busca un sistema de base de datos OLAP rápido y de código abierto?
Decídasepor ClickHouse.
Utiliza cada hardware al máximo de su potencial para abordar cada consulta con mayor rapidez. El rendimiento máximo del procesamiento de una consulta suele ser de más de dos terabytes por segundo. Para evitar el aumento de la latencia, las lecturas se equilibran automáticamente entre las réplicas en buen estado.
Admite la replicación asíncrona multimaestro y puede desplegarla en distintos centros de datos. Como los nodos se mantienen iguales, puede evitar incluso puntos de fallo únicos. El tiempo de inactividad de un solo nodo o del centro de datos completo nunca afectará a la disponibilidad del sistema en términos de escrituras y lecturas.
ClickHouse es muy fácil de usar y sencillo. Agiliza el procesamiento de datos, coloca todos sus datos en un sistema de forma organizada y está disponible al instante para elaborar informes. Además, el dialecto SQL ayuda a expresar el resultado sin utilizar ninguna API no estándar, que puede obtener en sistemas alternativos.
Puede confiar en este sistema de gestión de bases de datos para configurarlo como un sistema distribuido que se encuentra en nodos separados sin puntos de fallo. Además, sus características de seguridad son robustas, incluyendo seguridad de nivel empresarial y mecanismos a prueba de fallos en caso de errores humanos.
ClickHouse puede procesar consultas más rápidamente que los sistemas orientados a filas que tienen la misma capacidad de CPU y rendimiento de E/S. Su formato de almacenamiento de datos en columnas ayuda a mantener más datos dentro de la memoria RAM, lo que se traduce en tiempos de respuesta más cortos.
El coste total de propiedad puede reducirse si el hardware básico dispone de unidades de disco giratorias en lugar de utilizar NVMe/SSD sin sacrificar la latencia de las consultas. Busca la eficiencia de la CPU, optimiza el acceso a la unidad de disco y minimiza las transferencias de datos.
Además, gracias a su base de datos SQL repleta de funciones, podrá procesar eficazmente sus consultas en un abrir y cerrar de ojos, unir datos coubicados y distribuidos, gestionar eficazmente la información desnormalizada y mucho más. ClickHouse escala horizontal y verticalmente y se adapta fácilmente para funcionar en un único servidor o en clusters con miles de nodos.
Utilice ClickHouse para análisis web y de aplicaciones, telecomunicaciones, redes publicitarias, juegos en línea, IoT, inteligencia empresarial, finanzas, comercio electrónico, supervisión y mucho más.
Se integra con Hadoop, Postgres y MySQL.
Si no está preparado para instalar y configurar un servidor, puede probar Kamatera, que ofrece ClickHouse con un solo clic.
Neo4j
Uno de los desarrollos más significativos de la última década son los datos conectados. El mundo que nos rodea no está dividido en tablas y filas y cajas: es un lío gigante con todo conectado a casi todo lo demás.
Las redes sociales son un buen ejemplo, y construir un modelo de datos similar utilizando SQL o incluso bases de datos basadas en documentos es una pesadilla.
Eso se debe a que la estructura de datos ideal para estas soluciones es el grafo, que es una bestia completamente diferente. Y para eso se necesita una base de datos de grafos como Neo4j.
El ejemplo anterior fue tomado directamente del sitio web de Neo4j y muestra cómo los estudiantes universitarios están conectados a sus departamentos y cursos. Un modelo de datos así es sencillamente imposible con SQL, ya que será difícil evitar los bucles infinitos y los desbordamientos de memoria.
Características únicas
Lasbases de datos de gráficos son únicas en sí mismas, y Neo4j es prácticamente la única opción para trabajar con gráficos. Como resultado, las características que tiene son únicas 🙂
- Soporte para aplicaciones transaccionales y análisis de gráficos.
- Capacidades de transformación de datos para digerir datos tabulares a gran escala en gráficos.
- Lenguaje de consulta especializado (Cypher) para consultar la base de datos de grafos
- Funciones de visualización y descubrimiento
Es discutible discutir cuándo utilizar Neo4j y cuándo no. Si necesita relaciones basadas en gráficos entre sus datos, necesita Neo4j. 🙂
MongoDB
MongoDB fue la primera base de datos no relacional que causó sensación en la industria tecnológica y sigue acaparando buena parte de la atención.
A diferencia de las bases de datos relacionales, MongoDB es una «base de datos de documentos», que almacena los datos en trozos, con los datos relacionados agrupados en el mismo trozo. Esto se entiende mejor imaginando una agregación de estructuras JSON como ésta:
Aquí, a diferencia de una estructura basada en tablas, los datos de contacto del usuario y los niveles de acceso residen dentro del mismo objeto. Al obtener el objeto de usuario se obtienen automáticamente los datos asociados, y no existe el concepto de join. Aquí tiene una introducción más detallada a MongoDB.
Características únicas
MongoDB tiene algunas características serias (casi quiero escribir «cojonudas» para transmitir el impacto, pero no sería apropiado en un sitio web público, quizás) que han hecho que varios arquitectos avezados abandonen el terreno relacional para siempre:
- Un esquema flexible para casos de uso especializados/impredecibles.
- Sharding y clustering ridículamente sencillos. Basta con establecer la configuración de un clúster y olvidarse de él.
- Añadir o eliminar un nodo de un clúster es sencillísimo.
- Bloqueos transaccionales distribuidos. Esta característica faltaba en las versiones anteriores, pero finalmente se introdujo.
- Está optimizada para escrituras muy rápidas, lo que la hace muy adecuada para datos analíticos como sistema de almacenamiento en caché.
Si parezco un portavoz de MongoDB, pido disculpas, pero es difícil exagerar las ventajas de MongoDB. Claro que el modelado de datos NoSQL es extraño al principio, y algunos nunca le cogen el truco, pero para muchos arquitectos, casi siempre gana a un esquema basado en tablas.
Cuándo utilizar MongoDB
MongoDB es un gran puente transversal entre el mundo estructurado y estricto de SQL y el amorfo y casi confuso de NoSQL. Sobresale en el desarrollo de prototipos, ya que simplemente no hay ningún esquema del que preocuparse y cuando realmente necesita escalar. Sí, puede utilizar un servicio SQL en la nube para librarse de los problemas de escalado de BD, pero ¡vaya si es caro!
Por último, hay casos de uso en los que las soluciones basadas en SQL simplemente no sirven. Por ejemplo, si está creando un producto como Canva, en el que el usuario puede crear diseños arbitrariamente complejos y poder editarlos después, ¡buena suerte con una base de datos relacional!
Cuándo no utilizar MongoDB
La falta total de esquema que proporciona MongoDB puede funcionar como un pozo de alquitrán para aquellos que no saben lo que están haciendo. Desajuste de datos, datos muertos, campos vacíos que no deberían estar vacíos… todo esto y mucho más es posible. MongoDB es esencialmente un almacén de datos «tonto», y si lo elige, el código de la aplicación tiene que asumir gran parte de la responsabilidad de mantener la integridad de los datos.
Si usted es un desarrollador, entonces esto le resultará útil.
RethinkDB
Como su nombre indica, RethinkDB «replantea» la idea y las capacidades de una base de datos cuando se trata de aplicaciones en tiempo real.
Cuando una base de datos se actualiza, no hay forma de que la aplicación lo sepa. El enfoque aceptado es que la aplicación lance una notificación en cuanto se produce una actualización, que se empuja al front-end a través de un complejo puente (PHP -> Redis -> Node -> Socket.io es un ejemplo).
Pero, ¿y si las actualizaciones pudieran enviarse directamente desde la base de datos al front-end?
Sí, esa es la promesa de RethinkDB. Así que si está por hacer una verdadera aplicación en tiempo real (juego, mercado, analítica, etc.), merece la pena echar un vistazo a Rethink DB.
Redis
Cuando se trata de bases de datos, es casi demasiado fácil pasar por alto la existencia de Redis. Eso se debe a que Redis es una base de datos en memoria y se utiliza sobre todo en funciones de apoyo como el almacenamiento en caché.
Aprender a utilizar esta base de datos es un trabajo de diez minutos (¡literalmente!), y se trata de un simple almacén de valores clave que almacena cadenas con un tiempo de caducidad (que puede fijarse en el infinito, por supuesto). Lo que Redis pierde en características lo compensa en utilidad y rendimiento. Dado que vive enteramente en RAM, las lecturas y escrituras son increíblemente rápidas (unos cientos de miles de operaciones por segundo no son inauditos).
Redis también cuenta con un sofisticado sistema pub-sub, que hace que esta «base de datos» sea el doble de atractiva.
En otras palabras, si tiene un proyecto que podría beneficiarse del almacenamiento en caché o tiene algunos componentes distribuidos, Redis es la primera opción.
SQLite
Sí, prometí que habíamos terminado con las bases de datos relacionales, pero SQLite es demasiado bonita para ignorarla.
SQLite es una biblioteca C ligera que proporciona un motor de almacenamiento de base de datos relacional. Todo en esta base de datos vive en un único archivo (con extensión .sqlite) que puede colocar en cualquier lugar de su sistema de archivos. ¡Y eso es todo lo que necesita para utilizarla! Sí, no hay que instalar ningún software «servidor» ni conectarse a ningún servicio.
Características útiles
Aunque SQLite es una alternativa ligera a una base de datos como MySQL, tiene bastante pegada. Algunas de sus impactantes características son
- Soporte completo para transacciones, con COMMIT, ROLLBACK y BEGIN.
- Soporte para 32.000 columnas por tabla
- Soporte JSON
- soporte de 64-way JOIN
- Subconsultas, búsqueda de texto completo, etc.
- Tamaño máximo de la base de datos de 140 terabytes
- Tamaño máximo de fila de 1 gigabyte
- 35% más rápido que la E/S de archivos
Cuándo utilizar SQLite
SQLite es una base de datos extremadamente especializada que se centra en un enfoque sin tonterías. Si su aplicación es relativamente sencilla y no desea las complicaciones de una base de datos completa, SQLite es un serio candidato. Tiene especial sentido para los CMS de tamaño pequeño a mediano y las aplicaciones de demostración.
Cuándo no usar SQLite
Aunque impresionante, SQLite no cubre todas las características de SQL estándar o de su motor de base de datos favorito. Faltan la agrupación en clústeres, los procedimientos almacenados y las extensiones de secuencias de comandos. Además, no existe un cliente para conectarse, consultar y explorar la base de datos. Por último, a medida que aumente el tamaño de la aplicación, el rendimiento se degradará.
Cassandra
Mientras muchos proclaman que el fin está cerca para Java, de vez en cuando, la comunidad lanza una bomba y silencia a los críticos. Cassandra es uno de esos ejemplos.
Cassandra pertenece a lo que se conoce como la familia «columnar» de bases de datos. La abstracción de almacenamiento en Cassandra es una columna en lugar de una fila. La idea aquí es almacenar todos los datos de una columna físicamente juntos en el disco, minimizando el tiempo de búsqueda.
Características únicas
Cassandra se diseñó con un caso de uso específico en mente: lidiar con cargas de escritura pesadas y tolerancia cero al tiempo de inactividad. Estos se convierten en sus puntos de venta únicos
- Rendimiento de escritura extremadamente rápido. Cassandra es posiblemente la base de datos más rápida que existe cuando se trata de manejar cargas de escritura pesadas.
- Escalabilidad lineal. Es decir, puede seguir añadiendo tantos nodos a un clúster como desee, y habrá un incremento cero en la complejidad o fragilidad del clúster.
- Tolerancia inigualable a las particiones. Es decir, incluso si varios nodos de un clúster Cassandra se caen, la base de datos está diseñada para seguir funcionando sin pérdida de integridad.
- Tipificación estática
Cuándo utilizar Cassandra
El registro y la analítica son dos de los mejores casos de uso para Cassandra. Pero eso no es todo: el punto dulce es cuando se necesita manejar tamaños realmente grandes de datos (Apple tiene un despliegue de Cassandra que maneja 400 petabytes de datos, mientras que en Netflix, maneja 1 billón de peticiones al día) con literalmente cero tiempo de inactividad. La alta disponibilidad es una de las señas de identidad de Cassandra.
Cuándo no utilizar Cassandra
El esquema de almacenamiento en columnas de Cassandra también tiene sus desventajas. El modelo de datos es bastante plano, y si necesita agregaciones, entonces Cassandra se queda corto. Además, consigue una alta disponibilidad sacrificando la consistencia (recuerde el teorema CAP para sistemas distribuidos), lo que lo hace menos adecuado para sistemas en los que se necesita una alta precisión de lectura.
Escala de tiempo
Los nuevos desarrollos exigen nuevos tipos de bases de datos, y el Internet de las cosas (IoT) es uno de ellos. Una de las mejores bases de datos de código abierto para ello es Timescale.
Timescale es un tipo de lo que se denomina base de datos de «series temporales». Se diferencia de una base de datos tradicional en que el tiempo es el principal eje de preocupación, y el análisis y la visualización de conjuntos de datos masivos es una prioridad absoluta. Las bases de datos de series temporales rara vez ven un cambio en los datos existentes; un ejemplo son las lecturas de temperatura enviadas por un sensor en un invernadero: cada segundo se acumulan nuevos datos, que son de interés para la analítica y la elaboración de informes.
Entonces, ¿por qué no utilizar únicamente una base de datos tradicional con un campo de marca de tiempo? Bueno, hay dos razones principales para ello:
- Las bases de datos de uso general no están optimizadas para trabajar con datos basados en el tiempo. Para las mismas cantidades de datos, una base de datos de propósito general será mucho más lenta.
- La base de datos necesita manejar cantidades masivas de datos a medida que los nuevos datos siguen fluyendo, y eliminar datos o cambiar el esquema, más tarde no es una opción.
Características únicas
Timescale DB tiene algunas características interesantes que la diferencian de otras bases de datos de la misma categoría:
- Está construida sobre PostgreSQL, posiblemente la mejor base de datos relacional de código abierto que existe. Si su proyecto ya ejecuta PostgreSQL, Timescale se integrará perfectamente.
- Las consultas se realizan a través de la conocida sintaxis SQL, lo que reduce la curva de aprendizaje.
- Velocidades de escritura ridículamente rápidas: millones de inserciones por segundo no son inauditas.
- Miles de millones de filas o petabytes de datos — no es un gran problema para Timescale.
- Verdadera flexibilidad con el esquema — elija entre relacional o sin esquema según sus necesidades.
No tiene mucho sentido hablar de cuándo utilizar o no Timescale DB. Si IoT es su dominio, o si busca características de base de datos similares, merece la pena echar un vistazo a Timescale.
CouchDB
CouchDB es una pequeña y ordenada solución de base de datos que se asienta silenciosamente en un rincón y cuenta con un pequeño pero dedicado grupo de seguidores. Se creó para hacer frente a los problemas de una pérdida de red y la eventual resolución de los datos, que resulta ser un problema tan engorroso que los desarrolladores preferirían cambiar de trabajo antes que ocuparse de él.
Esencialmente, puede pensar en un clúster CouchDB como una colección distribuida de nodos grandes y pequeños, algunos de los cuales se espera que estén desconectados. Tan pronto como un nodo se conecta, envía datos al clúster, que son digeridos lenta y cuidadosamente, quedando finalmente a disposición de todo el clúster.
Características únicas
CouchDB es una especie única en lo que a bases de datos se refiere.
- Capacidad de sincronización de datos sin conexión
- Versiones especializadas para móviles y navegadores web (PouchDB, CouchDB Lite, etc.)
- Fiabilidad a prueba de golpes y batallas
- Agrupación sencilla con almacenamiento redundante de datos
Cuándo utilizar CouchDB
CouchDB se creó para la tolerancia fuera de línea y sigue siendo inigualable en este sentido. Un caso de uso típico son las aplicaciones móviles en las que una parte de sus datos reside en una instancia de CouchDB en el teléfono del usuario (porque es ahí donde se generaron). Lo emocionante es que no se puede confiar en que el dispositivo del usuario esté conectado todo el tiempo, lo que significa que la base de datos tiene que ser oportunista y estar preparada para resolver actualizaciones conflictivas más adelante. Esto se consigue utilizando el impresionante protocolo de replicación de Couch.
Cuándo no usar CouchDB
Intentar utilizar CouchDB fuera de su caso de uso previsto conducirá al desastre. Utiliza mucho más almacenamiento que cualquier otra cosa que exista, simplemente porque necesita mantener copias redundantes de los datos y de los resultados de la resolución de conflictos. Como resultado, las velocidades de escritura también son dolorosamente lentas. Por último, CouchDB no es adecuado como motor de esquemas de uso general, ya que no se lleva bien con los cambios de esquema.
FerretDB
FerretDB es una plataforma innovadora de código abierto construida sobre Postgres como alternativa a MongoDB. MongoDB es la base de datos más fácil de usar y con mejor soporte, lo que permite a los desarrolladores crear aplicaciones más rápidamente que las bases de datos relacionales.
Sin embargo, MongoDB abandonó sus raíces de código abierto, cambiando la licencia pública del lado del servidor y haciéndola inutilizable para muchos proyectos comerciales y de código abierto; aquí es donde FerretDB entra en escena. Con FerretDB, los usuarios pueden ejecutar las mismas consultas del protocolo MongoDB sin necesidad de aprender un nuevo lenguaje o comando.
FerretDB es una base de datos de documentos de código abierto con compatibilidad MongoDB incorporada al tiempo que permite a PostgreSQL y otros backends de bases de datos ejecutar cargas de trabajo MongoDB; esto le permite utilizar la sintaxis y comandos MongoDB existentes con su base de datos almacenada en PostgreSQL.
PostgreSQL, sobre el que está construido FerretDB, es un robusto sistema de gestión de bases de datos relacionales (RDMS) de código abierto. Es una opción de bajo coste para crear bases de datos escalables de nivel empresarial. PostgreSQL tiene todas las capacidades y características que necesita una base de datos relacional. Almacena los datos como objetos estructurados con filas y columnas, perfectos para búsquedas y transacciones masivas complejas.
FerretDB es una base de datos de documentos que utiliza comandos, controladores y herramientas similares a MongoDB para almacenar datos.
A diferencia de las bases de datos relacionales, que especifican la estructura de la base de datos mediante tablas, filas y columnas, FerretDB guarda la información como documentos JSON, lo que permite una integración perfecta con las modernas aplicaciones en línea y móviles.
La capacidad de FerretDB para buscar rápida y eficazmente en enormes bases de datos es una de sus características más destacadas. Además, la plataforma es muy adaptable, lo que le permite ajustarla a las necesidades de su organización.
Es una solución de base de datos increíble tanto para profesionales como para principiantes. Es un buscador de aplicaciones blockchain completamente descentralizado.
Ferretdb es una robusta herramienta de administración de bases de datos que permite a los desarrolladores y administradores de bases de datos buscar, probar y desplegar código.
Conclusión
He tenido que dejar fuera a muchos candidatos interesantes como Riak, así que esta lista debe tomarse como una guía más que como un mandamiento. Espero haber logrado mi objetivo con este artículo: presentar no sólo una colección de recomendaciones de software de bases de datos, sino también discutir brevemente dónde y cómo deben utilizarse (¡y evitarse!).
Si tiene curiosidad por aprender bases de datos, eche un vistazo a Udemy, donde encontrará brillantes cursos en línea.