2013-06-27 5 views
1

Я использую Azure Tables, и я пытаюсь выяснить, как я должен организовать свои данные.Отдельные таблицы против одного большого в хранилище таблиц Azure (NoSQL)

Каждый объект в таблице имеет PartitionKey и RowKey, и я понимаю, что разделы должны использоваться для организации подобных объектов для масштабируемости. В примере на сайте они использовали объекты фильма, в которых категория (действие, sci fi и т. Д.) - это PartitionKey, а заголовок (быстрый, яростный и т. Д.) - это RowKey.

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

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

Было бы преимуществом использование двух отдельных таблиц, а если нет, то какая точка таблиц?

EDIT:
PartitionKey | RowKey | prop0 | prop1 | ...
------------------------------------------- -----...
SciFi                     | StarWars | foo0: bar0 | foo1: bar1 | ...
Аренда                   | StarWars | foo0: bar0 | foo1: bar1 | ...

ответ

1

Прежде всего, понятие хранения таблиц состоит в том, что вы можете «сбрасывать» большие объемы данных, зная, что объекты поиска очень плохие, вы не сможете выпускать SQL-запросы, следовательно нет РСУБД и что это средство хранения большого количества данных. Действительно, partitionKey и rowKey являются единственными проиндексированными столбцами, которые вы получаете с хранилищем Azure, это означает, что поиск по keyKey или rowKey будет быстрее, чем поиск любым другим столбцом. Если вам нужно быстро получить данные, тогда хранилище памяти или хранилище таблиц - это не-go. Если вы просто хотите сохранить запись для целей аудита или целей истории, тогда да. Однако, если вы хотите использовать его в магазине видео, например, и вам нужно получить информацию о клиенте, то, как я уже говорил, это плохая практика. Вам лучше использовать РСУБД. Наконец, вы не можете выполнять JOIN или другие запросы RDBMS и т. Д. В хранилище таблиц, то есть между двумя таблицами.

+0

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

+0

Я бы сказал, что это плохая практика, имеющая 2 разных понятия, если вам нравится, на той же таблице, то есть на аренде фильмов и существующих фильмах. Использование ключа раздела и ключа Row для индексирования - это, безусловно, путь, но вы не хотите смешивать понятия. Таблицы по-прежнему представляют собой таблицы и все еще описывают набор данных, как в любой другой базе данных (sql, mysql и т. Д.). Что не является блочным хранилищем, которое больше напоминает пространство на жестком диске. – dqm

+0

Плюс, если вы решите в будущем добавить одну дополнительную колонку для цели в арендованном разделе, она будет унаследована секцией «сдавать в аренду» и наоборот. – dqm