Los datos lo son todo. Y, por extensión, también lo son las bases de datos. Aquí hay algunas opciones fantásticas de código abierto para su próximo proyecto espectacular.

Para un mundo dominado durante tanto tiempo por las bases de datos como Oracle y SQL Server, parece que ahora hay un sinfín de soluciones. Una parte de la razón es la innovación impulsada por el código abierto: desarrolladores realmente talentosos que desean rascarse un picor y crear algo en lo que puedan deleitarse.

La otra parte es el surgimiento de nuevos modelos comerciales, en los que las empresas mantienen una versión comunitaria de su producto para ganar participación y tracción al mismo tiempo que brindan una oferta comercial complementaria.

¿El resultado?

Más bases de datos de las que uno puede mantener. No hay una estadística oficial sobre esto, pero estoy bastante seguro de que tenemos más de cien opciones disponibles hoy si combina todo, desde bases de datos de objetos específicos de pila hasta proyectos no tan populares de universidades.

Sé; también me asusta. Demasiadas opciones, demasiada documentación para revisar, y una vida tan corta. 🙂

Es por eso que decidí escribir este artículo, presentando diez de las mejores bases de datos que puede utilizar para mejorar sus soluciones, ya sea para usted o para otros.

Sin MySQL

Tenga en cuenta: esta lista no contendrá MySQL, aunque podría decirse que es 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 marcos que existen, 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 las siguientes no son necesariamente alternativas a MySQL. En algunos casos, pueden ser, mientras que en otros, son una solución completamente diferente para una necesidad completamente diferente. No se preocupe, ya que hablaré sobre sus usos también.

Nota especial: compatibilidad

Antes de comenzar, también debo mencionar que la compatibilidad es algo que debe tener en cuenta. Si tiene un proyecto que, por el motivo que sea, admite solo un motor de base de datos en particular, sus opciones son prácticamente completas.

Por ejemplo, si utiliza WordPress, este artículo no le servirá de nada. 🙂 De manera similar, aquellos que ejecutan sitios estáticos en JAMStack no ganarán nada si buscan alternativas con demasiada seriedad.

Depende de usted descubrir la ecuación de compatibilidad. Sin embargo, si tiene una pizarra en blanco y la arquitectura depende de usted, aquí hay algunas recomendaciones interesantes.

PostgreSQL

Si eres del país PHP (WordPress, Magento, Drupal, etc.), entonces PostgreSQL te sonará extraño. Sin embargo, este software de base de datos relacional existe desde 1997 y es la mejor opción en comunidades como Ruby, Python, Go, etc.

De hecho, muchos desarrolladores eventualmente se “gradúan” a PostgreSQL por las características que ofrece o simplemente por la estabilidad. Es difícil convencer a alguien con un artículo breve como este, pero piensa en PostgreSQL como un producto cuidadosamente diseñado que nunca te defrauda.

Hay muchos buenos Clientes SQL disponible 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 integrados para matriz, rango, UUID, geolocalización, etc.
  • Soporte nativo para almacenamiento de documentos (estilo JSON), XML y almacenamiento de valor clave (Hstore)
  • Replicación sincrónica y asincrónica
  • Scriptable en PL, Perl, Python y más
  • Búsqueda de texto completo

Mis favoritos personales son el motor de geolocalización (que elimina el dolor al trabajar con aplicaciones basadas en la ubicación; intente encontrar todos los puntos cercanos manualmente y sabrá a qué me refiero) y el soporte para matrices (muchos proyectos MySQL se deshacen por falta de matrices, optando en su lugar por las infames cadenas separadas por comas).

Cuándo usar 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 MySQL lo ha mordido antes, es un buen momento para considerar PostgreSQL. Tengo amigos que dejaron de luchar contra las misteriosas fallas de bloqueo transaccional de MySQL y siguieron adelante permanentemente. Si decide lo mismo, no reaccionará exageradamente.

