Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nová generace emulátoru služby Azure Cosmos DB je zcela založená na Linuxu a je k dispozici jako kontejner Dockeru. Podporuje spouštění na široké škále procesorů a operačních systémů.
Důležité
Tato verze emulátoru podporuje pouze rozhraní API pro NoSQL v režimu brány s výběrovou podmnožinou funkcí. Další informace najdete v podpoře funkcí.
Požadavky
Instalace
Získejte image kontejneru Dockeru pomocí docker pull. Image kontejneru se publikuje do Registr artefaktů Microsoft jako mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
Spuštěno
Ke spuštění kontejneru použijte docker run. Potom použijte docker ps k ověření, že je kontejner spuštěný.
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>
Poznámka:
Emulátor se skládá ze dvou komponent:
-
Průzkumník dat – interaktivně prozkoumejte data v emulátoru. Ve výchozím nastavení se spustí na portu.
1234 -
Emulátor služby Azure Cosmos DB – místní verze databázové služby Azure Cosmos DB Ve výchozím nastavení se spustí na portu
8081.
Koncový bod brány emulátoru je obvykle k dispozici na portu 8081 na adrese http://localhost:8081. Pokud chcete přejít do Průzkumníka dat, použijte adresu http://localhost:1234 ve webovém prohlížeči. Dostupnost Průzkumníka dat může trvat několik sekund. Koncový bod brány je obvykle k dispozici okamžitě.
Důležité
Sady .NET a Java SDK nepodporují režim HTTP v emulátoru. Vzhledem k tomu, že tato verze emulátoru ve výchozím nastavení začíná protokolem HTTP, budete muset při spuštění kontejneru explicitně povolit PROTOKOL HTTPS (viz níže). Pro sadu Java SDK budete také muset nainstalovat certifikáty.
docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview --protocol https
Příkazy Dockeru
Následující tabulka shrnuje dostupné příkazy Dockeru pro konfiguraci emulátoru. Tato tabulka podrobně popisuje odpovídající argumenty, proměnné prostředí, povolené hodnoty, výchozí nastavení a popisy jednotlivých příkazů.
| Požadavek | Argument | Prostředí | Povolené hodnoty | Výchozí | Popis |
|---|---|---|---|---|---|
| Tisk nastavení do stdoutu z kontejneru |
--help, -h |
– | – | – | Zobrazení informací o dostupné konfiguraci |
| Nastavení portu koncového bodu Cosmos | --port [INT] |
přístav | INT | 8081 | Port koncového bodu Cosmos v kontejneru. Tento port stále potřebujete publikovat (například -p 8081:8081). |
| Zadání protokolu používaného koncovým bodem cosmos | --protocol |
PROTOKOL |
https, , httphttps-insecure |
http |
Protokol koncového bodu Cosmos v kontejneru. |
| Povolení Průzkumníka dat | --enable-explorer |
POVOLIT_PRŮZKUMNÍKA |
true, false |
true |
Povolte spuštění Průzkumníka dat Cosmos ve stejném kontejneru. |
| Nastavení portu používaného Průzkumníkem dat | --explorer-port |
EXPLORER_PORT | INT | 1 234 | Port Průzkumníka dat systému Cosmos v kontejneru. Tento port stále potřebujete publikovat (například -p 1234:1234). |
| Uživatel může zadat protokol používaný průzkumníkem, jinak bude automaticky použit protokol, který používá koncový bod Cosmos. | --explorer-protocol |
PROTOKOL_PRŮZKUMNÍKA |
https, , httphttps-insecure |
<the value of --protocol> |
Protokol Průzkumníka dat Cosmos v kontejneru. Ve výchozím nastavení se nastaví protokol v koncovém bodu Cosmos. |
| Přizpůsobte veřejný koncový bod brány | --gateway-endpoint |
GATEWAY_PUBLIC_ENDPOINT | – | localhost |
Koncový bod veřejné brány. Výchozí hodnota je localhost. |
| Zadání klíče prostřednictvím souboru | --key-file [PATH] |
SOUbor_KLÍČe | CESTA | <default secret> |
Přepsat výchozí klíč klíčem, který je zadán v souboru. Tento soubor musíte připojit do kontejneru (například pokud KEY_FILE=/mykey, přidejte do svého dockeru následující možnost: --mount type=bind,source=./myKey,target=/myKey |
| Nastavení cesty k datům | --data-path [PATH] |
DATA_CESTA | CESTA | /data |
Zadejte adresář pro data. Často se používá s docker run --mount možností (například pokud DATA_PATH=/usr/cosmos/data, přidejte do svého dockeru následující možnost: --mount type=bind,source=./.local/data,target=/usr/cosmos/data |
| Zadejte cestu certifikátu, která se má použít pro https. | --cert-path [PATH] |
CERT_PATH | CESTA | <default cert> |
Zadejte cestu k certifikátu pro zabezpečení provozu. Tento soubor musíte připojit do kontejneru (například pokud CERT_PATH=/mycert.pfx, přidejte do svého dockeru následující možnost: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx |
| Zadejte tajný kód certifikátu, který se má použít pro https. | – | CERTIFIKÁT_TAJNÝ | řetězec | <default secret> |
Tajný klíč certifikátu zadaného v CERT_PATH. |
| Nastavte úroveň protokolu | --log-level [LEVEL] |
ÚROVEŇ_ZÁZNAMU |
quiet, error, warn, info, , debugtrace |
info |
Úroveň podrobností protokolů generovaných emulátorem a průzkumníkem dat. |
| Povolení exportéru OpenTelemetry OTLP | --enable-otlp |
ENABLE_OTLP_EXPORTER |
true, false |
false |
Povolte integraci OpenTelemetry. |
| Povolení exportéru konzoly | --enable-console |
ENABLE_CONSOLE_EXPORTER |
true, false |
false |
Povolení výstupu telemetrických dat konzoly (užitečné pro ladění) |
| Povolení odesílání diagnostických informací do Microsoftu | --enable-telemetry |
Povolit Telemetrii |
true, false |
true |
Povolte odesílání dat o využití do Microsoftu, abychom mohli vylepšit emulátor. |
Podpora funkcí
Tento emulátor je v aktivním vývoji a verzi Preview. V důsledku toho se nepodporují všechny funkce služby Azure Cosmos DB. Některé funkce nebudou v budoucnu podporovány. Tato tabulka obsahuje stav různých funkcí a jejich úroveň podpory.
| Funkce | Technická podpora |
|---|---|
| Batch API | ✅ Podporovaný |
| Hromadné rozhraní API | ✅ Podporovaný |
| Kanál změn | ✅ Podporovaný |
| Vytvoření a čtení dokumentu s daty utf | ✅ Podporovaný |
| Vytvoření kolekce | ✅ Podporovaný |
| Vytvoření kolekce dvakrát v konfliktu | ✅ Podporovaný |
| Vytvoření kolekce pomocí vlastních zásad indexu | ⚠️ Ještě není implementováno |
| Vytvoření kolekce s vypršením platnosti ttl | ✅ Podporovaný |
| Vytvoření databáze | ✅ Podporovaný |
| Vytvoření databáze dvakrát v konfliktu | ✅ Podporovaný |
| Vytvoření dokumentu | ✅ Podporovaný |
| Vytvoření dělené kolekce | ✅ Podporovaný |
| Odstranění kolekce | ✅ Podporovaný |
| Odstranění databáze | ✅ Podporovaný |
| Odstranění dokumentu | ✅ Podporovaný |
| Získání a změna výkonu shromažďování | ⚠️ Ještě není implementováno |
| Vložení velkého dokumentu | ✅ Podporovaný |
| Oprava dokumentu | ✅ Podporovaný |
| Dotaz na rozdělenou kolekci paralelně | ⚠️ Ještě není implementováno |
| Dotazování s agregacemi | ✅ Podporovaný |
| Dotazování s filtrováním | ✅ Podporovaný |
| Dotaz s filtrováním a projekcí | ✅ Podporovaný |
| Dotaz s rovností | ✅ Podporovaný |
| Dotaz s rovností na id | ✅ Podporovaný |
| Dotazování pomocí spojení | ✅ Podporovaný |
| Dotazování s pořadím podle | ✅ Podporovaný |
| Dotaz s řazením podle particionované kolekce | ✅ Podporovaný |
| Dotaz s pořadím podle čísel | ✅ Podporovaný |
| Dotazování s pořadím podle řetězců | ✅ Podporovaný |
| Dotaz se stránkováním | ✅ Podporovaný |
| Dotaz s operátory rozsahu datum a čas | ✅ Podporovaný |
| Dotazy na čísla pomocí operátorů rozsahu | ✅ Podporovaný |
| Dotazování s operátory rozsahu v řetězcích | ✅ Podporovaný |
| Dotaz s jedním JOINem | ✅ Podporovaný |
| Dotaz s operátory pro matematiku řetězců a pole | ✅ Podporovaný |
| Dotazování pomocí vnořených dokumentů | ✅ Podporovaný |
| Dotazování se dvěma spojeními | ✅ Podporovaný |
| Dotazování se dvěma spojeními a filtrováním | ✅ Podporovaný |
| Čtení kolekce | ✅ Podporovaný |
| Čtení zdroje kolekce | ⚠️ Ještě není implementováno |
| Čtení databáze | ✅ Podporovaný |
| Čtení databázového zdroje | ⚠️ Ještě není implementováno |
| Čtení dokumentu | ✅ Podporovaný |
| Čtení dokumentového kanálu | ✅ Podporovaný |
| Nahradit dokument | ✅ Podporovaný |
| Jednotky žádostí | ⚠️ Ještě není implementováno |
| Uložené procedury | ❌ Neplánované |
| Triggery | ❌ Neplánované |
| Funkce definované uživatelem | ❌ Neplánované |
| Aktualizace kolekce | ⚠️ Ještě není implementováno |
| Aktualizace dokumentu | ✅ Podporovaný |
Omezení
Kromě funkcí, které nejsou dosud podporovány nebo nejsou plánovány, zahrnuje následující seznam současná omezení emulátoru.
- Sada .NET SDK pro službu Azure Cosmos DB nepodporuje hromadné spouštění v emulátoru.
Instalace certifikátů pro Java SDK
Při použití sady Java SDK pro Azure Cosmos DB s touto verzí emulátoru v režimu https je nutné nainstalovat jeho certifikáty do místního úložiště důvěryhodných certifikátů Java.
Získání certifikátu
bash V okně spusťte následující příkaz:
# 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
Instalace certifikátu
Přejděte do adresáře vaší instalace java, kde cacerts se nachází soubor (nahraďte ho správným adresářem):
cd "C:/Program Files/Eclipse Adoptium/jdk-17.0.10.7-hotspot/bin"
Importujte certifikát (můžete být požádáni o heslo, výchozí hodnota je "changeit"):
keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH
Pokud se zobrazí chyba, protože alias už existuje, odstraňte ho a spusťte výše uvedené příkazy znovu:
keytool -cacerts -delete -alias cosmos_emulator
Podpora OpenTelemetry
OpenTelemetry je opensourcová architektura pozorovatelnosti, která poskytuje kolekci nástrojů, rozhraní API a sad SDK pro instrumentaci, generování, shromažďování a export telemetrických dat. OpenTelemetry Protocol (OTLP) je protokol používaný OpenTelemetry k přenosu telemetrických dat mezi komponentami.
K monitorování a trasování aplikace můžete použít OpenTelemetry s emulátorem. Emulátor podporuje možnosti telemetrie, které je možné nakonfigurovat prostřednictvím proměnných prostředí nebo příznaků příkazového řádku při spuštění kontejneru Dockeru.
Emulátor exportuje následující metriky. K dispozici jsou prostřednictvím jakéhokoli back-endu metrik, který podporuje OTLP, a poskytuje cenné přehledy o výkonu a stavu databáze:
- Frekvence požadavků: Zobrazuje vzory provozu pro různé typy operací.
- Časy provádění dotazů: Měří čas potřebný ke spouštění různých dotazů.
- Využití prostředků: metriky procesoru, využití paměti a fondu připojení
- Míry chyb: Sledování chyb podle typu a koncového bodu
Podrobné pokyny s příklady jsou k dispozici v úložišti GitHub.
Použití v pracovním postupu kontinuální integrace
Používání kontejnerů Dockeru v kanálech CI/CD má spoustu výhod, zejména pro stavové systémy, jako jsou databáze. Může se jednat o nákladovou efektivitu, výkon, spolehlivost a konzistenci testovacích sad.
Emulátor je možné začlenit jako součást kanálů CI/CD. Můžete se podívat na toto úložiště GitHub , které poskytuje příklady použití emulátoru jako součást pracovního postupu CI GitHub Actions pro aplikace .NET, Python, Java a Go v obou x64 architekturách ARM64 (demonstrováno pro Linux Runner pomocí ubuntu).
Tady je příklad pracovního postupu CI GitHub Actions, který ukazuje, jak nakonfigurovat emulátor jako kontejner služby GitHub Actions jako součást úlohy v pracovním postupu. GitHub se postará o spuštění kontejneru Dockeru a po dokončení úlohy ho zničí bez nutnosti ručního zásahu docker run (například pomocí příkazu).
name: CI demo app
on:
push:
branches: [main]
paths:
- 'java-app/**'
pull_request:
branches: [main]
paths:
- 'java-app/**'
jobs:
build-and-test:
runs-on: ubuntu-latest
services:
cosmosdb:
image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview
ports:
- 8081:8081
env:
PROTOCOL: https
env:
COSMOSDB_CONNECTION_STRING: ${{ secrets.COSMOSDB_CONNECTION_STRING }}
COSMOSDB_DATABASE_NAME: ${{ vars.COSMOSDB_DATABASE_NAME }}
COSMOSDB_CONTAINER_NAME: ${{ vars.COSMOSDB_CONTAINER_NAME }}
steps:
- name: Set up Java
uses: actions/setup-java@v3
with:
distribution: 'microsoft'
java-version: '21.0.0'
- name: Export Cosmos DB Emulator Certificate
run: |
sudo apt update && sudo apt install -y openssl
openssl s_client -connect localhost:8081 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cosmos_emulator.cert
cat cosmos_emulator.cert
$JAVA_HOME/bin/keytool -cacerts -importcert -alias cosmos_emulator -file cosmos_emulator.cert -storepass changeit -noprompt
- name: Checkout repository
uses: actions/checkout@v4
- name: Run tests
run: cd java-app && mvn test
Tato úloha běží na spouštěči Ubuntu a používá mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview image Dockeru jako kontejner služby. Používá proměnné prostředí ke konfiguraci připojovacího řetězce, názvu databáze a názvu kontejneru. Vzhledem k tomu, že úloha běží přímo na počítači spouštěče GitHub Actions, může krok spuštění testů v úloze přistupovat k emulátoru pomocí localhost:8081 (8081 je port vystavený emulátorem).
Krok Export certifikátu emulátoru služby Cosmos DB je specifický pro aplikace v Javě, protože sada Azure Cosmos DB Java SDK v současné době nepodporuje HTTP režim v emulátoru. Proměnná PROTOCOL prostředí je nastavená v httpsservices části a tento krok exportuje certifikát emulátoru a importuje ho do úložiště klíčů Java. Totéž platí i pro .NET.
Hlášení problémů
Pokud narazíte na problémy s používáním této verze emulátoru, otevřete problém v úložišti GitHub (https://github.com/Azure/azure-cosmos-db-emulator-docker) a označte ho popiskem cosmosEmulatorVnextPreview.