Delen via


Op Linux gebaseerde emulator (preview)

De volgende generatie van de Azure Cosmos DB-emulator is volledig op Linux gebaseerd en is beschikbaar als Docker-container. Het ondersteunt uitvoering op een groot aantal processors en besturingssystemen.

Belangrijk

Deze versie van de emulator ondersteunt alleen de API voor NoSQL in de gatewaymodus, met een selecte subset van functies. Zie de functieondersteuning voor meer informatie.

Vereisten

Installatie

Haal de Docker-containerinstallatiekopieën op met behulp van docker pull. De containerinstallatiekopieën worden als volgt gepubliceerd naar de Microsoft-artefactregistermcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.

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

Wordt uitgevoerd

Als u de container wilt uitvoeren, gebruikt u docker run. Gebruik daarna docker ps om te controleren of de container wordt uitgevoerd.

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>

Notitie

De emulator bestaat uit twee onderdelen:

  • Data Explorer : interactief de gegevens in de emulator verkennen. Dit wordt standaard uitgevoerd op poort 1234
  • Azure Cosmos DB Emulator : een lokale versie van de Azure Cosmos DB-databaseservice. Dit wordt standaard uitgevoerd op poort 8081.

Het eindpunt van de emulatorgateway is doorgaans beschikbaar op poort 8081 op het adres http://localhost:8081. Als u naar data explorer wilt navigeren, gebruikt u het adres http://localhost:1234 in uw webbrowser. Het kan enkele seconden duren voordat Data Explorer beschikbaar is. Het gateway-eindpunt is doorgaans onmiddellijk beschikbaar.

Belangrijk

De .NET- en Java-SDK's bieden geen ondersteuning voor de HTTP-modus in de emulator. Omdat deze versie van de emulator standaard met HTTP begint, moet u HTTPS expliciet inschakelen bij het starten van de container (zie hieronder). Voor de Java SDK moet u ook certificaten installeren.

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

Docker-opdrachten

De volgende tabel bevat een overzicht van de beschikbare Docker-opdrachten voor het configureren van de emulator. In deze tabel worden de bijbehorende argumenten, omgevingsvariabelen, toegestane waarden, standaardinstellingen en beschrijvingen van elke opdracht beschreven.

