Как массово удалить (скажем, миллионы) документов, распределенных по миллионам логических разделов в Cosmos db sql api? - PullRequest
0 голосов
/ 03 марта 2020

MS Azure документация ничего не говорит об этом. Официальная массовая документация исполнителя говорит только об опциях вставки и обновления, а не об удалении. Существует предложенная java программа на стороне сервера сценариев для создания хранимой процедуры, которая звучит очень хорошо, но для этого необходимо ввести значение ключа раздела. Не имеет смысла, если наши документы распределены по миллионам логических разделов.

Это очень простая бизнес-потребность. При переносе огромного объема данных в коллекцию api cosmos sql, если мы вставим некоторые неправильные данные, кажется, что не будет возможности удалить другие, а затем восстановить их в предыдущее состояние. Я исследовал в течение нескольких часов, но не смог найти решение. Даже подняв случай с поддержкой MS, они обратились к некоторому. net коду, который, как я вижу, нужно увидеть, поскольку он не выглядит простым. Что делать, если кто-то не знает. net.

Неужели мы легко массово удаляем документы, разбросанные по нескольким логическим разделам в MS Cosmos SQL API? Чувствует себя отвратительно ..

Я надеюсь, что вы можете предоставить некоторые точные детали. Как этого добиться с помощью простого простого примера кода и шагов. Надеюсь, что эксперты MS и Cosmos db тоже поделятся своими взглядами.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Даже подняв случай с поддержкой MS, они обратились к некоторому. net коду, который я считаю нужным увидеть, поскольку он не выглядит простым.

Очевидно, вы уже Приложил некоторые усилия, чтобы найти какие-либо решения, кроме ниже 2 Scenar ios:

1.Bulk delete Хранимая процедура: https://github.com/Azure/azure-cosmosdb-js-server/blob/master/samples/stored-procedures/bulkDelete.js

2.Bulk delete executor:

. NET: https://github.com/Azure/azure-cosmosdb-bulkexecutor-dotnet-getting-started/blob/master/BulkDeleteSample/BulkDeleteSample/Program.cs

Java: https://github.com/Azure/azure-cosmosdb-bulkexecutor-java-getting-started/blob/master/samples/bulkexecutor-sample/src/main/java/com/microsoft/azure/cosmosdb/bulkexecutor/bulkdelete/BulkDeleter.java

Пока только выше официального решения поддерживаются. Другой обходной путь - TTL для cosmos db. Я полагаю, что у вас есть собственный лог c, чтобы определить, какая часть данных является правильной, а какая часть данных неправильной, и должны быть удалены. Вы можете установить TTL для этих данных, чтобы они могли быть уничтожены, как только истек срок действия данных.

0 голосов
/ 04 марта 2020

Кто-нибудь пробовал это .. похоже на хорошее решение в java https://github.com/Azure/azure-cosmosdb-bulkexecutor-java-getting-started#bulk -delete-api

...