Лазерное хранилище таблиц - вопрос о наилучшем методе проектирования объектов

Im пишут приложение "доказательство концепции", чтобы исследовать возможность перемещения заказной системы электронной коммерции ASP.NET на Windows Azure во время необходимой перезаписи всего приложения.

Мне кажется, что использование Azure Table Storage в качестве альтернативы SQL Azure, поскольку сохраняемые объекты, скорее всего, изменят свою схему (свойства) с течением времени по мере созревания приложения, и мне не придется делать бесконечные изменения схемы базы данных, Кроме того, мы можем построить редифференциальную целостность в прикладном коде - так что дело в рассмотрении Azure Table Storage является сильным.

Единственная потенциальная проблема, которую я могу видеть в настоящее время, заключается в том, что мы делаем небольшое количество простых отчетов, т.е. стоимость продаж между двумя датами, количеством товаров, проданных для определенного продукта и т.д. Я знаю, что Table Storage не поддерживает функции агрегатного типа, и я считаю, что мы можем достичь того, чего хотим, с умным использованием разделов, несколькими типами сущностей для хранения подмножеств одних и тех же данных и, возможно, предварительной агрегации, но Im не 100% уверены, что пойдите об этом.

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

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

FYI - сайт электронной коммерции насчитывает около 25 000 клиентов и занимает около 100 000 заказов в год.

Ответ 2

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

  • Отсутствие отчетности, включая совокупные функции, которые вы уже определили
  • Ограниченная доступность поддержки транзакций - с 100 000 заказов в год. Думаю, вы не получите эту поддержку.
  • Некоторые проблемы с затратами - 1 доллар за миллион операций - это лишь небольшая стоимость, но вам может понадобиться учитывать это, если вы получаете много просмотров страниц.

Честно говоря, я думаю, что гибридный подход - возможно, EF или NH для SQL Azure для критических данных, с большими объектами, хранящимися в Table/Blob?

Достаточно моего мнения! Для "по глубине":

Ответ 3

Если вы начали смотреть на хранилище Azure, например, на таблицу, это не повредило бы взглядам на другие предложения NOSQL на рынке (особенно вокруг баз данных документов). Это даст вам представление о пространстве NOSQL и о том, как разрабатывается решение для таких хранилищ. Вы также можете подумать о гибридном подходе решения SQL DB + NOSQL. Части системы могут хорошо подходить к модели хранения таблиц Azure. Решения NOSQL, такие как таблица Azure, имеют свои собственные проблемы, такие как

  • Изменения схемы для данных. здесь и здесь
  • Поддержка транзакций
  • Ограничения ACID. Проверьте here

Ответ 4

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

Теперь лазурные таблицы доступны через API-интерфейсы для отдыха и через лазурный SDK. В зависимости от того, какие отчеты вам нужны, вы можете извлечь необходимую информацию с минимальными усилиями. Если ваши требования к отчетности очень сложны, возможно, лучше использовать SQL-лазурь вместе с службами SQL Azure SQL Azure?