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