Как бы вы хранили контакты в таблицах Azure? - PullRequest
0 голосов
/ 09 июля 2011

Каждый пользователь моей системы может иметь контакты. Каждый контакт имеет такие данные, как имя, адрес, адрес электронной почты, телефон и т. Д.

Считаете ли вы хорошей идеей хранить эти контакты в таблицах Azure? Я беспокоюсь о следующем:

  • Как мне искать определенное поле (например, электронная почта или телефон)?
  • Как получить только контакты, принадлежащие конкретному пользователю?
  • Как отсортировать контакты по полю?

1 Ответ

1 голос
/ 09 июля 2011

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

Один из возможных вариантов для этого:

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

Как мне искать определенное поле (например, электронная почта или телефон)?

  • Затем вы можете попросить хранилище таблиц выполнить поиск в пределах раздела - тогда он выполнит сканирование в этом разделе - что не должно быть особенно большим или медленным для любого отдельного раздела.

Как получить только контакты, принадлежащие определенному пользователю?

  • Это простой запрос только по ключу раздела

Как отсортировать контакты по полю?

  • Все результаты из хранилища таблиц сортируются по (ключу раздела, ключу строки), поэтому для сортировки контактов для пользователя вам потребуется запросить все из них, а затем отсортировать их в своей веб-роли или рабочей роли.

Возможны и другие конструкции -

например. Вы можете хранить каждый контакт в нескольких строках в нескольких таблицах - это позволит вам иметь предварительно сформированные порядки сортировки в хранилище таблиц.

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


Заметьте ... хотя для этого можно использовать хранилище таблиц ... на самом деле, я почти всегда возвращаюсь в SQL Azure на данный момент - он гораздо более мощный и предсказуемый (IMO). Когда команда выполняет вторичную индексацию, у меня может возникнуть желание использовать ее для большей части моих данных.

...