Существует ли встроенный метод для репликации коллекции в коллекцию «подписчик» в том же регионе? - PullRequest
1 голос
/ 06 апреля 2020

CosmosDB может выполнять гео-репликацию коллекций, а клиенты могут быть настроены на выполнение запросов (только для чтения) к этим областям «подписчиков».

Существует ли для CosmosDB встроенный способ предоставить «подписчиков» Коллекция в том же регионе?

Сценарий использования этого состоит в том, чтобы использовать «основную» коллекцию для быстрых интерактивных запросов и использовать «ведомую» коллекцию для более медленных и более тяжелых внутренних запросов, без возможности превышения лимитов и возникновения удушения, которое могло бы повлиять интерактивный случай.

Обычный ответ для «копирования» коллекций - использовать ленту изменений (возможно, с помощью функции Azure), но это «ручная» работа, и клиенту (мне) придется позаботьтесь об общих затратах разработчиков, таких как инициализация, телеметрия, мониторинг, оповещение, ротация клавиш и т. д. c.

Я хотел бы знать, есть ли «управляемый» способ сделать это, например, есть для гео-репликации.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

Встроенная функция георепликации работает только при репликации в разные регионы. Вы не можете копировать одну и ту же коллекцию (и) обратно в один и тот же регион.

Вам нужно будет настроить это самостоятельно. Как вы уже упоминали, вы можете использовать Change Feed для этого (хотя вы называли это «ручным» процессом, и я не вижу его таковым, поскольку он может быть полностью автоматизирован в коде). Вы также можете включить шаблон обмена сообщениями / событиями: подписаться на события обновления базы данных и иметь несколько потребителей, пишущих в разные коллекции баз данных, в соответствии с вашими запросами.

Кроме того: благодаря наличию независимой коллекции, в которой вы предоставляете данные, - код движения, вы можете выбрать другую модель данных для ваших более медленных и более тяжелых внутренних запросов (возможно, с другим ключом секционирования; возможно, с некоторыми полезными агрегациями; и т. д. c.).

Там действительно нет способа избежать добавленная настройка инфраструктуры.

1 голос
/ 08 апреля 2020

Репликация ограничена одним контейнером / коллекцией. Для большинства сценариев ios, подобных вашему, можно использовать альтернативный ключ раздела, чтобы оптимизировать чтение второй коллекции. Вы также должны просмотреть свои популярные запросы и рассмотреть возможность использования альтернативной базы данных, которая более оптимизирована для чтения.

Вы можете использовать этот новый инструмент: https://github.com/Azure-Samples/azure-cosmosdb-live-data-migrator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...