Поделиться через


Эмулятор на основе Linux (предварительная версия)

Следующее поколение эмулятора Azure Cosmos DB полностью основано на Linux и доступно в качестве контейнера Docker. Он поддерживает работу в различных процессорах и операционных системах.

Внимание

Эта версия эмулятора поддерживает только API для NoSQL в режиме шлюза с выбором подмножества функций. Дополнительные сведения см. в разделе поддержки функций.

Необходимые компоненты

Установка

Получение образа контейнера Docker с помощью docker pull. Образ контейнера публикуется в Реестр артефактов Microsoft как mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview.

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

Выполняется

Чтобы запустить контейнер, используйте docker run. Затем используйте docker ps для проверки того, запущен ли контейнер.

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>

Примечание.

Эмулятор состоит из двух компонентов:

  • Обозреватель данных — интерактивное изучение данных в эмуляторе. По умолчанию это выполняется через порт 1234
  • Эмулятор Azure Cosmos DB — локальная версия службы базы данных Azure Cosmos DB. По умолчанию это выполняется через порт 8081.

Конечная точка шлюза эмулятора обычно доступна на порту 8081 по адресу http://localhost:8081. Чтобы перейти к обозревателе данных, используйте адрес http://localhost:1234 в веб-браузере. Для доступности обозревателя данных может потребоваться несколько секунд. Конечная точка шлюза обычно доступна немедленно.

Внимание

Пакеты SDK для .NET и Java не поддерживают режим HTTP в эмуляторе. Так как эта версия эмулятора начинается с HTTP по умолчанию, необходимо явно включить HTTPS при запуске контейнера (см. ниже). Для пакета SDK для Java также потребуется установить сертификаты.

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

Команды Docker

В следующей таблице приведены доступные команды Docker для настройки эмулятора. В этой таблице приведены соответствующие аргументы, переменные среды, допустимые значения, параметры по умолчанию и описания каждой команды.

