Preguntas frecuentes sobre Azure Cosmos DB for NoSQL

SE APLICA A: NoSQL

¿Cómo empiezo a desarrollar en Azure Cosmos DB for NoSQL?

En primer lugar, debe registrarse para obtener una suscripción de Azure. Una vez que se haya registrado para obtener una suscripción de Azure, puede agregar a esta un contenedor de API para NoSQL.

Los kits de desarrollo de software (SDK) están disponibles para .NET, Python, Node.js, JavaScript, Go y Java. Los desarrolladores también pueden usar las API REST para interactuar con recursos de Azure Cosmos DB desde más plataformas y lenguajes.

¿Hay ejemplos de Azure Cosmos DB for NoSQL para empezar?

Consulte estos ejemplos de código y plantillas de inicio rápido para la API para NoSQL:

¿Azure Cosmos DB for NoSQL admite datos sin esquemas?

Sí, la API para NoSQL permite que las aplicaciones almacenen documentos JSON arbitrarios como elementos sin definiciones ni sugerencias de esquemas. Los datos están disponibles inmediatamente para la consulta con el lenguaje de consulta de Azure Cosmos DB for NoSQL.

¿Admite Azure Cosmos DB for NoSQL transacciones ACID (atomicidad, coherencia, aislamiento, durabilidad)?

Sí, la API para NoSQL admite transacciones entre documentos expresadas mediante lotes en los SDK o como procedimientos almacenados y desencadenadores de JavaScript. Las transacciones se limitan a una única partición dentro de cada contenedor y se ejecutan con semántica ACID, como "todo o nada", aisladas de otras solicitudes de usuario y código que se ejecutan a la vez. Si se producen excepciones, se revierte toda la transacción.

¿Cómo se crea una base de datos de Azure Cosmos DB for NoSQL?

Puede crear bases de datos mediante una de estas herramientas:

¿Cómo se configuran los usuarios y permisos nativos de base de datos de Azure Cosmos DB for NoSQL?

Puede crear usuarios y permisos mediante uno de los SDK de Azure Cosmos DB for NoSQL o la API REST. Para más información, consulte Configuración de tokens de usuarios y recursos. La creación de permisos mediante tokens de recursos se permite tanto en el nivel de contenedor como en sus descendientes (por ejemplo, documentos, datos adjuntos). Actualmente no se permite crear un permiso en la base de datos o en un nivel de cuenta.

¿Puedo autenticarme en Azure Cosmos DB for NoSQL mediante mis cuentas existentes de Microsoft Entra ID?

Sí. Azure Cosmos DB admite la autenticación de Microsoft Entra para administrar el servicio y sus recursos (plano de control) y para ejecutar datos, operaciones y consultas (plano de datos). La autenticación del plano de control se realiza mediante la característica de control de acceso basado en roles de Azure. Puede usar un rol integrado preconfigurado](../../role-based-access-control/built-in-roles.md) o puede crear un rol personalizado. Con el control de acceso basado en roles de Azure, puede administrar cuentas, bases de datos, contenedores y metadatos. El plano de control incluye operaciones, entre las que se incluyen, entre otros, estos ejemplos.

  • Creación, reemplazo o eliminación de bases de datos - creación, reemplazo o eliminación de contenedores - Lectura o sustitución del rendimiento de la base de datos - Lectura o reemplazo del rendimiento del contenedor Para obtener más información, consulte Control de acceso basado en roles del plano de control de Azure Cosmos DB. La autenticación en plano de datos usa una API personalizada para la implementación del control de acceso basado en roles nativo de NoSQL. Con esta implementación nativa, también puede usar roles preconfigurados o personalizados. Con el control de acceso basado en roles nativo, puede ejecutar consultas, administrar elementos o realizar otras operaciones comunes. El plano de datos incluye operaciones, entre las que se incluyen, entre otros, estos ejemplos.
  • Creación, reemplazo, actualización o eliminación de elementos - Revisión de elementos - Ejecución de consultas Para obtener más información, consulte Control de acceso basado en roles del plano de datos de Azure Cosmos DB.

¿Admite Azure Cosmos DB for NoSQL el lenguaje de consulta SQL?