PostgreSQL también tiene una clara ventaja si necesita instalaciones NoSQL parciales para un modelo de datos híbrido. Dado que el almacenamiento de documentos y valores clave se admite de forma nativa, no es necesario buscar, instalar, aprender y mantener otra solución de base de datos.

Cuando no usa 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 comienzan a desmoronarse cuando se trata de grandes conjuntos de datos.

En otras palabras, use siempre PostgreSQL a menos que sepa al 100% lo que está haciendo. 🙂

Mira este pequeño Curso de SQL y PostgreSQL para principiantes si está interesado en aprender más.

MariaDB

MariaDB fue creado como reemplazo de MySQL por la misma persona que desarrolló MySQL.

¿Confuso?

Bueno, en realidad, después de que Oracle se hiciera cargo de MySQL en 2010 (al adquirir Sun Microsystems, que, dicho sea de paso, también es la forma en que Oracle llegó a controlar Java), el creador de MySQL inició un nuevo proyecto de código abierto llamado MariaDB.

¿Por qué importan todos estos detalles aburridos, preguntas? 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 reemplazo "directo" de MySQL.

Es decir, si está utilizando MySQL y desea migrar a MariaDB, el proceso es tan fácil que simplemente no lo vas a creer.

Desafortunadamente, tal migración es una calle de sentido único. No es posible volver de MariaDB a MySQL, y si intenta usar la fuerza, ¡la corrupción permanente de la base de datos está asegurada!

Las características únicas

Si bien MariaDB es esencialmente un clon de MySQL, no es estrictamente cierto. Desde la introducción de la base de datos, las diferencias entre los dos han ido en aumento. Al momento de escribir, la adopción de MariaDB debe ser una decisión bien pensada de su parte. Dicho esto, hay muchas cosas nuevas en MariaDB que pueden ayudarlo a hacer esta transición:

  • Verdaderamente libre y abierto: dado que no existe una sola entidad corporativa que controle MariaDB, puede estar libre de licencias predatorias repentinas 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 distribuido paralelo; y muchos muchos mas.
  • Mejoras de velocidad sobre MySQL, especialmente debido al motor de almacenamiento Aria para consultas complejas.
  • Columnas dinámicas para diferentes filas en una tabla.
  • Mejores capacidades de replicación (por ejemplo, replicación de múltiples fuentes)
  • Varias funciones JSON
  • Columnas virtuales

. . . Y muchos muchos mas. Es agotador mantenerse al día con todas las funciones de MariaDB. 🙂

Cuando usar MariaDB

Si desea un verdadero reemplazo de MySQL, debe usar MariaDB, ya que quieren permanecer en la curva de innovación y no planean regresar a MySQL nuevamente. Un caso de uso excelente es el uso de nuevos motores de almacenamiento en MariaDB para complementar el modelo de datos relacionales existente de su proyecto.

Cuando no usar MariaDB

La compatibilidad con MySQL es la única preocupación aquí. Dicho esto, se está volviendo un problema menor a medida que proyectos como WordPress, Joomla, Magento, etc., han comenzado a admitir MariaDB. Mi consejo sería no usar MariaDB para engañar a un CMS que no lo admite, ya que muchos trucos específicos de la base de datos bloquearán el sistema fácilmente.

Mira la diferencia entre MariaDB frente a MySQL y 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, seguramente quieren poner todas las probabilidades en su contra y aún así ganar.

Bueno, no exactamente.

La idea detrás de "cucaracha" es que es un insecto construido para sobrevivir. Pase lo que pase: depredadores, inundaciones, oscuridad eterna, comida podrida, bombardeos, la cucaracha encuentra la manera de sobrevivir y multiplicarse.

La idea es que el equipo detrás de CockroachDB (compuesto por antiguos ingenieros de Google) estaba frustrado con las limitaciones de las soluciones SQL tradicionales cuando se trata de gran escala. Esto se debe a que, históricamente, se suponía que las soluciones SQL estaban alojadas en una sola máquina (los datos no eran tan grandes). Durante mucho tiempo, no había forma de crear un clúster de bases de datos que ejecutaran SQL, razón por la cual MongoDB captó tanta atención.

