Краткое руководство: использование Azure Cosmos DB в качестве MongoDB с Python

Important

Вы хотите перенести существующее приложение MongoDB или использовать функции языка запросов MongoDB (MQL)? Рассмотрим Azure DocumentDB.

Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.

В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для MongoDB с помощью Python. Azure Cosmos DB для MongoDB — это хранилище данных без схемы, позволяющее приложениям хранить неструктурированные документы в облаке с помощью библиотек MongoDB. Вы узнаете, как создавать документы и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью Python.

Исходный код библиотеки | Пакет (PyPI) | Azure Developer CLI

Предпосылки

  • Azure Developer CLI (Интерфейс командной строки для разработчиков Azure)
  • Docker Desktop
  • Python 3.12

Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

Инициализация проекта

Используйте интерфейс командной строки разработчика Azure (azd) для создания учетной записи Azure Cosmos DB для таблицы и развертывания контейнерного примера приложения. Пример приложения использует клиентскую библиотеку для управления, создания, чтения и выполнения запросов к образцам данных.

  1. Откройте терминал в пустом каталоге.

  2. Если вы еще не прошли проверку подлинности, выполните проверку подлинности в интерфейсе командной строки разработчика Azure с помощью azd auth login. Следуйте инструкциям, указанным инструментом, чтобы выполнить аутентификацию в CLI, используя ваши предпочитаемые учетные данные Azure.

    azd auth login
    
  3. Используйте azd init для инициализации проекта.

    azd init --template cosmos-db-mongodb-python-quickstart
    
  4. Во время инициализации настройте уникальное имя среды.

  5. Разверните учетную запись Azure Cosmos DB с помощью azd up. Шаблоны Bicep также развертывают образец веб-приложения.

    azd up
    
  6. В процессе подготовки выберите вашу подписку, желаемое местоположение и целевую группу ресурсов. Дождитесь завершения процесса настройки. Процесс может занять около пяти минут.

  7. После завершения подготовки ресурсов Azure в выходные данные включён URL-адрес работающего веб-приложения.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Используйте URL-адрес консоли для перехода к веб-приложению в браузере. Просмотрите выходные данные запущенного приложения.

Снимок экрана: работающее веб-приложение.

Установка клиентской библиотеки

Клиентская библиотека доступна через PyPi в качестве pymongo пакета.

  1. Откройте терминал и перейдите в папку /src .

    cd ./src
    
  2. Если pymongo еще не установлен, установите пакет с помощью pip install.

    pip install pymongo
    
  3. Откройте и просмотрите файл src/requirements.txt , чтобы убедиться, что запись pymongo существует.

Импорт библиотек

Импортируйте тип MongoClient в код вашего приложения.

from pymongo import MongoClient

Объектная модель

Name Description
MongoClient Тип, используемый для подключения к MongoDB.
Database Представляет базу данных в учетной записи.
Collection Представляет коллекцию в базе данных в учетной записи.

Примеры кода

Пример кода в шаблоне использует базу данных с именем cosmicworks и коллекцию с именем products. Коллекция products содержит такие сведения, как имя, категория, количество и уникальный идентификатор для каждого продукта. Коллекция использует /category свойство в качестве ключа шардирования.

аутентификация клиента;

В этом примере создается новый экземпляр MongoClient типа.

connection_string = "<azure-cosmos-db-for-mongodb-connection-string>"

client = MongoClient(connection_string)

Получение базы данных

В этом примере экземпляр типа Database создается с помощью функции get_database типа MongoClient.

database = client.get_database("<database-name>")

Получите коллекцию

В этом примере экземпляр типа Collection создается с помощью функции get_collection типа Database.

collection = database.get_collection("<collection-name>")

Создание документа

Создайте документ в коллекции с помощью collection.update_one. Этот метод "вставляет или обновляет" элемент, фактически заменяя элемент, если он уже существует.

new_document = {
    "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "category": "gear-surf-surfboards",
    "name": "Yamba Surfboard",
    "quantity": 12,
    "sale": False,
}

filter = {
    "_id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "category": "gear-surf-surfboards"
}
payload = {
    "$set": new_document
}
result = collection.update_one(filter, payload, upsert=True);

Чтение документа

Выполните операцию точечного чтения, используя поля уникального идентификатора (id) и ключа сегментов. Используйте collection.find_one, чтобы эффективно получить конкретный элемент.

filter = {
    "_id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
    "category": "gear-surf-surfboards"
}
existing_document = collection.find_one(filter)

Поиск документов

Выполнение запроса по нескольким элементам в контейнере с помощью collection.find. Этот запрос находит все элементы в пределах указанной категории (шард-ключ).

filter = {
    "category": "gear-surf-surfboards"
}

matched_documents = collection.find(filter)

for document in matched_documents:
    # Do something with each item

Изучите свои данные

Используйте расширение Visual Studio Code для Azure Cosmos DB для изучения данных MongoDB. Вы можете выполнять основные операции с базой данных, включая, но не ограничиваясь:

  • Выполнение запросов с помощью книги заметок или редактора запросов
  • Изменение, обновление, создание и удаление документов
  • Импорт массовых данных из других источников
  • Управление базами данных и коллекциями

Дополнительные сведения см. в руководстве по использованию расширения Visual Studio Code для изучения данных Azure Cosmos DB для MongoDB.

Очистите ресурсы

Когда вы больше не нуждаетесь в демонстрационном приложении или ресурсах, удалите соответствующее развертывание и все ресурсы.

azd down --force --purge