Vereiste Arg Env Toegestane waarden Default Beschrijving
De instellingen afdrukken naar stdout vanuit de container --help, -h N.v.t. N.v.t. N.v.t. Informatie weergeven over de beschikbare configuratie
De poort van het Cosmos-eindpunt instellen --port [INT] POORT INT 8081 De poort van het Cosmos-eindpunt op de container. U moet deze poort nog steeds publiceren (bijvoorbeeld -p 8081:8081).
Geef het protocol op dat wordt gebruikt door het Cosmos-eindpunt --protocol PROTOCOL https, , httphttps-insecure http Het protocol van het Cosmos-eindpunt in de container.
Data Explorer inschakelen --enable-explorer ENABLE_EXPLORER true, false true Schakel het uitvoeren van Cosmos Data Explorer in op dezelfde container.
De poort instellen die wordt gebruikt door data explorer --explorer-port EXPLORER_PORT INT 1234 De poort van Cosmos Data Explorer in de container. U moet deze poort nog steeds publiceren (bijvoorbeeld -p 1234:1234).
De gebruiker moet het protocol kunnen opgeven dat wordt gebruikt door de verkenner, anders wordt standaard ingesteld op wat het Cosmos-eindpunt gebruikt --explorer-protocol EXPLORER_PROTOCOL https, , httphttps-insecure <the value of --protocol> Het protocol van Cosmos Data Explorer in de container. Standaard ingesteld op de protocolinstelling op het Cosmos-eindpunt.
De sleutel opgeven via bestand --key-file [PATH] KEY_FILE PAD <default secret> Overschrijf de standaardsleutel met de sleutel die is opgegeven in het bestand. U moet dit bestand koppelen aan de container (bijvoorbeeld als KEY_FILE=/mykey, voegt u een optie zoals het volgende toe aan uw Docker-uitvoering: --mount type=bind,source=./myKey,target=/myKey)
Het gegevenspad instellen --data-path [PATH] DATA_PATH PAD /data Geef een map op voor gegevens. Vaak gebruikt met docker run --mount de optie (bijvoorbeeld als DATA_PATH=/usr/cosmos/data, voegt u een optie zoals de volgende toe aan uw Docker-uitvoering: --mount type=bind,source=./.local/data,target=/usr/cosmos/data)
Geef het certificaatpad op dat moet worden gebruikt voor https --cert-path [PATH] CERT_PATH PAD <default cert> Geef een pad naar een certificaat op voor het beveiligen van verkeer. U moet dit bestand koppelen aan de container (bijvoorbeeld als CERT_PATH=/mycert.pfx, voegt u een optie toe zoals het volgende aan uw Docker-uitvoering: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Geef het certificaatgeheim op dat moet worden gebruikt voor https N.v.t. CERT_SECRET tekenreeks <default secret> Het geheim voor het certificaat dat is opgegeven in CERT_PATH.
Het logboekniveau instellen --log-level [LEVEL] LOG_LEVEL quiet, , errorwarn, info, , , debugtrace info De uitgebreidheid van logboeken die worden verzonden door de emulator en Data Explorer.
Diagnostische gegevens die naar Microsoft worden verzonden inschakelen --enable-telemetry ENABLE_TELEMETRY true, false true Schakel het verzenden van logboeken naar Microsoft in om de emulator te verbeteren.

Functieondersteuning

Deze emulator bevindt zich in actieve ontwikkeling en preview. Als gevolg hiervan worden niet alle Azure Cosmos DB-functies ondersteund. Sommige functies worden ook in de toekomst niet ondersteund. Deze tabel bevat de status van verschillende functies en hun ondersteuningsniveau.

Functie Ondersteuning
Batch-API ✅ Ondersteund
Bulk-API ✅ Ondersteund
Wijzigingenfeed ⚠ϑ nog niet geïmplementeerd
Document maken en lezen met utf-gegevens ✅ Ondersteund
Verzameling maken ✅ Ondersteund
Verzameling twee keer conflict maken ✅ Ondersteund
Verzameling maken met aangepast indexbeleid ⚠ϑ nog niet geïmplementeerd
Verzameling maken met verlooptijd van ttl ⚠ϑ nog niet geïmplementeerd
Database maken ✅ Ondersteund
Database twee keer conflict maken ✅ Ondersteund
Document maken ✅ Ondersteund
Gepartitioneerde verzameling maken ⚠ϑ nog niet geïmplementeerd
Verzameling verwijderen ✅ Ondersteund
Database verwijderen ✅ Ondersteund
Document verwijderen ✅ Ondersteund
Prestaties van verzameling ophalen en wijzigen ⚠ϑ nog niet geïmplementeerd
Groot document invoegen ✅ Ondersteund
Patchdocument ⚠ϑ nog niet geïmplementeerd
Gepartitioneerde verzameling parallel opvragen ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren met aggregaties ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met en filteren ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met en filteren en projectie ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met gelijkheid ✅ Ondersteund
Query met is gelijk aan id ✅ Ondersteund
Query's uitvoeren met joins ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met volgorde op ✅ Ondersteund
Query uitvoeren met volgorde voor gepartitioneerde verzameling ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren op volgorde op getallen ✅ Ondersteund
Query uitvoeren met volgorde op tekenreeksen ⚠ϑ nog niet geïmplementeerd
Query met paging ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren met datumtijden van bereikoperators ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren met bereikoperators op getallen ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren met bereikoperators op tekenreeksen ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren met één join ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met wiskundige en matrixoperators voor tekenreeksen ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met subdocumenten ⚠ϑ nog niet geïmplementeerd
Query uitvoeren met twee joins ⚠ϑ nog niet geïmplementeerd
Query's uitvoeren met twee joins en filteren ⚠ϑ nog niet geïmplementeerd
Verzameling lezen ✅ Ondersteund
Verzamelingsfeed lezen ⚠ϑ nog niet geïmplementeerd
Database lezen ✅ Ondersteund
Databasefeed lezen ⚠ϑ nog niet geïmplementeerd
Document lezen ✅ Ondersteund
Documentfeed lezen ✅ Ondersteund
Document vervangen ✅ Ondersteund
Aanvraageenheden ⚠ϑ nog niet geïmplementeerd
Opgeslagen procedures ❌ Niet gepland
Triggers ❌ Niet gepland
UDF's ❌ Niet gepland
Verzameling bijwerken ⚠ϑ nog niet geïmplementeerd
Document bijwerken ✅ Ondersteund

Beperkingen

Naast functies die nog niet worden ondersteund of niet gepland, bevat de volgende lijst de huidige beperkingen van de emulator.

  • De .NET SDK voor Azure Cosmos DB biedt geen ondersteuning voor bulkuitvoering in de emulator.
  • De .NET- en Java-SDK's bieden geen ondersteuning voor de HTTP-modus in de emulator.

Certificaten installeren voor Java SDK

Wanneer u de Java SDK voor Azure Cosmos DB gebruikt met deze versie van de emulator in de https-modus, moet u de certificaten installeren in uw lokale Java-vertrouwensarchief.

Certificaat ophalen

Voer in een bash venster het volgende uit:

# 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

Certificaat installeren

Navigeer naar de map van uw Java-installatie waar cacerts het bestand zich bevindt (vervang hieronder door de juiste map):

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

Importeer het certificaat (mogelijk wordt u om een wachtwoord gevraagd, de standaardwaarde is changeit):

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

Als er een fout optreedt omdat de alias al bestaat, verwijdert u deze en voert u het bovenstaande opnieuw uit:

keytool -cacerts -delete -alias cosmos_emulator

Problemen melden

Als u problemen ondervindt met het gebruik van deze versie van de emulator, opent u een probleem in de GitHub-opslagplaats (https://github.com/Azure/azure-cosmos-db-emulator-docker) en tagt u het met het label cosmosEmulatorVnextPreview.