Incluso cuando surgió la replicación y la agrupación en clústeres en MySQL, PostgreSQL y MariaDB, fue doloroso en el mejor de los casos. CoackroachDB quiere cambiar eso, brindando fragmentación, agrupación en clústeres y alta disponibilidad sin esfuerzo para el mundo de SQL.

Cuándo usar CockroachDB

Cucarachas es el sueño del arquitecto de sistemas hecho realidad. Si jura por SQL y ha estado hirviendo a fuego lento con las capacidades de escalado de MongoDB, le encantará CockroachDB. Ahora puede configurar rápidamente un clúster, enviarle consultas y dormir tranquilo por la noche. 🙂

Cuando no usar CockroachDB

Mejor el diablo que conoces que el que no conoces. Con eso, quiero decir, si su RDBMS existente está funcionando bien para usted y cree que puede manejar los dolores de escala que trae, quédese con él. CockroachDB es un producto nuevo para todos los genios involucrados, y no querrás luchar contra él más adelante. Otra razón importante es la compatibilidad con SQL: si está haciendo cosas exóticas de SQL y confía en él para cosas críticas, CockroachDB presentará demasiados casos extremos para su gusto.

De ahora en adelante, consideraremos soluciones de base de datos que no sean SQL (o NoSQL, como se le llama) para necesidades altamente especializadas.

ClickHouse

¿Está buscando un sistema de base de datos OLAP rápido y de código abierto?

Ir por ClickHouse.

Utiliza cada hardware en su máximo potencial para abordar cada consulta más rápido. El rendimiento máximo de procesamiento de una consulta suele ser de más de dos terabytes por segundo. Para evitar una mayor latencia, las lecturas se equilibran automáticamente entre las réplicas en buen estado. 

Admite la replicación asíncrona multimaestro y puede implementarla en diferentes centros de datos. Como los nodos se mantienen iguales, puede evitar incluso puntos de falla únicos. El tiempo de inactividad de un solo nodo o del centro de datos completo nunca afectará la disponibilidad del sistema en términos de escrituras y lecturas.

ClickHouse es muy fácil de usar y simple. Agiliza el procesamiento de datos, coloca todos sus datos en un sistema de manera organizada y está disponible instantáneamente para generar 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 administración de bases de datos para configurarlo como un sistema distribuido que se ubica en nodos separados sin puntos de falla. Además, sus características de seguridad son sólidas, incluida la seguridad de nivel empresarial y los mecanismos a prueba de fallas en caso de errores humanos.

ClickHouse puede procesar consultas más rápido en comparación con 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 RAM, lo que resulta en tiempos de respuesta más cortos.

El costo total de propiedad se puede reducir si el hardware básico tiene unidades de disco rotativas en lugar de usar NVMe / SSD sin sacrificar la latencia de las consultas. Se esfuerza por lograr la eficiencia de la CPU, optimiza el acceso a la unidad de disco y minimiza las transferencias de datos. 

Además, debido a su base de datos SQL con funciones, puede procesar su consulta de manera eficiente en poco tiempo, unir datos distribuidos y ubicados en el mismo lugar, administrar información desnormalizada de manera eficiente y más. ClickHouse escala horizontal y verticalmente y se adapta fácilmente para funcionar en un solo servidor o clústeres con miles de nodos.

Utilice ClickHouse para análisis web y de aplicaciones, telecomunicaciones, redes publicitarias, juegos en línea, IoT, Inteligencia de Negocio, finanzas, comercio electrónico, monitoreo y más. 

Se integra con Hadoop, Postgres y MySQL.

Si no está listo para instalar y configurar un servidor, puede probar Kamatera que ofrece ClickHouse con un solo clic.

Neo4j

Uno de los desarrollos más importantes de la última década son los datos conectados. El mundo que nos rodea no está dividido en tablas, filas y cajas; es un desastre gigante con todo conectado a casi todo lo demás.

