как получить следующие 1000 записей самым быстрым способом - PullRequest
0 голосов
/ 23 октября 2011

Я использую хранилище таблиц Azure. Допустим, в моей таблице есть раздел с 10 000 записей, и я хотел бы получить записи с номерами от 1000 до 1999 года. А в следующий раз я хотел бы получить записи с номерами от 4000 до 4999 и т. Д. Какой самый быстрый способ сделать это?

Все, что я могу найти до сих пор, это два варианта, которые мне не очень нравятся: 1. Запустите запрос, который возвращает все 10000 записей, и отфильтруйте, что я хочу, когда я получу все 10000 записей. 2. Запустите запрос, который возвращает 1000 записей за раз, и используйте маркер продолжения, чтобы получить следующие 1000 записей.

Можно ли получить токен продолжения, не загружая все соответствующие записи? Было бы здорово, если бы я мог получить токен продолжения 1, затем получить токен продолжения 2, а с помощью CT2 получить записи с 2000 по 2999.

1 Ответ

0 голосов
/ 21 января 2012

Теоретически вы сможете использовать токены продолжения, не загружая фактические данные для первых 1000 записей, закрыв соединение, которое вы установили после первого запроса. И я имею в виду закрытие его на уровне TCP. И прежде чем читать все данные. Затем откройте новое соединение и используйте там токен продолжения. Два WebRequest не будут делать этого, так как реализация HTTP, вероятно, будет использовать keep alive, что означает, что все ваши данные будут читаться в фоновом режиме, даже если вы не читаете их в своем коде. На самом деле вы можете настроить свои HTTP-запросы так, чтобы они не поддерживали активность.

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

В заключение я хотел бы спросить, почему у вас возникла эта проблема? А какой у вас шаблон доступа . Если вставки распространены, а получение этих записей - редко, я бы не стал делать это более эффективным. если это похоже на проблему с подкачкой, я, вероятно, получу все данные по первому запросу и кеширую их (в облаке). если вставки редки, но вам нужно часто выполнять этот запрос, я бы посоветовал сделать так, чтобы вставка данных имела один раздел на каждые 1000 сущностей и при необходимости перебалансировала (из-за сортировки) при вставке сущностей.

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