deepakdynamite Ответов: 2

Обработка всех строк в хранилище azure с помощью консольного приложения C#


постановка задачи:

1. прочитайте все записи из хранилища Azure.
2. Выполните цикл через каждую строку и создайте другую строку.
3. Вставить вновь созданный строки в той же таблице.

У меня есть около 50000 записей в таблице Azure. Поэтому мой вопрос заключается в том, как можно читать данные в пакетах для такой большой операции в c#, например... Прочитайте 100 записей обработайте их затем прочитайте еще 100 и обработайте их и так далее?

Что я уже пробовал:

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

2 Ответов

Рейтинг:
12

deepakdynamite

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(configuration.GetConnectionString("Storage"));

            CloudTableClient tableClient = cloudStorageAccount.CreateCloudTableClient();
            CloudTable myEntityTable = tableClient.GetTableReference(configuration.GetSection("myEntityTable").Value);

            var continuationToken = default(TableContinuationToken);
            var query = new TableQuery<MyEntity>();
            var batchNumber = 1;

            do
            {
                var myEntityTableBatchResult = await myEntityTable .ExecuteQuerySegmentedAsync(query, continuationToken).ConfigureAwait(false);
                continuationToken = myEntityTableBatchResult.ContinuationToken;

                if (continuationToken != null && myEntityTableBatchResult != null && myEntityTableBatchResult.Results.Count > 0)
                {
                    Console.WriteLine($"Processing Batch Number {batchNumber} for My Entity table.");
                    
                    foreach (var item in myEntityTableBatchResult.Results)
                    {
                        // DO you processing.
                    }
                    Console.WriteLine($"Processing for Batch Number {batchNumber} in MyEntity table completed.");
                    batchNumber++;
                }
            }
            while (continuationToken != null);


[no name]

Спасибо!

Рейтинг:
1

Graeme_Grant

А быстро как читать таблицу Azure - поиск в Google[^] появляется следующая очень полезная статья (с кодом):

* Работа с таблицами хранилища Azure с помощью C# - CodeProject[^]
* Приступая к работе с Azure хранилище таблиц, используя .Продажи | документы Майкрософт[^]
* Руководство По Проектированию Таблиц Хранилища Azure | Microsoft Docs[^]
* Как писать и читать из таблиц Windows Azure в веб – приложениях – Бруно Теркали – евангелист-разработчик- bterkaly@microsoft.com[^]
* и многое-многое другое! :)

ОБНОВЛЕНИЕ Для Операций "Дозирования" , Трой Хант: работа со 154 миллионами записей в хранилище таблиц Azure – история “Был ли я pwned?”[^] говорит о том, что TableBatchOperation вызов метода. Также в статье есть раздел под названием "импорт 22 500 строк в секунду в хранилище таблиц Azure". Это похоже на то, что вы ищете.


deepakdynamite

Спасибо за ваш ответ. Я знаком с Azure SDK. То, что я ищу, - это способ считывать данные пакетами из хранилища Azure, поскольку это не очень хорошая практика-читать 100 000 строк в памяти, а затем перебирать их ...