Udostępnij za pośrednictwem


Emulator oparty na systemie Linux (wersja zapoznawcza)

Kolejna generacja emulatora usługi Azure Cosmos DB jest całkowicie oparta na systemie Linux i jest dostępna jako kontener platformy Docker. Obsługuje on uruchamianie na wielu różnych procesorach i systemach operacyjnych.

Ważne

Ta wersja emulatora obsługuje tylko interfejs API dla noSQL w trybie bramy z wybranym podzestawem funkcji. Aby uzyskać więcej informacji, zobacz obsługa funkcji.

Wymagania wstępne

Instalacja

Pobierz obraz kontenera platformy Docker przy użyciu polecenia docker pull. Obraz kontenera jest publikowany w Rejestr Artefaktów Microsoft jako mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.

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

Uruchomiono

Aby uruchomić kontener, użyj polecenia docker run. Następnie użyj polecenia docker ps , aby sprawdzić, czy kontener jest uruchomiony.

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>

Uwaga

Emulator składa się z dwóch składników:

  • Eksplorator danych — interaktywnie eksplorowanie danych w emulatorze. Domyślnie jest to uruchamiane na porcie 1234
  • Emulator usługi Azure Cosmos DB — lokalna wersja usługi bazy danych Azure Cosmos DB. Domyślnie jest to uruchamiane na porcie 8081.

Punkt końcowy bramy emulatora jest zazwyczaj dostępny na porcie 8081 pod adresem http://localhost:8081. Aby przejść do eksploratora danych, użyj adresu http://localhost:1234 w przeglądarce internetowej. Udostępnienie eksploratora danych może potrwać kilka sekund. Punkt końcowy bramy jest zwykle dostępny natychmiast.

Ważne

Zestawy SDK .NET i Java nie obsługują trybu HTTP w emulatorze. Ponieważ ta wersja emulatora domyślnie rozpoczyna się od protokołu HTTP, należy jawnie włączyć protokół HTTPS podczas uruchamiania kontenera (zobacz poniżej). W przypadku zestawu JAVA SDK należy również zainstalować certyfikaty.

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

Polecenia platformy Docker

Poniższa tabela zawiera podsumowanie dostępnych poleceń platformy Docker na potrzeby konfigurowania emulatora. Ta tabela zawiera szczegółowe informacje o odpowiednich argumentach, zmiennych środowiskowych, dozwolonych wartościach, ustawieniach domyślnych i opisach każdego polecenia.

