Azure - запрос 200 миллионов объектов - PullRequest
2 голосов
/ 30 апреля 2011

Мне нужно запросить хранилище из 200 миллионов объектов в Windows Azure.В идеале я хотел бы использовать Table Service, а не SQL Azure, для этой задачи.

Вариант использования таков: POST, содержащий новую сущность, будет поступать из API, обращенного к веб-интерфейсу.Мы должны запросить около 200 миллионов сущностей, чтобы определить, можем ли мы принять новую сущность.

С лимитом сущности 1000: это применимо к этому типу запроса, то есть я должен запросить 1000 за рази выполнить мои сравнения / бизнес-правила, или я могу запросить все 200 миллионов объектов за один раз?Я думаю, что я бы ударил тайм-аут в последнем случае.

Идеи?

Ответы [ 2 ]

7 голосов
/ 30 апреля 2011

Расширение комментария Шираз о хранении таблиц: таблицы организованы в разделы, а затем ваши сущности индексируются по ключу строки. Таким образом, каждая строка может быть найдена очень быстро с помощью комбинации ключа раздела + ключа строки. Хитрость заключается в том, чтобы выбрать наиболее подходящий ключ раздела и ключ строки для вашего конкретного приложения.

В приведенном выше примере, где вы осуществляете поиск по номеру телефона, вы можете сделать TelephoneNumber ключом раздела. Вы можете очень легко найти все строки, связанные с этим номером телефона (хотя, не зная вашего приложения, я не знаю, сколько строк вы ожидаете). Для дальнейшего уточнения вам нужно определить ключ строки, в который вы можете индексировать, в ключе раздела. Это даст вам очень быстрый ответ, чтобы вы знали, существует ли запись.

Хранилище таблиц (на самом деле хранилище Azure в целом - таблицы, большие двоичные объекты, очереди) имеет хорошо известный SLA. Вы можете выполнить до 500 транзакций в секунду на данном разделе. В приведенном выше примере запрос строк для данного телефонного номера будет соответствовать одной транзакции (если вы не превысите 1000 возвращенных строк - для просмотра всех строк вам потребуются дополнительные выборки); добавление ключа строки для сужения поиска действительно приведет к одной транзакции). Так бы вставил новый ряд. Вы также можете группировать несколько вставок строк в пределах одного раздела и сохранять их в одной транзакции.

Для хорошего обзора хранилища таблиц Azure, с некоторыми хорошими лабораторными работами, ознакомьтесь с Platform Training Kit .

Подробнее о транзакциях в таблицах см. В этом msdn сообщении в блоге .

7 голосов
/ 30 апреля 2011

Предел 1000 - это количество строк, возвращаемых запросом, а не количество запрашиваемых строк.

Выгрузка всех 200 миллионов строк на веб-сервер для проверки их не будет работать.

Хитрость заключается в том, чтобы хранить строки с ключом, который можно использовать для проверки, должна ли запись быть принята.

...