Las redes sociales son un buen ejemplo, y construir un modelo de datos similar usando SQL o incluso bases de datos basadas en documentos es una pesadilla.

Eso es porque la estructura de datos ideal para estas soluciones es el gráfico, que es una bestia completamente diferente. Y para eso, necesita una base de datos gráfica como neo4j.

El ejemplo anterior se tomó directamente del sitio web de Neo4j y muestra cómo los estudiantes universitarios están conectados a sus departamentos y cursos. Este modelo de datos es simplemente imposible con SQL, ya que será difícil evitar bucles infinitos y desbordes de memoria.

Las características únicas

Las bases 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, cualquier característica que tenga es única. 🙂

  • Soporte para aplicaciones transaccionales y análisis de gráficos.
  • Habilidades de transformación de datos para asimilar datos tabulares a gran escala en gráficos.
  • Lenguaje de consulta especializado (Cypher) para consultar la base de datos de gráficos
  • Funciones de visualización y descubrimiento

Es un punto discutible discutir cuándo usar 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 generó grandes cambios en la industria de la tecnología y continúa dominando una buena parte de la atención.

A diferencia de las bases de datos relacionales, MongoDB es una "base de datos de documentos", que almacena datos en fragmentos, con datos relacionados agrupados en el mismo fragmento. Esto se comprende mejor imaginando una agregación de estructuras JSON como esta:

Aquí, a diferencia de una estructura basada en tablas, los detalles de contacto del usuario y los niveles de acceso residen dentro del mismo objeto. Al recuperar el objeto de usuario, se obtienen los datos asociados automáticamente y no existe el concepto de combinación. Esto es una introducción más detallada a MongoDB.

Las características únicas

MongoDB tiene algunas características serias (casi quiero escribir "kick-ass" para transmitir el impacto, pero no sería apropiado en un sitio web público, tal vez) características que han hecho que varios arquitectos experimentados abandonen la tierra relacional para siempre:

  • Un esquema flexible para casos de uso especializados / impredecibles.
  • Ridículamente simple sharding y agrupación. Solo necesita configurar la configuración para un clúster y olvidarse de él.
  • Agregar o eliminar un nodo de un clúster es muy sencillo.
  • Cerraduras transaccionales distribuidas. Esta característica faltaba en las versiones anteriores, pero finalmente se introdujo.
  • Está optimizado para escrituras muy rápidas, lo que lo hace muy adecuado para datos analíticos como sistema de almacenamiento en caché.

Si sueno como un portavoz de MongoDB, me disculpo, pero es difícil exagerar las ventajas de MongoDB. Claro, el modelado de datos NoSQL es extraño al principio, y algunos nunca lo consiguen, pero para muchos arquitectos, casi siempre gana sobre un esquema basado en tablas.

Cuándo usar MongoDB

MongoDB es un gran puente cruzado del mundo estructurado y estricto de SQL al amorfo, casi confuso, de NoSQL. Se destaca en el desarrollo de prototipos, ya que simplemente no hay un esquema del que preocuparse y cuándo democracia Necesito escalar. Sí, puede usar un servicio SQL en la nube para deshacerse de los problemas de escalamiento de la base de datos, pero ¡es caro!

Finalmente, hay casos de uso en los que las soluciones basadas en SQL simplemente no funcionan. Por ejemplo, si está creando un producto como Canva, donde el usuario puede crear diseños arbitrariamente complejos y poder editarlos más tarde, ¡buena suerte con una base de datos relacional!

Cuando no usar 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. Discrepancia 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 debe asumir una gran responsabilidad para mantener la integridad de los datos.

Si es un desarrollador, encontrará esto útil.

RethinkDB

