Emulador baseado em Linux (versão prévia)
A próxima geração do emulador do Azure Cosmos DB é inteiramente baseada em Linux e está disponível como um contêiner do Docker. Ele dá suporte à execução em uma ampla variedade de processadores e sistemas operacionais.
Importante
Esta versão do emulador dá suporte apenas à API para NoSQL no modo de gateway, com um subconjunto de recursos selecionado. Para obter mais informações, consulte suporte a recursos.
Pré-requisitos
Instalação
Obter a imagem de contêiner do Docker usando docker pull
. A imagem do contêiner é publicada no Registro de Artefato da Microsoft como mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
.
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
Executando
Para executar o contêiner, use docker run
. Posteriormente, use docker ps
para validar se o contêiner está em execução.
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>
Observação
O emulador é composto por dois componentes:
- Data explorer – explore interativamente os dados no emulador. Por padrão, isso é executado na porta
1234
- Emulador do Azure Cosmos DB – uma versão local do serviço de banco de dados do Azure Cosmos DB. Por padrão, isso é executado na porta
8081
.
O ponto de extremidade do gateway do emulador normalmente está disponível na porta 8081
no endereço http://localhost:8081. Para navegar até o data explorer, use o endereço http://localhost:1234 no navegador da Web. Pode levar alguns segundos para que o data explorer esteja disponível. O ponto de extremidade do gateway normalmente está disponível imediatamente.
Importante
Os SDKs .NET e Java não suportam o modo HTTP no emulador. Como essa versão do emulador começa com HTTP por padrão, você precisará habilitar explicitamente o HTTPS ao iniciar o contêiner (veja abaixo). Para o Java SDK, você também precisará instalar certificados.
docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview --protocol https
Comandos do Docker
A tabela a seguir resume os comandos do Docker disponíveis para configurar o emulador. Esta tabela detalha os argumentos correspondentes, variáveis de ambiente, valores permitidos, configurações padrão e descrições de cada comando.
Requisito | Arg | Env | Valores permitidos | Padrão | Descrição |
---|---|---|---|---|---|
Imprimir as configurações para stdout do contêiner | --help , -h |
N/D | N/D | N/D | Exibir informações sobre a configuração disponível |
Definir a porta do ponto de extremidade do Cosmos | --port [INT] |
PORTA | INT | 8081 | A porta do ponto de extremidade do Cosmos no contêiner. Você ainda precisa publicar essa porta (por exemplo, -p 8081:8081 ). |
Especificar o protocolo usado pelo ponto de extremidade do Cosmos | --protocol |
PROTOCOLO | https , http , https-insecure |
http |
O protocolo do ponto de extremidade do Cosmos no contêiner. |
Habilitar o data explorer | --enable-explorer |
ENABLE_EXPLORER | true , false |
true |
Habilite a execução do Cosmos Data Explorer no mesmo contêiner. |
Definir a porta usada pelo data explorer | --explorer-port |
EXPLORER_PORT | INT | 1234 | A porta do Cosmos Data Explorer no contêiner. Você ainda precisa publicar essa porta (por exemplo, -p 1234:1234 ). |
O usuário deve ser capaz de especificar o protocolo usado pelo gerenciador, caso contrário, padrão para o que o ponto de extremidade do Cosmos está usando | --explorer-protocol |
EXPLORER_PROTOCOL | https , http , https-insecure |
<the value of --protocol> |
O protocolo do Cosmos Data Explorer no contêiner. O padrão é a configuração do protocolo no ponto de extremidade do Cosmos. |
Especificar a chave por meio do arquivo | --key-file [PATH] |
KEY_FILE | PATH | <default secret> |
Substitua a chave padrão com a chave especificada no arquivo. Você precisa montar esse arquivo no contêiner (por exemplo, se KEY_FILE=/mykey, adicionará uma opção como a seguinte à execução do docker: --mount type=bind,source=./myKey,target=/myKey ) |
Definir o caminho de dados | --data-path [PATH] |
DATA_PATH | PATH | /data |
Especifique um diretório para dados. Usado com frequência com a opção docker run --mount (por exemplo, se DATA_PATH=/usr/cosmos/data, você adicionará uma opção como a seguinte à execução do docker: --mount type=bind,source=./.local/data,target=/usr/cosmos/data ) |
Especificar o caminho do certificado a ser usado para https | --cert-path [PATH] |
CERT_PATH | PATH | <default cert> |
Especifique um caminho para um certificado para proteger o tráfego. Você precisa montar esse arquivo no contêiner (por exemplo, se CERT_PATH=/mycert.pfx, adicionará uma opção como a seguinte à execução do docker: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx ) |
Especificar o segredo do certificado a ser usado para https | N/D | CERT_SECRET | string | <default secret> |
O segredo do certificado especificado no CERT_PATH. |
Definir o nível de log | --log-level [LEVEL] |
LOG_LEVEL | quiet , error , warn , info , debug , trace |
info |
A verbosidade dos logs emitidos pelo emulador e pelo data explorer. |
Habilitar informações de diagnóstico que estão sendo enviadas à Microsoft | --enable-telemetry |
ENABLE_TELEMETRY | true , false |
true |
Habilite o envio de logs para a Microsoft para nos ajudar a melhorar o emulador. |
Suporte a recursos
Esse emulador está em desenvolvimento ativo e versão prévia. Como resultado, nem todos os recursos do Azure Cosmos DB têm suporte. Alguns recursos também não terão suporte no futuro. Esta tabela inclui o estado de vários recursos e seu nível de suporte.
Recurso | Suporte |
---|---|
API do Lote | ✅ Com suporte |
API em massa | ✅ Com suporte |
Feed de Alterações | ⚠️ Ainda não implementado |
Criar e ler documento com dados utf | ✅ Com suporte |
Criar coleção | ✅ Com suporte |
Criar conflito de coleção duas vezes | ✅ Com suporte |
Criar coleção com a política de índice personalizada | ⚠️ Ainda não implementado |
Criar coleção com expiração de ttl | ⚠️ Ainda não implementado |
Criar banco de dados | ✅ Com suporte |
Criar banco de dados duas vezes em conflito | ✅ Com suporte |
Criar documento | ✅ Com suporte |
Criar coleção particionada | ⚠️ Ainda não implementado |
Excluir coleção | ✅ Com suporte |
Excluir banco de dados | ✅ Com suporte |
Excluir documento | ✅ Com suporte |
Obter e alterar o desempenho da coleção | ⚠️ Ainda não implementado |
Inserir documento grande | ✅ Com suporte |
Patch de documento | ⚠️ Ainda não implementado |
Consultar coleção particionada em paralelo | ⚠️ Ainda não implementado |
Consulta com agregações | ⚠️ Ainda não implementado |
Consultar com e filtrar | ⚠️ Ainda não implementado |
Consultar com e filtrar e projeção | ⚠️ Ainda não implementado |
Consulta com igualdade | ✅ Com suporte |
Consulta com iguais na ID | ✅ Com suporte |
Consultar com junções | ⚠️ Ainda não implementado |
Consulta com ordem por | ✅ Com suporte |
Consulta com ordem por para coleção particionada | ⚠️ Ainda não implementado |
Consultar com ordem por números | ✅ Com suporte |
Consultar com ordem por cadeias de caracteres | ⚠️ Ainda não implementado |
Consulta com paginação | ⚠️ Ainda não implementado |
Horários de data de consulta com operadores de intervalo | ⚠️ Ainda não implementado |
Consulta com operadores de intervalo em números | ⚠️ Ainda não implementado |
Consulta com operadores de intervalo em cadeias de caracteres | ⚠️ Ainda não implementado |
Consulta com junção única | ⚠️ Ainda não implementado |
Consulta com operadores de matriz e matemática de cadeia de caracteres | ⚠️ Ainda não implementado |
Consulta com subdocumentos | ⚠️ Ainda não implementado |
Consultar com duas junções | ⚠️ Ainda não implementado |
Consultar com duas junções e filtrar | ⚠️ Ainda não implementado |
Coleção de leitura | ✅ Com suporte |
Feed de coleta de leitura | ⚠️ Ainda não implementado |
Ler banco de dados | ✅ Com suporte |
Ler feed de banco de dados | ⚠️ Ainda não implementado |
Ler documento | ✅ Com suporte |
Ler feed de documentos | ✅ Com suporte |
Substituir documento | ✅ Com suporte |
Unidades de Solicitação | ⚠️ Ainda não implementado |
Procedimentos armazenados | ❌ Não planejado |
Gatilhos | ❌ Não planejado |
UDFs | ❌ Não planejado |
Atualizar coleção | ⚠️ Ainda não implementado |
Atualizar documento | ✅ Com suporte |
Limitações
Além dos recursos ainda não compatíveis ou não planejados, a lista a seguir inclui as limitações atuais do emulador.
- O SDK do .NET para Azure Cosmos DB não dá suporte à execução em massa no emulador.
- Os SDKs .NET e Java não suportam o modo HTTP no emulador.
Instalando certificados para Java SDK
Ao usar o Java SDK para Azure Cosmos DB com essa versão do emulador no modo https, é necessário instalar seus certificados no seu repositório confiável Java local.
Obter certificado
Em uma janela bash
, execute o seguinte:
# 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
Instalar certificado
Navegue até o diretório da instalação do Java onde o arquivo cacerts
está localizado (substitua abaixo pelo diretório correto):
cd "C:/Program Files/Eclipse Adoptium/jdk-17.0.10.7-hotspot/bin"
Importe o certificado (pode ser solicitada uma senha, o valor padrão é "changeit"):
keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH
Se você receber um erro porque o alias já existe, exclua-o e execute o procedimento acima novamente:
keytool -cacerts -delete -alias cosmos_emulator
Problemas de relatórios
Se você encontrar problemas com o uso desta versão do emulador, abra um problema no repositório GitHub (https://github.com/Azure/azure-cosmos-db-emulator-docker) e marque-o com o rótulo cosmosEmulatorVnextPreview
.