Требование Arg Env Допустимые значения По умолчанию. Description
Печать параметров в stdout из контейнера --help, -h Неприменимо Н/Д Неприменимо Отображение сведений о доступной конфигурации
Установка порта конечной точки Cosmos --port [INT] ПОРТ INT 8081 Порт конечной точки Cosmos в контейнере. Вам по-прежнему нужно опубликовать этот порт (например, -p 8081:8081).
Укажите протокол, используемый конечной точкой Cosmos --protocol ПРОТОКОЛ https, , httphttps-insecure http Протокол конечной точки Cosmos в контейнере.
Включение обозревателя данных --enable-explorer ENABLE_EXPLORER true, false true Включите запуск обозревателя данных Cosmos в одном контейнере.
Установка порта, используемого обозревателем данных --explorer-port EXPLORER_PORT INT 1 234 Порт обозревателя данных Cosmos в контейнере. Вам по-прежнему нужно опубликовать этот порт (например, -p 1234:1234).
Пользователь должен иметь возможность указать протокол, используемый обозревателем, в противном случае используется конечная точка Cosmos. --explorer-protocol EXPLORER_PROTOCOL https, , httphttps-insecure <the value of --protocol> Протокол обозревателя данных Cosmos в контейнере. По умолчанию используется параметр протокола в конечной точке Cosmos.
Указание ключа с помощью файла --key-file [PATH] KEY_FILE ПУТЬ <default secret> Переопределите ключ по умолчанию с ключом, указанным в файле. Необходимо подключить этот файл к контейнеру (например, если KEY_FILE=/mykey, вы добавите следующий параметр в выполнение Docker: --mount type=bind,source=./myKey,target=/myKey
Установка пути к данным --data-path [PATH] DATA_PATH ПУТЬ /data Укажите каталог для данных. Часто используется с docker run --mount параметром (например, если DATA_PATH=/usr/cosmos/data, вы добавите следующий параметр в выполнение docker: --mount type=bind,source=./.local/data,target=/usr/cosmos/data
Укажите путь сертификата, используемый для https --cert-path [PATH] CERT_PATH ПУТЬ <default cert> Укажите путь к сертификату для защиты трафика. Необходимо подключить этот файл к контейнеру (например, если CERT_PATH=/mycert.pfx, вы добавите следующий параметр в выполнение Docker: --mount type=bind,source=./mycert.pfx,target=/mycert.pfx)
Укажите секрет сертификата, используемый для https Н/П CERT_SECRET строка <default secret> Секрет сертификата, указанного в CERT_PATH.
Настройка уровня журнала --log-level [LEVEL] LOG_LEVEL quiet, , errorinfowarndebug,trace info Подробные сведения о журналах, создаваемых эмулятором и обозревателем данных.
Включение отправки диагностических сведений в корпорацию Майкрософт --enable-telemetry ENABLE_TELEMETRY true, false true Включите отправку журналов в корпорацию Майкрософт, чтобы помочь нам улучшить эмулятор.

Поддерживаемые компоненты

Этот эмулятор находится в активной разработке и предварительной версии. В результате поддерживаются не все функции Azure Cosmos DB. Некоторые функции также не будут поддерживаться в будущем. Эта таблица включает состояние различных функций и их уровень поддержки.

Функция Поддержка
API пакетной службы ✅ Поддержанный
Массовый API ✅ Поддержанный
Канал изменений ⚠️ Пока не реализовано
Создание и чтение документа с данными utf ✅ Поддержанный
Создание коллекции ✅ Поддержанный
Создание коллекции дважды конфликтует ✅ Поддержанный
Создание коллекции с помощью настраиваемой политики индекса ⚠️ Пока не реализовано
Создание коллекции с сроком действия ttl ⚠️ Пока не реализовано
Создание базы данных ✅ Поддержанный
Создание базы данных дважды конфликтует ✅ Поддержанный
Создание документа ✅ Поддержанный
Создание секционированных коллекций ⚠️ Пока не реализовано
Удаление коллекции ✅ Поддержанный
Удаление базы данных ✅ Поддержанный
Удаление документа ✅ Поддержанный
Получение и изменение производительности коллекции ⚠️ Пока не реализовано
Вставка большого документа ✅ Поддержанный
Документ исправления ⚠️ Пока не реализовано
Параллельное выполнение запросов к секционированной коллекции ⚠️ Пока не реализовано
Запрос с агрегатами ⚠️ Пока не реализовано
Запрос с помощью и фильтрация ⚠️ Пока не реализовано
Запрос с использованием и фильтрацией и проекцией ⚠️ Пока не реализовано
Запрос с равенством ✅ Поддержанный
Запрос с равными идентификаторами ✅ Поддержанный
Запрос с соединениями ⚠️ Пока не реализовано
Запрос с заказом по ✅ Поддержанный
Запрос с порядком для секционированных коллекций ⚠️ Пока не реализовано
Запрос с порядком по числам ✅ Поддержанный
Запрос с порядком по строкам ⚠️ Пока не реализовано
Запрос с разбиением по страницам ⚠️ Пока не реализовано
Запрос с датами операторов диапазона ⚠️ Пока не реализовано
Запрос с операторами диапазона по номерам ⚠️ Пока не реализовано
Запрос с операторами диапазона в строках ⚠️ Пока не реализовано
Запрос с одним соединением ⚠️ Пока не реализовано
Запрос с помощью строковых математических и массивных операторов ⚠️ Пока не реализовано
Запрос с вложенными документами ⚠️ Пока не реализовано
Запрос с двумя соединениями ⚠️ Пока не реализовано
Запрос с двумя соединениями и фильтром ⚠️ Пока не реализовано
Чтение коллекции ✅ Поддержанный
Чтение веб-канала коллекции ⚠️ Пока не реализовано
Чтение базы данных ✅ Поддержанный
Чтение веб-канала базы данных ⚠️ Пока не реализовано
Чтение документа ✅ Поддержанный
Чтение веб-канала документов ✅ Поддержанный
Замена документа ✅ Поддержанный
Единицы запросов ⚠️ Пока не реализовано
Хранимые процедуры ❌ Не запланировано
Триггеры ❌ Не запланировано
Определяемые пользователем функции ❌ Не запланировано
Обновление коллекции ⚠️ Пока не реализовано
Обновление документа ✅ Поддержанный

Ограничения

Помимо функций, которые еще не поддерживаются или не запланированы, в следующем списке содержатся текущие ограничения эмулятора.

  • Пакет SDK для .NET для Azure Cosmos DB не поддерживает массовое выполнение в эмуляторе.
  • Пакеты SDK для .NET и Java не поддерживают режим HTTP в эмуляторе.

Установка сертификатов для пакета SDK для Java

При использовании пакета SDK Java для Azure Cosmos DB с этой версией эмулятора в режиме https необходимо установить сертификаты в локальном хранилище доверия Java.

Получение сертификата

В окне выполните следующую bash команду:

# 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

Установка сертификата

Перейдите в каталог установки java, где cacerts находится файл (замените ниже правильным каталогом):

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

Импортируйте сертификат (вам может потребоваться пароль, значение по умолчанию — changeit):

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

Если вы получите ошибку, так как псевдоним уже существует, удалите его, а затем снова запустите приведенный выше код:

keytool -cacerts -delete -alias cosmos_emulator

Создание отчетов о проблемах

При возникновении проблем с использованием этой версии эмулятора откройте проблему в репозитории GitHub (https://github.com/Azure/azure-cosmos-db-emulator-docker) и пометьте ее меткой cosmosEmulatorVnextPreview.