Apache Cassandra se está convirtiendo en la mejor base de datos para manejar documentos JSON. Si eres un desarrollador de Cassandra y encuentras esa declaración provocativa, sigue leyendo.
En un artículo anterior, analizamos el uso de las API de datos y el modelado de datos para moldear a Cassandra en una experiencia de desarrollador más idiomática a la forma en que piensan los desarrolladores, mejorando así la productividad del desarrollador y preservando el rendimiento y la escala razonables de la base de datos. Es una gran hipótesis y debe probarse en el contexto de una comunidad de desarrolladores y un lenguaje de desarrolladores en particular.
Mongoose , una biblioteca de mapeo de datos de objetos que generalmente se usa con el controlador MongoDB, es un proyecto de código abierto con una importante comunidad de desarrolladores de JavaScript a su alrededor. En el proyecto Stargate , la puerta de enlace de datos API de código abierto diseñada para funcionar con Cassandra, nos hemos asociado con Mongoose y estamos trabajando en una próxima API JSON que se lanzará junto con una versión de Mongoose que funcionará a través de ese JSON. API para conectarse a Cassandra. Esto crea una pila de extremo a extremo para los desarrolladores de Mongoose que es completamente de código abierto. Es un cambio de juego para los desarrolladores de Mongoose y abre un nuevo capítulo importante para Cassandra.
En este artículo, hablaré sobre cómo proporcionar un idioma JSON fácil de usar para desarrolladores usando Cassandra junto con Stargate, y cómo estamos trabajando para hacer precisamente eso para los desarrolladores de Mongoose.
En octubre de 2022, lanzamos una nueva versión de Stargate. Con la nueva versión 2 , las API individuales ya no están integradas en el código principal del coordinador de Stargate, sino que se separan en servicios individuales. Esto mejora la eficiencia operativa de Stargate; los servicios de API individuales ahora se pueden implementar y escalar de forma independiente. Esto también facilita el desarrollo de nuevos servicios API. Siempre que cumplan con el límite del servicio, estos servicios se pueden desarrollar en paralelo e independientemente del trabajo de desarrollo central de Stargate.
Luego buscamos una experiencia verdaderamente idiomática que pudiéramos ofrecer a los desarrolladores. Con 18 millones de desarrolladores, JavaScript es el lenguaje de programación más popular del mundo, y JSON es la forma estándar en que los desarrolladores de JavaScript estructuran los datos. Sin embargo, 18 millones de personas no es una comunidad; son muchas comunidades. Necesitábamos los "Ricitos de oro" de las comunidades de JavaScript: lo suficientemente grandes para ser importantes, pero lo suficientemente pequeñas para ser enfocadas. Encontramos la comunidad adecuada construida alrededor de Mongoose, una biblioteca de mapeo de datos de objetos utilizada con aplicaciones que se conectan a MongoDB. La mangosta tiene varias características importantes:
Los desarrolladores realmente no interactúan directamente con una base de datos sino con un modelo de datos. En la API de documentos original de Stargate, la API maneja JSON haciéndolo parecer una tabla tradicional de Cassandra. Esto supone una carga para los desarrolladores orientados a JSON para pensar en términos de estructuras de datos de Cassandra y una carga para la lógica de indexación orientada a filas de Cassandra porque un documento JSON se distribuye en varias filas.
Nuestra nueva API JSON parte de este modelo de datos y, en cambio, se basa en un modelo de datos que llamamos "supertrituración". Puede obtener más información sobre la supertrituración viendo la charla de Aaron Morton en el reciente evento Cassandra Forward . En resumen, aprovechamos la naturaleza de columna ancha de Cassandra para almacenar un documento por fila, sabiendo que una fila de Cassandra puede manejar incluso documentos muy grandes. También tenemos un conjunto de columnas en esa fila que son explícitamente para almacenar características de metadatos estándar de un documento JSON. Ahora tenemos algo indexable más fácilmente, así como un medio para conservar y recuperar metadatos.
Luego, presentaremos este modelo de datos con nuestra nueva API JSON, usando la misma especificación mQuery que Mongoose usa como nuestro requisito de guía para las llamadas que la API debe admitir. Cuando se complete, esto debería permitir que cualquiera de los más de 2 millones de aplicaciones dependientes de Mongoose se ejecuten contra Cassandra de código abierto o el servicio Cassandra alojado de DataStax, Astra DB , con solo un cambio de configuración.
Con Mongoose y la nueva API de JSON, proporcionaremos una experiencia totalmente idiomática a los desarrolladores de JavaScript orientados a JSON, brindándoles la escala y el rendimiento de Cassandra que respaldan un modelo de datos JSON auténtico.
El creador de Mongoose, Karpov, también habló en el reciente evento Cassandra Forward (puede ver la repetición aquí ), demostrando una aplicación de comercio electrónico simple que usa la versión Stargate de Mongoose, Stargate de código abierto y la versión DataStax Enterprise (DSE) de Cassandra. Puede descargar el código de trabajo para esta aplicación y las piezas de la plataforma de soporte desde GitHub . Si bien tenemos suficiente código para ejecutar esta aplicación, aún no hemos completado el código. Por ejemplo, ejecutamos contra DSE en este momento porque necesitamos la indexación adjunta al almacenamiento (SAI), que funciona con DSE y está planificada para su lanzamiento en Cassandra 5.0 a finales de este año.
Cassandra no es una pieza estática de software; es un proyecto de código abierto vibrante y en evolución. Por lo tanto, también continuamos con la larga tradición de Cassandra de usar características como SAI que surgen del lado del cliente para fomentar cambios en el lado de la base de datos. no solo mejorará la API JSON de Stargate y el cliente Mongoose, sino que agregará funciones nuevas y potentes a Cassandra Query Language. Este es un gran recordatorio de que los ingenieros de datos y los desarrolladores de aplicaciones no son dos comunidades diferentes, sino cohortes complementarias de la comunidad extendida de Cassandra.
Y JSON es solo el primer paso. Esencialmente, lo que habremos hecho es tomar los componentes básicos de Cassandra, Stargate y un modelo de datos de Cassandra razonablemente eficiente y crear una base de datos de documentos con la que interactúe a través de una API JSON. En otras palabras, hemos utilizado supertrituración para crear una base de datos especialmente diseñada que sirva mejor a la comunidad de desarrolladores de Mongoose.
Con la arquitectura modular de Stargate v2 y el punto de prueba de Mongoose para el enfoque idiomático, estamos listos para asumir nuevas comunidades de desarrolladores que se organizan en torno a un lenguaje de desarrollo de software en particular. El proceso mediante el cual aprovechamos a Cassandra para Mongoose es repetible, y lo repetiremos. Al hacerlo, ampliamos drásticamente la cantidad de desarrolladores y casos de uso que Cassandra puede abordar, que es el tipo de objetivo digno de un proyecto de código abierto.
Obtenga más información sobre DataStax .
Por Mark Stone. Mark es gerente de producto en DataStax. Es un veterano de la tecnología con muchos años de experiencia en gestión de productos, gestión de programas y gestión de personas. Siempre trabajando como parte del tejido conectivo entre las partes interesadas comerciales y las partes interesadas técnicas, a Mark le encanta defender la experiencia del desarrollador en plataformas tecnológicas y ayudar a las organizaciones a conocer a los desarrolladores donde están.