Wymaganie Arg Env Dozwolone wartości Domyślny opis
Drukowanie ustawień do stdout z kontenera --help, -h Brak NIE DOTYCZY Brak Wyświetlanie informacji o dostępnej konfiguracji
Ustawianie portu punktu końcowego usługi Cosmos --port [INT] PORT INT 8081 Port punktu końcowego usługi Cosmos w kontenerze. Nadal musisz opublikować ten port (na przykład -p 8081:8081).
Określanie protokołu używanego przez punkt końcowy usługi Cosmos --protocol PROTOKÓŁ https, , httphttps-insecure http Protokół punktu końcowego usługi Cosmos w kontenerze.
Włączanie eksploratora danych --enable-explorer ENABLE_EXPLORER true, false true Włącz uruchamianie Eksploratora danych usługi Cosmos w tym samym kontenerze.
Ustawianie portu używanego przez eksploratora danych --explorer-port EXPLORER_PORT INT 1234 Port Eksploratora danych usługi Cosmos w kontenerze. Nadal musisz opublikować ten port (na przykład -p 1234:1234).
Użytkownik powinien mieć możliwość określenia protokołu używanego przez eksploratora. W przeciwnym razie wartość domyślna dla używanego punktu końcowego usługi Cosmos --explorer-protocol EXPLORER_PROTOCOL https, , httphttps-insecure <the value of --protocol> Protokół Eksploratora danych usługi Cosmos w kontenerze. Domyślnie jest to ustawienie protokołu w punkcie końcowym usługi Cosmos.
Określanie klucza za pomocą pliku --key-file [PATH] KEY_FILE ŚCIEŻKA <default secret> Zastąpij klucz domyślny kluczem określonym w pliku. Musisz zainstalować ten plik w kontenerze (na przykład jeśli KEY_FILE=/mykey, należy dodać opcję podobną do następującej do uruchomienia platformy Docker: --mount type=bind,source=./myKey,target=/myKey)
Ustawianie ścieżki danych --data-path [PATH] DATA_PATH ŚCIEŻKA /data Określ katalog dla danych. Często używane z opcją docker run --mount (na przykład jeśli DATA_PATH=/usr/cosmos/data, należy dodać opcję podobną do następującej do uruchomienia platformy Docker: --mount type=bind,source=./.local/data,target=/usr/cosmos/data)
Określ ścieżkę certyfikatu, która ma być używana dla protokołu https --cert-path [PATH] CERT_PATH ŚCIEŻKA <default cert> Określ ścieżkę do certyfikatu na potrzeby zabezpieczania ruchu. Musisz zainstalować ten plik w kontenerze (na przykład jeśli CERT_PATH=/mycert.pfx, należy dodać opcję podobną do następującej do uruchomienia platformy Docker: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Określ klucz tajny certyfikatu, który ma być używany dla protokołu https Nie dotyczy CERT_SECRET string <default secret> Wpis tajny certyfikatu określony w CERT_PATH.
Ustawianie poziomu dziennika --log-level [LEVEL] LOG_LEVEL quiet, , error, warn, info, , debugtrace info Szczegółowość dzienników emitowanych przez emulator i eksplorator danych.
Włączanie wysyłania informacji diagnostycznych do firmy Microsoft --enable-telemetry ENABLE_TELEMETRY true, false true Włącz wysyłanie dzienników do firmy Microsoft, aby pomóc nam ulepszyć emulator.

Obsługa funkcji

Ten emulator jest w aktywnym rozwoju i wersji zapoznawczej. W związku z tym nie wszystkie funkcje usługi Azure Cosmos DB są obsługiwane. Niektóre funkcje nie będą również obsługiwane w przyszłości. Ta tabela zawiera stan różnych funkcji i ich poziom obsługi.

Funkcja Pomoc techniczna
Batch API ✅ Obsługiwane
Interfejs API zbiorczy ✅ Obsługiwane
Zestawienie zmian ⚠✔ Jeszcze nie zaimplementowano
Tworzenie i odczytywanie dokumentu przy użyciu danych utf ✅ Obsługiwane
Tworzenie kolekcji ✅ Obsługiwane
Konflikt tworzenia kolekcji dwukrotnie ✅ Obsługiwane
Tworzenie kolekcji przy użyciu niestandardowych zasad indeksu ⚠✔ Jeszcze nie zaimplementowano
Tworzenie kolekcji z wygaśnięciem czasu wygaśnięcia ⚠✔ Jeszcze nie zaimplementowano
Tworzenie bazy danych ✅ Obsługiwane
Konflikt tworzenia bazy danych dwukrotnie ✅ Obsługiwane
Tworzenie dokumentu ✅ Obsługiwane
Tworzenie kolekcji partycjonowanej ⚠✔ Jeszcze nie zaimplementowano
Usuwanie kolekcji ✅ Obsługiwane
Usuwanie bazy danych ✅ Obsługiwane
Usuwanie dokumentu ✅ Obsługiwane
Uzyskiwanie i zmienianie wydajności kolekcji ⚠✔ Jeszcze nie zaimplementowano
Wstaw duży dokument ✅ Obsługiwane
Dokument poprawki ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań dotyczących kolekcji partycjonowanej równolegle ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań za pomocą agregacji ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań za pomocą funkcji i filtrowanie ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań za pomocą funkcji i filtrowania i projekcji ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań o równość ✅ Obsługiwane
Zapytanie o identyfikatorze równe ✅ Obsługiwane
Wykonywanie zapytań z sprzężeniami ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań według kolejności ✅ Obsługiwane
Wykonywanie zapytań o kolejność według dla kolekcji partycjonowanej ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań według kolejności według liczb ✅ Obsługiwane
Wykonywanie zapytań według kolejności według ciągów ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań przy użyciu stronicowania ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań przy użyciu operatorów zakresu daty/godziny ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań przy użyciu operatorów zakresu w liczbach ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań za pomocą operatorów zakresu w ciągach ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań przy użyciu sprzężenia jednokrotnego ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań przy użyciu operatorów matematycznych ciągów i tablic ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań przy użyciu dokumentów podrzędnych ⚠✔ Jeszcze nie zaimplementowano
Wykonywanie zapytań z dwoma sprzężeniami ⚠✔ Jeszcze nie zaimplementowano
Zapytanie z dwoma sprzężeniami i filtrem ⚠✔ Jeszcze nie zaimplementowano
Odczytywanie kolekcji ✅ Obsługiwane
Odczytywanie źródła danych kolekcji ⚠✔ Jeszcze nie zaimplementowano
Odczyt bazy danych ✅ Obsługiwane
Odczytywanie źródła danych bazy danych ⚠✔ Jeszcze nie zaimplementowano
Odczytywanie dokumentu ✅ Obsługiwane
Odczytywanie kanału informacyjnego dokumentu ✅ Obsługiwane
Zamień dokument ✅ Obsługiwane
Jednostki żądania ⚠✔ Jeszcze nie zaimplementowano
Procedury składowane ❌ Nieplanowe
Wyzwalacze ❌ Nieplanowe
Funkcje zdefiniowane przez użytkownika ❌ Nieplanowe
Aktualizowanie kolekcji ⚠✔ Jeszcze nie zaimplementowano
Aktualizowanie dokumentu ✅ Obsługiwane

Ograniczenia

Oprócz funkcji, które nie są jeszcze obsługiwane lub nie są planowane, poniższa lista zawiera bieżące ograniczenia emulatora.

  • Zestaw .NET SDK dla usługi Azure Cosmos DB nie obsługuje wykonywania zbiorczego w emulatorze.
  • Zestawy SDK .NET i Java nie obsługują trybu HTTP w emulatorze.

Instalowanie certyfikatów dla zestawu Java SDK

W przypadku korzystania z zestawu Java SDK dla usługi Azure Cosmos DB z tą wersją emulatora w trybie https należy zainstalować certyfikaty w lokalnym magazynie zaufania języka Java.

Pobieranie certyfikatu

bash W oknie uruchom następujące polecenie:

# 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

Instalowanie certyfikatu

Przejdź do katalogu instalacji języka Java, w którym cacerts znajduje się plik (zastąp poniżej poprawnym katalogiem):

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

Zaimportuj certyfikat (może zostać wyświetlony monit o podanie hasła, wartość domyślna to "changeit"):

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

Jeśli wystąpi błąd, ponieważ alias już istnieje, usuń go, a następnie ponownie uruchom powyższe polecenie:

keytool -cacerts -delete -alias cosmos_emulator

Raportowanie problemów

Jeśli wystąpią problemy z używaniem tej wersji emulatora, otwórz problem w repozytorium GitHub (https://github.com/Azure/azure-cosmos-db-emulator-docker) i oznacz go etykietą cosmosEmulatorVnextPreview.