Compartir a través de


Emulador basado en Linux (versión preliminar)

La próxima generación del emulador de Azure Cosmos DB está totalmente basada en Linux y está disponible como contenedor de Docker. Admite la ejecución en una amplia variedad de procesadores y sistemas operativos.

Importante

Esta versión del emulador solo admite la API para NoSQL en modo de puerta de enlace, con un subconjunto selecto de características. Para obtener más información, consulte compatibilidad con características.

Requisitos previos

Instalación

Obtenga la imagen de contenedor de Docker mediante docker pull. La imagen de contenedor se publica en el Registro de artefactos Microsoft como mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.

docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview

Ejecución

Para ejecutar el contenedor, use docker run. Después, use docker ps para validar que el contenedor se está ejecutando.

docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview

docker ps
CONTAINER ID   IMAGE                                                             COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
c1bb8cf53f8a   mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview  "/bin/bash -c /home/…"   5 seconds ago   Up 5 seconds   0.0.0.0:1234->1234/tcp, :::1234->1234/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   <container-name>

Nota:

El emulador consta de dos componentes:

  • Explorador de datos: explore interactivamente los datos en el emulador. De manera predeterminada, esto se ejecuta en el puerto 1234
  • Emulador de Azure Cosmos DB: una versión local del servicio de base de datos de Azure Cosmos DB. De manera predeterminada, esto se ejecuta en el puerto 8081.

El punto de conexión de puerta de enlace del emulador suele estar disponible en el puerto 8081 en la dirección http://localhost:8081. Para navegar al explorador de datos, use la dirección http://localhost:1234 en el explorador web. El explorador de datos puede tardar unos segundos en estar disponible. Normalmente, el punto de conexión de puerta de enlace está disponible inmediatamente.

Importante

Los SDK de .NET y Java no admiten el modo HTTP en el emulador. Dado que esta versión del emulador comienza con HTTP de forma predeterminada, deberá habilitar explícitamente HTTPS al iniciar el contenedor (consulte a continuación). Para el SDK de Java, también tendrá que instalar certificados.

docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview --protocol https

Comandos de Docker

En la tabla siguiente se resumen los comandos de Docker disponibles para configurar el emulador. En esta tabla se detallan los argumentos correspondientes, las variables de entorno, los valores permitidos, la configuración predeterminada y las descripciones de cada comando.

