Dela via


Linux-baserad emulator (förhandsversion)

Nästa generation av Azure Cosmos DB-emulatorn är helt Linux-baserad och är tillgänglig som en Docker-container. Den stöder körning på en mängd olika processorer och operativsystem.

Viktigt!

Den här versionen av emulatorn stöder endast API:et för NoSQL i gatewayläge, med en utvald delmängd av funktioner. Mer information finns i funktionsstöd.

Förutsättningar

Installation

Hämta Docker-containeravbildningen med .docker pull Containeravbildningen publiceras till Microsofts artefaktregister som mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.

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

Körs

Om du vill köra containern använder du docker run. Därefter kan du använda docker ps för att verifiera att containern körs.

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>

Kommentar

Emulatorn består av två komponenter:

  • Datautforskaren – utforska data i emulatorn interaktivt. Som standard körs detta på porten 1234
  • Azure Cosmos DB-emulator – en lokal version av Azure Cosmos DB-databastjänsten. Som standard körs detta på port 8081.

Emulatorns gatewayslutpunkt är vanligtvis tillgänglig på porten 8081 på adressen http://localhost:8081. Om du vill navigera till datautforskaren använder du adressen http://localhost:1234 i webbläsaren. Det kan ta några sekunder innan datautforskaren är tillgänglig. Gatewayslutpunkten är vanligtvis tillgänglig omedelbart.

Viktigt!

.NET- och Java-SDK:erna stöder inte HTTP-läge i emulatorn. Eftersom den här versionen av emulatorn börjar med HTTP som standard måste du uttryckligen aktivera HTTPS när du startar containern (se nedan). För Java SDK måste du också installera certifikat.

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

Docker-kommandon

I följande tabell sammanfattas de tillgängliga Docker-kommandona för att konfigurera emulatorn. Den här tabellen beskriver motsvarande argument, miljövariabler, tillåtna värden, standardinställningar och beskrivningar av varje kommando.

