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 , , http https-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 , , http https-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 , , , debug trace |
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
.