Omitir navegación

Nuevo SDK de JavaScript 2.0 de Azure #CosmosDB en versión preliminar pública

Publicado el 8 agosto, 2018

Program Manager, Azure Cosmos DB

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:

npm install azure cosmos

¿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.

DocumentDBClient

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.

Crear una nueva base de datos

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).

Contenedor y elementos

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:

SDK

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:

promisesNewImageUseThisOne

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.

npm install azure cosmos

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.