2014-01-08 3 views
3

Я понимаю, что в Azure таблицы, каждый объект имеет составной ключ, состоящие из ключевыхразделов и строки ключа и раздела ключа следует использовать в качестве категории, объекты сгруппированы по с ключ строки является уникальным идентификатором для определенного объекта в категории.Таблицы Azure: как использовать ключ раздела и ключ строки, если объекты имеют только один ключ?

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

, например

part : { id: '00001', 
     name: 'wotsit', 
     weight: '50kg' } 

семантически, он чувствует себя наиболее правильно хранить id как ряд ключевых и использовать тот же, вероятно, пустой, раздел ключ для всех объектов (то есть они все в том же, категория по умолчанию). Однако меня гораздо больше интересует получение максимальной производительности поиска, чем семантика таблицы. Я могу легко абстрагировать это в коде.

Так что мой вопрос: Как использовать ключ раздела/строку ключа, если сущности имеют только один простой ключ, чтобы получить максимальную производительность поиска?

Я думаю, что хранение id как раздела ключа, и используя пустую строки ключом для каждого объекта, было бы лучше всего, как перегородки ключа ищутся первым в запросах?

ответ

2

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

Итак, вы можете произвольно разделить один ключ на 2 вспомогательных ключа на основе того, как они будут масштабироваться лучше всего, определяемые характером данных.

В вашем примере вы можете разделить идентификатор на раздел Key = «00» и Row Key = «001». Это может показаться нецелесообразным в вашем диапазоне клавиш, но для более длинных клавиш может иметь смысл.

+0

спасибо за ввод - пример немного мусор, но давайте предположим, что ключ действительно является атомарным - случайным образом сгенерированным 5-значным числом, например, - и не может быть значимо разбит. Есть ли какое-либо внутреннее преимущество использования ключа раздела и строки, просто придумывая произвольный раскол? Возможно, я недостаточно разбираюсь в части масштабируемости – davnicwil

+0

Мой ответ был скорее более общим, чем конкретным для вашего вопроса. Для небольшого диапазона данных это не имеет значения в любом случае. Для большого набора данных вы не хотите, чтобы все строки находились в одном разделе, так как раздел ограничивается одним физическим «узлом» и может быть максимальным в пространстве для хранения. – hocho

+0

Несомненно, поэтому перегородки буквально означают, что данные таблицы могут быть разделены между узлами? Я думаю, что я продолжу использовать ключ раздела, похоже, что есть меньше недостатков. Честно говоря, как вы говорите, вполне вероятно, что в этой таблице не будет достаточного количества данных, поскольку это имеет значение в любом случае, но меня интересовало, было ли какое-то очевидное преимущество в производительности одного над другим. – davnicwil

Смежные вопросы