2017-02-22 26 views

ответ

3

Замечания относительно индексации вашей таблицы с использованием Azure Search превосходны, если вы не возражаете платить здоровенную ежемесячную плату.

Чтобы ответить на ваш вопрос, вы можете выполнить поиск с использованием API хранения Azure, но вы должны быть очень намерены о том, какие поля вы хотите искать при структурировании ваших таблиц хранения Azure.

Единственными «индексами», с которыми вы должны работать, являются ключи разделов и строк. Объекты с одним и тем же ключом разделяются и могут эффективно выполняться, если разделы невелики. Так как Azure Tables не применяют схему, вы можете хранить одни и те же данные в разных разделах, чтобы упростить поиск.

Предположим, вы имели адрес Johnny Appleseed 839 Sherman Oaks Drive Ноксвилл, TN 37497. Вы можете дублировать эти данные в одной таблице с ключами разделов:

  • citystate-knoxville_tn_37497
  • имя-appleseed_johnny
  • уличные sherman_oaks

Когда пользователь пытается найти, выбрать раздел на основе критериев, введенных пользователем, то Azure будет PERFO rm полное сканирование раздела, чтобы найти все соответствующие записи. Вам также придется иметь дело с продолжением токенов.

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

+1

Это хороший ответ о денормализации данных и моделей данных, основанных на различных потребностях запросов. К сожалению, еще одна вещь, с которой вам нужно иметь дело, - это согласованность (только если вам это интересно :) Azure не предоставляет поддержку полных операций с атомарными партиями на разных ключах разделов. Посмотрите здесь: https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#eventually-consistent-transactions-pattern –

+0

Dogu, Вы абсолютно правы. Спасибо, что добавил. –

1

Таблица хранения Azure имеет только два индексированных свойства: PartitionKey & RowKey. Запрос на неиндексированные свойства вызовет сканирование всей таблицы. Если вам нужно хранить несколько тысяч записей, таблица хранения Azure является хорошим вариантом из-за низкой цены. Однако, если вы собираетесь хранить гораздо больше записей, я бы предложил вам выбрать SQL Azure, поскольку он поддерживает расширенный индексированный запрос.