Poder realizar queries como si de una base de datos MongoDB se tratase pero hasta 100 veces más rápidas y con las ventajas de una base relacional. Esto es lo que propone el reciente lanzamiento de ToroDB Stampede. Simplificando el stack de ToroDB nos encontramos con una base de datos NewSQL, es decir, una base de datos que intenta proporcionar las funcionalidades y características de las bases de datos NoSQL, principalmente escalabilidad, sin renunciar al ACID de toda la vida de una base de datos relacional.
Viendo el ecosistema actual de base de datos, siempre nos ha llamado la atención la centena o miles de ellas que existen y sus diferentes protocolos. Lanzar una nueva base de datos es siempre complejo. Aquí está la primera aclaración sobre ToroDB, en lugar de implementar un nuevo protocolo y un sistema de queries propio, incompatible con el resto de sistema, la gente de ToroDB ha decidido implementar el mismo protocolo de MongoDB.
En lugar de implementar un nuevo protocolo y un sistema de queries propio, incompatible con el resto de sistema, la gente de ToroDB ha decidido implementar el mismo protocolo de MongoDB
Dicho esto, cualquier desarrollador que esté usando MongoDB en sus sistema puede empezar a usar ToroDB sin mayor problema. Quizás sea buen momento de probarlo mediante ToroDB.
Y en las capas inferiores donde persistir los datos, una vez más, en vez de implementar un sistema propio se ha utilizado PostgreSQL. Tal como nos explican desde ToroDB, tener una arquitectura desacoplada permite que en el futuro se puedan implementar otros protocolos, distintos de MongoDB o de persistir en Oracle, DB2, etc..
¿Cómo funciona ToroDB?
ToroDB funciona como un nodo secundario oculto del clúster de MongoDB que replica todos los datos y sus actualización a una base de datos Postgres en tiempo real. Creando de este modo una estructura relacional para poder consultarlos a partir de una colección de documentos MongoDB.
ToroDB funciona como un nodo secundario oculto del clúster de MongoDB que replica todos los datos y sus actualización a una base de datos Postgres en tiempo real. Creando de este modo una estructura relacional para poder consultarlos a partir de una colección de documentos MongoDB.
Los cuatro pilares sobre los que se basa ToroDB son:
- Transacciones ACID en un entorno de trabajo MongoDB, es decir NoSQL, con todo lo que ello conlleva.
- Ecosistema SQL accesible que no teníamos si sólo usamos NoSQL. Al persistir en una base de datos relacional, se pueden utilizar herramientas de BI, Backup o administración que hoy por hoy no están en NoSQL.
- Velocidad de consulta. Gracias a la persistencia sobre Postgres podemos resolver queries complejas que hasta ahora MongoDB requería más tiempo.
- Facilidad de migración de NoSQL a SQL. Hasta ahora no era sencillo migrar de un sistema a otro. Con ToroDB se puede utilizar los conocimiento y los recursos de ambos sistemas.
ToroDB Stampede y ToroDB Core son productos open source y su código está disponible para descarga en nuestro repositorio de GitHub. Cuenta con una licencia AGPLv3, una de las licencias de software libre llamadas "virales" porque obligan a que todo el software integrado cuente también con una licencia AGPL.
Entrevista a Álvaro Hernandez Tortosa, CEO de ToroDB:
Tenemos la oportunidad de charlar con Álvaro Hernandez Tortosa para que nos cuenta más en detalle algunos aspectos de ToroDB. A continuación las preguntas de la entrevista que le realizamos antes de lanzamiento. Cualquier duda adicional seguro que podemos gestionarlo en los comentarios de este mismo post.
GENBETA DEV: El estado del arte de las bases de datos es inmenso ¿Por qué empezasteis por MongoDB, en lugar de otras noSQL como Casandra, por ejemplo? ¿Y por qué Postgres? ¿Qué os llamó más la atención en cuanto a ellas ¿Cuota de mercado? ¿Rendimiento? ¿Ecosistema?
ÁLVARO: Con respecto a la compatibilidad con MongoDB. Las bbdd NoSQL cada una han decidido crear su propio API, su propio interfaz al usuario. Esto ha creado una gran fragmentación en el mercado, confusión al usuario y dificultad de migración. De hecho, es probablemente un factor determinante que hará desaparecer a muchas bbdd NoSQL "pequeñas" porque crea una barrera de entrada. En ToroDB hemos optado por no inventar un interfaz nuevo, y sufrir esos mismos problemas, sino reutilizar uno ya existente. En este sentido, hemos buscado el líder del mercado, el más popular, el más utilizado, para favorecer la adopción. Y este es MongoDB.
En cuanto a Postgres (o PostgreSQL). Necesitábamos como base una bbdd relacional, sólida, fiable, extensible y software libre. Nadie dudaría en contestar "PostgreSQL" a esos requisitos. Además de ello, 8Kdata tiene un muy gran expertise en PostgreSQL, de más de década y media, y somos miembros relevantes de la comunidad mundial y fundadores de PostgreSQL España, el 5º PUG (Postgres User Group) mayor del mundo. Por lo tanto es una mezcla de las características de Postgres (en particular su extensibilidad) y nuestra experiencia con esta base de datos.
GENBETA DEV: Partimos del escenario más sencillo: somos desarrolladores que ya usamos MongoDB en nuestras aplicaciones ¿Qué deberíamos hacer para empezar a usar ToroDB? ¿Qué pasos y acciones tenemos que tener en cuenta?
ÁLVARO: En primer lugar el lanzamiento de ToroDB Stampede 1.0 beta, que va orientado tanto a realizar queries analíticas/BI/Data Warehousing de Mongo como a migrar de MongoDB a relacional. Su funcionamiento es muy sencillo: Stampede se comporta como un nodo más del replica set de MongoDB. Tan pronto se instale, configure (opcionalmente) y lance, comenzará a replicar desde 0 todos los datos que haya en el replica set, y continuará haciéndolo en tiempo real según se vayan insertando más datos en MongoDB.
Los datos, en Stampede, serán analizados, transformados de json a un diseño relacional, con tablas, columnas, relaciones, etc, como si lo hubiera diseñado un dba (decimos que ToroDB crea el DDL automágicamente). Y una vez ahí, se podrá conectar directamente y hacer queries sobre los datos en SQL puro, con un rendimiento para queries agregadas que puede ser 100 veces mayor que en MongoDB.
GENBETA DEV: Gestionar un proyecto Open Source no es trivial ¿Cómo suele ser el proceso de aceptación de PR al proyecto de ToroDB? ¿Cómo dáis visibilidad a esas colaboraciones? ¿Cómo estáis llevandolo o cómo tenéis pensado plantearlo para que encaje con vuestro Roadmap?
ÁLVARO: Estamos encantados de recibir contribuidores. El primer paso es, idealmente, comunicarse con nosotros a través de la lista de correo de desarrolladores para discutir qué se quiere hacer y qué dirección seguir. A partir de ahí, crear un parche, enviar un PR y el equipo de ToroDB lo evaluará. Todos los PR aceptados mantienen completamente la autoría del contribuidor y ToroDB garantiza que dicha contribución será software libre para siempre. Los contribuidores serán además listados en los release notes.
En cuanto al encaje con el Roadmap, las contribuciones son, sin duda, también feedback, y pueden alterar nuestro roadmap, al igual que las issues en Github. El encaje lo haremos en un análisis caso por caso, porque depende de muchos factores, como el porcentaje de contribución del contribuidor, cómo de nuclear sea la característica y nuestros propios recursos. Pero en general, si la contribución es beneficiosa para una mayoría de los usuarios , tenemos una política muy abierta y colaborativa hacia las mismas.
- Más información | ToroDB Stampede
- 8KData Blog | Announcing ToroDB Stampede 1.0 beta