Como dice su nombre, RepensarDB “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, la aplicación no tiene forma de saberlo. El enfoque aceptado es que la aplicación active una notificación tan pronto como haya una actualización, que se envía al front-end a través de un puente complejo (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. Entonces, si está creando una verdadera aplicación en tiempo real (juego, mercado, análisis, etc.), vale la pena echarle 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 es porque Redis es una base de datos en memoria y se usa principalmente en funciones de soporte como el almacenamiento en caché.

Aprendiendo esta base de datos es un trabajo de diez minutos (¡literalmente!), y es una simple tienda de valores clave que almacena cadenas con un tiempo de caducidad (que se puede configurar en infinito, por supuesto). Lo que Redis pierde en características lo compensa en utilidad y rendimiento. Dado que vive completamente en RAM, las lecturas y escrituras son increíblemente rápidas (unos cientos de miles de operaciones por segundo no son desconocidas).

Redis también tiene un sofisticado pub-sub sistema, lo que hace que esta "base de datos" sea el doble que entractive.

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 lindo para ignorarlo.

SQLite es una biblioteca C liviana que proporcionó un motor de almacenamiento de base de datos relacional. Todo en esta base de datos vive en un solo archivo (con una extensión .sqlite) que puede colocar en cualquier lugar de su sistema de archivos. ¡Y eso es todo lo que necesitas para usarlo! Sí, no hay software de "servidor" para instalar ni servicio al que conectarse.

Caracteristicas utiles

Aunque SQLite es una alternativa ligera a una base de datos como MySQL, tiene un gran impacto. 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 JOIN de 64 vías
  • 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

Cuando usar SQLite

SQLite es una base de datos extremadamente especializada que se centra en un enfoque sensato y sencillo. Si su aplicación es relativamente simple y no desea la molestia de una base de datos completa, SQLite es un candidato serio. Tiene especial sentido para aplicaciones de demostración y CMS de tamaño pequeño a mediano.

Cuando no usa SQLite

Si bien es impresionante, SQLite no cubre todas las características de SQL estándar o 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 hay ningún cliente para conectarse, consultar y explorar la base de datos. Finalmente, a medida que aumenta el tamaño de la aplicación, el rendimiento se degrada.

Cassandra

Si bien muchos proclaman que el final de Java está cerca, 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 de bases de datos "en columnas". La abstracción de almacenamiento en Cassandra es una columna en lugar de una fila. La idea aquí es almacenar todos los datos en una columna físicamente juntos en el disco, minimizando el tiempo de búsqueda.

Las características únicas

Cassandra se diseñó con un caso de uso específico en mente: lidiar con cargas de escritura pesada y tolerancia cero para el 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 agregando tantos nodos a un clúster como desee, y habrá un aumento cero en la complejidad o fragilidad del clúster.
  • Tolerancia de partición inigualable. Es decir, incluso si varios nodos de un clúster de Cassandra caen, la base de datos está diseñada para seguir funcionando sin pérdida de integridad.
  • Mecanografía estática

Cuando usar Cassandra

El registro y la analítica son dos de los mejores casos de uso para Cassandra. Pero eso no es todo: el punto óptimo es cuando necesita manejar tamaños de datos realmente grandes (Apple tiene una implementación de Cassandra que maneja más de 400 petabytes de datos mientras que en Netflix maneja 1 billón de solicitudes al día) con literalmente cero tiempo de inactividad. La alta disponibilidad es una de las señas de identidad de Cassandra.

Cuando no usar Cassandra

El esquema de almacenamiento de columnas de Cassandra también tiene sus desventajas. El modelo de datos es bastante plano, y si necesita agregaciones, Cassandra se queda corto. Además, logra una alta disponibilidad sacrificando la consistencia (recuerde el teorema CAP para sistemas distribuidos), lo que lo hace menos adecuado para sistemas donde se necesita una alta precisión de lectura.

Timescale

Los nuevos desarrollos exigen nuevos tipos de bases de datos, y la Internet de las cosas (IoT) es uno de esos fenómenos. Una de las mejores bases de datos de código abierto para eso es Escala de tiempo.

La escala de tiempo es un tipo de lo que se llama una base de datos de "series de tiempo". Es diferente de una base de datos tradicional en ese momento es el eje principal 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 de tiempo rara vez ven un cambio en los datos existentes; un ejemplo son las lecturas de temperatura enviadas por un sensor en un invernadero: se siguen acumulando nuevos datos cada segundo, lo que es de interés para análisis e informes.

Entonces, ¿por qué no usar solo una base de datos tradicional con un campo de marca de tiempo? Bueno, hay dos razones principales para eso:

  • Las bases de datos de uso general no están optimizadas para trabajar con datos basados ​​en el tiempo. Para la misma cantidad 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 ingresan nuevos datos, y eliminar datos o cambiar el esquema más adelante no es una opción.

Las características únicas

Timescale DB tiene algunas características interesantes que la distinguen de otras bases de datos en la misma categoría:

  • Está construido sobre PostgreSQL, posiblemente la mejor base de datos relacional de código abierto que existe. Si su proyecto ya está ejecutando PostgreSQL, Timescale se deslizará directamente.
  • La consulta se realiza mediante la sintaxis SQL familiar, lo que reduce la curva de aprendizaje.
  • Velocidades de escritura ridículamente rápidas: millones de inserciones por segundo no son desconocidas.
  • Miles de millones de filas o petabytes de datos: no es un gran problema para Timescale.
  • Verdadera flexibilidad con esquema: elija entre relacional o sin esquema según sus necesidades.

No tiene mucho sentido hablar sobre cuándo usar o no usar Timescale DB. Si IoT es su dominio, o busca características de base de datos similares, vale la pena echarle un vistazo a Timescale.

CouchDB

CouchDB es una pequeña y elegante solución de base de datos que se encuentra tranquilamente en una esquina y tiene un número reducido pero dedicado de seguidores. Fue creado para lidiar con los problemas de una pérdida de red y una eventual resolución de datos, lo que resulta ser un problema tan complicado que los desarrolladores cambiarían de trabajo en lugar de lidiar con él.

Básicamente, puede pensar en un clúster de CouchDB como una colección distribuida de nodos grandes y pequeños, algunos de los cuales se espera que estén fuera de línea. Tan pronto como un nodo se conecta, envía datos de vuelta al clúster, que se digiere lenta y cuidadosamente, y eventualmente estará disponible para todo el clúster.

Las características únicas

CouchDB es una especie única cuando se trata de bases de datos.

  • Capacidades de sincronización de datos sin conexión primero
  • Versiones especializadas para navegadores web y móviles (PouchDB, CouchDB Lite, etc.)
  • Fiabilidad probada en batalla y resistente a los choques
  • Agrupación sencilla con almacenamiento de datos redundante

Cuándo usar CouchDB

CouchDB fue construido para la tolerancia fuera de línea y sigue siendo incomparable en este sentido. Un caso de uso típico son las aplicaciones móviles donde una parte de sus datos reside en una instancia de CouchDB en el teléfono del usuario (porque ahí es donde se generó). Lo emocionante es que no puede confiar en que el dispositivo del usuario esté conectado todo el tiempo, lo que significa que la base de datos debe ser oportunista y estar lista para resolver actualizaciones conflictivas más adelante. Esto se logra utilizando la impresionante Protocolo de replicación de sofá.

Cuando no usar CouchDB

Intentar usar CouchDB fuera de su caso de uso previsto conducirá al desastre. Utiliza mucho más almacenamiento que cualquier otra cosa, simplemente porque necesita mantener copias redundantes de datos y resultados de resolución de conflictos. Como resultado, las velocidades de escritura también son terriblemente lentas. Finalmente, CouchDB no es adecuado como motor de esquema de propósito general, ya que no funciona bien con los cambios de esquema.

En resumen

Tuve que dejar de lado a muchos candidatos interesantes como Riak, por lo que esta lista debe tomarse como una guía y no como un mandamiento. Espero haber podido lograr mi objetivo con este artículo: presentar no solo una colección de recomendaciones de software de base de datos, sino también discutir brevemente dónde y cómo deben usarse (¡y evitarse!).

Si tiene curiosidad por aprender bases de datos, consulte Udemy para algunos cursos brillantes en línea.