El equipo de Azure Cosmos DB está encantado de anunciar la versión 2.0 RC del SDK de JavaScript para la API de SQL, ahora en versión preliminar pública.
Estamos deseando recibir comentarios sobre esta versión RC antes de que el SDK esté disponible con carácter general, por lo que le agradecemos que lo pruebe y nos dé su opinión. Puede obtener la última versión a través de npm con:
¿Qué es Azure Cosmos DB?
Azure Cosmos DB es un servicio de base de datos multimodelo de distribución global. Ofrece distribución global inmediata, garantiza latencias de menos de 10 milisegundos en el percentil 99 y escalado elástico del procesamiento y el almacenamiento.
Para la API de SQL, ofrecemos un SDK de JavaScript que permite desarrollar soluciones para Azure Cosmos DB a partir de proyectos de JavaScript y Node.js. La versión 2.0 del SDK está escrita completamente en TypeScript. Hemos rediseñado el modelo de objetos y hemos agregado compatibilidad con promesas. Veamos estas actualizaciones con más detalle.
Nuevo modelo de objetos
En respuesta a los comentarios de los usuarios, hemos rediseñado el modelo de objetos con el fin de facilitar la interacción con Cosmos DB y la realización de operaciones en este servicio.
Si ya conoce la versión anterior del SDK de JavaScript, quizá ha notado que toda la superficie de la API depende de DocumentDBClient. Si bien el diseño anterior facilita la búsqueda del punto de entrada para métodos, también suponía una experiencia de IntelliSense muy recargada, como se puede ver a continuación.
También recibimos comentarios sobre que era difícil realizar operaciones fuera de las bases de datos, las colecciones o los documentos, porque cada método tenía que hacer referencia a la dirección URL de ese recurso.
Para solucionar esto, hemos creado una nueva clase CosmosClient de nivel superior para reemplazar DocumentDBClient y hemos dividido sus métodos en las clases modulares Database, Container e Item.
Por ejemplo, con el nuevo SDK, puede crear una nueva base de datos y un contenedor, y agregarle un elemento, todo en 10 líneas de código.
Esto se denomina un patrón de “generador” (builder) y permite hacer referencia a recursos en función de la jerarquía de recursos de Cosmos DB, que es similar a la forma en la que su cerebro entiende Cosmos DB. Por ejemplo, para crear un elemento, primero hacemos referencia a su base de datos o contenedor, y llamamos a items.create().
Contenedores y elementos
Además, puesto que Cosmos DB admite varios modelos de API, hemos incorporado los conceptos de contenedor y elemento en el SDK, que reemplazan los conceptos anteriores de colección y documento. Dicho de otro modo, lo que antes se conocía como “colección” ahora se denomina “contenedor”.
Una cuenta puede tener una o varias bases de datos, y una base de datos consta de uno o varios contenedores. Según la API, el contenedor se proyecta como una colección (API de SQL o de Azure Cosmos DB para MongoDB), un grafo (Gremlin API) o una tabla (Table API).
Compatibilidad con promesas
Finalmente, hemos agregado compatibilidad total con promesas, de modo que ya no tiene que escribir código personalizado para encapsular el SDK. Ahora puede usar async o await directamente con el SDK.
Para ver la diferencia, para crear una nueva base de datos y una colección, y agregar un documento con el SDK anterior, tenía que hacer algo parecido a esto:
Con el nuevo SDK, puede usar simplemente await para las llamadas a Cosmos DB directamente desde una función async, como se puede ver a continuación.
También hemos agregado un método de conveniencia (createIfNotExists()) para bases de datos y contenedores que encapsula la lógica para leer la base de datos, comprobar el código de estado y crearlo si no existe.
Esta es la misma funcionalidad usando el nuevo SDK:
Modelo de código abierto
El SDK de JavaScript de Azure Cosmos DB es código abierto, y nuestro equipo tiene planeado realizar todo el desarrollo de esta forma. Con ese objetivo, registraremos los problemas, haremos seguimiento de los comentarios y aceptaremos solicitudes de incorporación de cambios en GitHub.
Introducción
Confiamos en que este nuevo SDK mejore la experiencia de desarrollo. Para comenzar, eche un vistazo a la guía de inicio rápido. Nos encantaría conocer su opinión. Envíe un correo electrónico a la dirección cosmosdbsdkfeedback@microsoft.com o registre los problemas en nuestro repositorio de GitHub.
Para mantenerse al día respecto a las novedades y características más recientes de Azure #CosmosDB, síganos en Twitter @AzureCosmosDB. Realmente nos interesa conocer qué compiló con Azure Cosmos DB.