El lenguaje de consulta estructurado (SQL) es un lenguaje que normalmente se usa para consultar datos relacionales. La API para NoSQL tiene un lenguaje de consulta NoSQL personalizado derivado de SQL. El lenguaje de consulta NoSQL incluye un subconjunto del lenguaje de consulta SQL normalmente asociado a SQL Server junto con varias mejoras específicas de NoSQL. El lenguaje de consulta SQL de NoSQL proporciona operadores relacionales y jerárquicos y una extensibilidad a través de JavaScript según las funciones definidas por el usuario (UDF). La sintaxis JSON permite el modelado de documentos JSON como árboles con nodos etiquetados, algo que usan las técnicas de indexación automática de Azure Cosmos DB y el dialecto de consulta SQL de Azure Cosmos DB. Para obtener información sobre el uso de este lenguaje de consulta, vea Consulta NoSQL.

¿Azure Cosmos DB for NoSQL admite funciones de agregación de SQL?

La API para NoSQL admite la agregación a través de funciones de agregado como: COUNT, MAX, AVG y SUM a través del lenguaje de consulta NoSQL.

¿Cómo proporciona Azure Cosmos DB for NoSQL simultaneidad?

La API para NoSQL admite el control de simultaneidad optimista (OCC) mediante etiquetas de entidad HTTP, o ETag. Cada recurso de API para NoSQL tiene una ETag y esta se establece en el servidor cada vez que se actualiza un documento. El encabezado de la ETag y el valor actual se incluyen en todos los mensajes de respuesta. Las etiquetas ETag pueden utilizarse con el encabezado If-Match para permitir que el servidor decida si debe actualizarse un recurso. El valor de If-Match es el valor de ETag con el que se va a cotejar. Si el valor de ETag coincide con el valor de ETag del servidor, el recurso se actualiza. Si el valor de ETag ya no es el actual, el servidor rechaza la operación con un código de respuesta "HTTP 412 Precondition failure" (HTTP 412: error de condición previa). Después, el cliente recupera el recurso para obtener el valor de Etag actual del recurso. Además, se pueden usar ETags con el encabezado If-None-Match para determinar si es necesario capturar un recurso.

La mayoría de los SDK de API para NoSQL incluyen clases para administrar el control de simultaneidad optimista.

¿Cómo se pueden insertar documentos de forma masiva en Azure Cosmos DB for NoSQL?

Use la característica de importación masiva en el SDK de .NET o el SDK de Java para que la API para NoSQL importe grandes conjuntos de datos. Esta característica optimiza el rendimiento aprovisionado para importar grandes conjuntos de datos.

Como alternativa, use Apache Spark para importar datos a escala mediante Python o Scala.

¿Azure Cosmos DB for NoSQL admite el almacenamiento en caché de vínculos de recursos?

Sí, dado que Azure Cosmos DB for NoSQL es un servicio RESTful, los vínculos de recursos son inmutables y se pueden almacenar en caché. Los clientes de la API para NoSQL pueden especificar un encabezado "If-None-Match" para lecturas en cualquier documento o contenedor de tipo recurso y actualizar sus copias locales cuando la versión del servidor cambie.

¿Hay disponible una instancia local de Azure Cosmos DB for NoSQL?

Sí. El emulador de Azure Cosmos DB proporciona una emulación de gran fidelidad del servicio Azure Cosmos DB. Admite la funcionalidad idéntica a Azure Cosmos DB en varias API. Esta funcionalidad incluye compatibilidad para crear elementos, consultar elementos, aprovisionar contenedores y escalar contenedores. Puede desarrollar y probar aplicaciones mediante los puntos de conexión del emulador. Después, puede implementar las aplicaciones en Azure a escala global cambiando la cadena de conexión del emulador al servicio activo.

¿Por qué se redondean los valores de punto flotante largos en un elemento de Azure Cosmos DB for NoSQL al usar el Explorador de datos en el portal?

Esta limitación del explorador de datos es una limitación de JavaScript. JavaScript usa números de formato de punto flotante de precisión doble, como se especifica en Institute of Electrical and Electronics Engineers (IEEE) 754. Este tipo de datos puede contener números entre -(253 - 1) y 253-1 (es decir, solo 9007199254740991).