Krav Arg Env Tillåtna värden Standardvärde beskrivning
Skriv ut inställningarna till stdout från containern --help, -h Saknas Saknas Saknas Visa information om tillgänglig konfiguration
Ange porten för Cosmos-slutpunkten --port [INT] PORT INT 8081 Porten för Cosmos-slutpunkten på containern. Du måste fortfarande publicera den här porten (till exempel -p 8081:8081).
Ange det protokoll som används av Cosmos-slutpunkten --protocol PROTOKOLL https, , httphttps-insecure http Protokollet för Cosmos-slutpunkten på containern.
Aktivera datautforskaren --enable-explorer ENABLE_EXPLORER true, false true Aktivera körning av Cosmos Data Explorer på samma container.
Ange den port som används av datautforskaren --explorer-port EXPLORER_PORT INT 1234 Porten för Cosmos Data Explorer i containern. Du måste fortfarande publicera den här porten (till exempel -p 1234:1234).
Användaren bör kunna ange det protokoll som används av utforskaren, annars som standard vad Cosmos-slutpunkten använder --explorer-protocol EXPLORER_PROTOCOL https, , httphttps-insecure <the value of --protocol> Protokollet för Cosmos Data Explorer i containern. Standardinställningen för protokoll på Cosmos-slutpunkten.
Ange nyckeln via filen --key-file [PATH] KEY_FILE STIG <default secret> Åsidosätt standardnyckeln med nyckeln som anges i filen. Du måste montera den här filen i containern (om du till exempel KEY_FILE=/mykey lägger du till ett alternativ som följande i docker-körningen: --mount type=bind,source=./myKey,target=/myKey)
Ange datasökvägen --data-path [PATH] DATA_PATH STIG /data Ange en katalog för data. Används ofta med docker run --mount alternativet (om du till exempel DATA_PATH=/usr/cosmos/data lägger du till ett alternativ som liknar följande i docker-körningen: --mount type=bind,source=./.local/data,target=/usr/cosmos/data)
Ange den certifikatsökväg som ska användas för https --cert-path [PATH] CERT_PATH STIG <default cert> Ange en sökväg till ett certifikat för att skydda trafiken. Du måste montera den här filen i containern (om du till exempel CERT_PATH=/mycert.pfx lägger du till ett alternativ som liknar följande i docker-körningen: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Ange den certifikathemlighet som ska användas för https Ej tillämpligt CERT_SECRET sträng <default secret> Hemligheten för certifikatet som anges på CERT_PATH.
Ange loggnivå --log-level [LEVEL] LOG_LEVEL quiet, error, warn, info, , , debugtrace info Utförligheten i loggar som genereras av emulatorn och datautforskaren.
Aktivera diagnostikinformation som skickas till Microsoft --enable-telemetry ENABLE_TELEMETRY true, false true Aktivera sändning av loggar till Microsoft för att hjälpa oss att förbättra emulatorn.

Funktionsstöd

Den här emulatorn är i aktiv utveckling och förhandsversion. Därför stöds inte alla Azure Cosmos DB-funktioner. Vissa funktioner kommer inte heller att stödjas i framtiden. Den här tabellen innehåller tillståndet för olika funktioner och deras supportnivå.

Funktion Support
Batch-API ✅ Stödd
Mass-API ✅ Stödd
Ändringsflöde ⚠️ Ännu inte implementerad
Skapa och läsa dokument med utf-data ✅ Stödd
Skapa samling ✅ Stödd
Skapa samling två gånger i konflikt ✅ Stödd
Skapa samling med anpassad indexprincip ⚠️ Ännu inte implementerad
Skapa samling med ttl-förfallodatum ⚠️ Ännu inte implementerad
Skapa databas ✅ Stödd
Skapa databas två gånger i konflikt ✅ Stödd
Skapa dokument ✅ Stödd
Skapa partitionerad samling ⚠️ Ännu inte implementerad
Ta bort samling ✅ Stödd
Ta bort databas ✅ Stödd
Ta bort dokument ✅ Stödd
Hämta och ändra insamlingsprestanda ⚠️ Ännu inte implementerad
Infoga stort dokument ✅ Stödd
Korrigera dokument ⚠️ Ännu inte implementerad
Fråga partitionerad samling parallellt ⚠️ Ännu inte implementerad
Fråga med aggregeringar ⚠️ Ännu inte implementerad
Fråga med och filtrera ⚠️ Ännu inte implementerad
Fråga med och filtrera och projektion ⚠️ Ännu inte implementerad
Fråga med likhet ✅ Stödd
Fråga med lika med id ✅ Stödd
Fråga med kopplingar ⚠️ Ännu inte implementerad
Fråga med ordning efter ✅ Stödd
Fråga med order by för partitionerad samling ⚠️ Ännu inte implementerad
Fråga med order efter tal ✅ Stödd
Fråga med ordning efter strängar ⚠️ Ännu inte implementerad
Fråga med växling ⚠️ Ännu inte implementerad
Fråga med datumtider för intervalloperatorer ⚠️ Ännu inte implementerad
Fråga med intervalloperatorer om tal ⚠️ Ännu inte implementerad
Fråga med intervalloperatorer på strängar ⚠️ Ännu inte implementerad
Fråga med enkel koppling ⚠️ Ännu inte implementerad
Fråga med strängmatematik- och matrisoperatorer ⚠️ Ännu inte implementerad
Fråga med underdokument ⚠️ Ännu inte implementerad
Fråga med två kopplingar ⚠️ Ännu inte implementerad
Fråga med två kopplingar och filter ⚠️ Ännu inte implementerad
Läs samling ✅ Stödd
Läs samlingsfeed ⚠️ Ännu inte implementerad
Läs databas ✅ Stödd
Läsa databasfeed ⚠️ Ännu inte implementerad
Läsa dokument ✅ Stödd
Läs dokumentfeed ✅ Stödd
Ersätt dokument ✅ Stödd
Enheter för programbegäran ⚠️ Ännu inte implementerad
Lagrade procedurer ❌ Inte planerat
Utlösare ❌ Inte planerat
UDF:er ❌ Inte planerat
Uppdatera samling ⚠️ Ännu inte implementerad
Uppdatera dokument ✅ Stödd

Begränsningar

Förutom funktioner som ännu inte stöds eller inte planeras innehåller följande lista aktuella begränsningar för emulatorn.

  • .NET SDK för Azure Cosmos DB stöder inte masskörning i emulatorn.
  • .NET- och Java-SDK:erna stöder inte HTTP-läge i emulatorn.

Installera certifikat för Java SDK

När du använder Java SDK för Azure Cosmos DB med den här versionen av emulatorn i https-läge är det nödvändigt att installera certifikaten i ditt lokala Java-förtroendearkiv.

Hämta certifikat

Kör följande i ett bash fönster:

# 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

Installera certifikat

Gå till katalogen för java-installationen där cacerts filen finns (ersätt nedan med rätt katalog):

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

Importera certifikatet (du kan bli ombedd att ange ett lösenord, standardvärdet är "changeit"):

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

Om du får ett fel eftersom aliaset redan finns tar du bort det och kör sedan ovanstående igen:

keytool -cacerts -delete -alias cosmos_emulator

Rapporteringsproblem

Om du får problem med att använda den här versionen av emulatorn öppnar du ett problem på GitHub-lagringsplatsen (https://github.com/Azure/azure-cosmos-db-emulator-docker) och taggar den med etiketten cosmosEmulatorVnextPreview.