Requisito Arg Env Valores permitidos Valor predeterminado Descripción
Imprimir la configuración en stdout desde el contenedor --help, -h N/D N/D N/D Mostrar información sobre la configuración disponible
Establecimiento del puerto del punto de conexión de Cosmos --port [INT] PUERTO INT 8081 Puerto del punto de conexión de Cosmos en el contenedor. Todavía tiene que publicar este puerto (por ejemplo, -p 8081:8081).
Especificación del protocolo usado por el punto de conexión de Cosmos --protocol PROTOCOLO https, http, https-insecure http Protocolo del punto de conexión de Cosmos en el contenedor.
Habilitación del explorador de datos --enable-explorer ENABLE_EXPLORER true, false true Habilite la ejecución del Explorador de datos de Cosmos en el mismo contenedor.
Establecimiento del puerto usado por el explorador de datos --explorer-port EXPLORER_PORT INT 1234 Puerto del Explorador de datos de Cosmos en el contenedor. Todavía tiene que publicar este puerto (por ejemplo, -p 1234:1234).
El usuario debe poder especificar el protocolo usado por el explorador; de lo contrario, el valor predeterminado es lo que usa el punto de conexión de Cosmos. --explorer-protocol EXPLORER_PROTOCOL https, http, https-insecure <the value of --protocol> Protocolo del Explorador de datos de Cosmos en el contenedor. El valor predeterminado es la configuración de protocolo en el punto de conexión de Cosmos.
Especificar la clave a través del archivo --key-file [PATH] KEY_FILE PATH <default secret> Invalide la clave predeterminada con la clave especificada en el archivo. Debe montar este archivo en el contenedor (por ejemplo, si KEY_FILE=/mykey, agregaría una opción como la siguiente a la ejecución de Docker: --mount type=bind,source=./myKey,target=/myKey)
Establecimiento de la ruta de acceso de datos --data-path [PATH] DATA_PATH PATH /data Especifique un directorio para los datos. Se usa con frecuencia con la opción docker run --mount (por ejemplo, si DATA_PATH=/usr/cosmos/data, agregaría una opción como la siguiente a la ejecución de Docker: --mount type=bind,source=./.local/data,target=/usr/cosmos/data)
Especificar la ruta de acceso del certificado que se va a usar para https --cert-path [PATH] CERT_PATH PATH <default cert> Especifique una ruta de acceso a un certificado para proteger el tráfico. Debe montar este archivo en el contenedor (por ejemplo, si CERT_PATH=/mycert.pfx, agregaría una opción como la siguiente a la ejecución de Docker: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Especificar el secreto de certificado que se va a usar para https N/D CERT_SECRET string <default secret> Secreto del certificado especificado en CERT_PATH.
Establecimiento del nivel de registro --log-level [LEVEL] LOG_LEVEL quiet, error, warn, info, debug, trace info El nivel de detalle de los registros emitidos por el emulador y el explorador de datos.
Habilitación de la información de diagnóstico que se envía a Microsoft --enable-telemetry ENABLE_TELEMETRY true, false true Habilite el envío de registros a Microsoft para ayudarnos a mejorar el emulador.

Compatibilidad de características

Este emulador está en desarrollo activo y versión preliminar. Como resultado, no se admiten todas las características de Azure Cosmos DB. Algunas características tampoco se admitirán en el futuro. En esta tabla se incluye el estado de varias características y su nivel de compatibilidad.

Característica Soporte técnico
Batch API ✅ Compatible
Bulk API ✅ Compatible
Fuente de cambios ⚠ todavía no se ha implementado
Creación y lectura de documentos con datos utf ✅ Compatible
Crear una colección ✅ Compatible
Creación de una colección dos veces en conflicto ✅ Compatible
Creación de una colección con una directiva de índice personalizada ⚠ todavía no se ha implementado
Creación de una colección con expiración de ttl ⚠ todavía no se ha implementado
Crear una base de datos ✅ Compatible
Creación de una base de datos dos veces en conflicto ✅ Compatible
Creación de un documento ✅ Compatible
Crear colección de particiones ⚠ todavía no se ha implementado
Eliminar colección ✅ Compatible
Eliminar base de datos ✅ Compatible
Eliminación de un documento ✅ Compatible
Obtención y cambio del rendimiento de la recopilación ⚠ todavía no se ha implementado
Insertar documento grande ✅ Compatible
Documento de revisión ⚠ todavía no se ha implementado
Colección con particiones consulta en paralelo ⚠ todavía no se ha implementado
Consulta con agregados ⚠ todavía no se ha implementado
Consulta con y filtro ⚠ todavía no se ha implementado
Consulta con y filtrado y proyección ⚠ todavía no se ha implementado
Consulta con igualdad ✅ Compatible
Consulta con igual en el identificador ✅ Compatible
Consulta con combinaciones ⚠ todavía no se ha implementado
Consulta con orden por ✅ Compatible
Consulta con orden para la colección con particiones ⚠ todavía no se ha implementado
Consulta con orden por números ✅ Compatible
Consulta con orden por cadenas ⚠ todavía no se ha implementado
Consulta con paginación ⚠ todavía no se ha implementado
Consulta con operadores de intervalos de fecha y hora ⚠ todavía no se ha implementado
Consulta con operadores de intervalo en números ⚠ todavía no se ha implementado
Consulta con operadores de intervalo en cadenas ⚠ todavía no se ha implementado
Consulta con combinación única ⚠ todavía no se ha implementado
Consulta con operadores de cadena, matemáticos y de matriz ⚠ todavía no se ha implementado
Consulta con subdocumentos ⚠ todavía no se ha implementado
Consulta con dos combinaciones ⚠ todavía no se ha implementado
Consulta con dos combinaciones y filtro ⚠ todavía no se ha implementado
Leer colección ✅ Compatible
Leer fuente de recopilación ⚠ todavía no se ha implementado
Leer la base de datos ✅ Compatible
Leer fuente de base de datos ⚠ todavía no se ha implementado
Lectura de un documento ✅ Compatible
Leer fuente de documentos ✅ Compatible
Reemplazar documento ✅ Compatible
Unidades de solicitud ⚠ todavía no se ha implementado
procedimientos almacenados ❌ no planeado
Desencadenadores ❌ no planeado
UDF ❌ no planeado
Actualizar una colección ⚠ todavía no se ha implementado
Actualizar documento ✅ Compatible

Limitaciones

Además de las características que aún no se admiten o no están planeadas, la lista siguiente incluye las limitaciones actuales del emulador.

  • El SDK de .NET para Azure Cosmos DB no admite la ejecución masiva en el emulador.
  • Los SDK de .NET y Java no admiten el modo HTTP en el emulador.

Instalación de certificados para el SDK de Java

Al usar el SDK de Java para Azure Cosmos DB con esta versión del emulador en modo https, es necesario instalarlo en el almacén de confianza de Java local.

Obtención del certificado

En una ventana bash, ejecute lo siguiente:

# If the emulator was started with /AllowNetworkAccess, replace localhost with the actual IP address of it:
EMULATOR_HOST=localhost
EMULATOR_PORT=8081
EMULATOR_CERT_PATH=/tmp/cosmos_emulator.cert
openssl s_client -connect ${EMULATOR_HOST}:${EMULATOR_PORT} </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $EMULATOR_CERT_PATH

Instalación del certificado

Vaya al directorio de la instalación de Java donde se encuentra el archivo cacerts (reemplace a continuación por el directorio correcto):

cd "C:/Program Files/Eclipse Adoptium/jdk-17.0.10.7-hotspot/bin"

Importe el certificado (es posible que se le pida una contraseña, el valor predeterminado es "changeit"):

keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH

Si recibe un error porque el alias ya existe, elimínelo y vuelva a ejecutar lo anterior:

keytool -cacerts -delete -alias cosmos_emulator

Información sobre los problemas

Si tiene problemas con el uso de esta versión del emulador, abra un problema en el repositorio de GitHub (https://github.com/Azure/azure-cosmos-db-emulator-docker) y etiquete con la etiqueta cosmosEmulatorVnextPreview.