Эмулятор на основе 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 , , http https-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 , , http https-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 , , error info warn debug ,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
.