Таблицы Azure или SQL Azure? - PullRequest
       50

Таблицы Azure или SQL Azure?

23 голосов
/ 15 апреля 2010

Я нахожусь на стадии планирования веб-приложения, которое будет размещено в Azure с ASP.NET для веб-сайта и Silverlight на сайте для обеспечения расширенного пользовательского опыта. Должен ли я использовать таблицы Azure или SQL Azure для хранения данных своего приложения?

Ответы [ 11 ]

34 голосов
/ 15 апреля 2010

Хранилище таблиц Azure выглядит дешевле, чем SQL Azure. Он также более масштабируем, чем SQL Azure.

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

Основным ограничением таблиц Azure является отсутствие вторичных индексов. Об этом было объявлено на PDC '09, и в настоящее время оно объявлено как ожидаемое в ближайшее время, но никаких временных рамок не было. (См. http://windowsazure.uservoice.com/forums/34192-windows-azure-feature-voting/suggestions/396314-support-secondary-indexes?ref=title)

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

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

13 голосов
/ 16 апреля 2010

Несмотря на схожие имена, таблицы и хранилища таблиц в SQL Azure имеют очень мало общего.

Вот две ссылки, которые могут вам помочь:

По сути, первый вопрос, который должен задаться вопросом: Действительно ли моему приложению нужно масштабироваться? Если нет, то перейдите на SQL Azure.

8 голосов
/ 08 марта 2011

Для тех, кто пытается выбрать один из двух вариантов, обязательно учтите требования к отчетности в уравнении. SQL Azure Reporting и другие продукты отчетов поддерживают SQL Azure "из коробки". Если вам нужно создавать сложные или гибкие отчеты, вам, вероятно, следует избегать хранения таблиц.

4 голосов
/ 16 сентября 2013

Таблицы Azure дешевле, проще и лучше масштабируются, чем SQL Azure. SQL Azure - это управляемая среда SQL, мультитенантная по своей природе, поэтому вам следует проанализировать, соответствуют ли ваши требования к производительности SQL Azure. Премиум-версия SQL Azure была объявлена ​​и находится в предварительном просмотре на момент написания этой статьи (см. ЗДЕСЬ ).

Я думаю, что решающими факторами при выборе между таблицами SQL Azure и Azure являются следующие:

  • Вам нужно делать сложные объединения и использовать вторичные индексы? Если да, то SQL Azure - лучший вариант.
  • Вам нужны хранимые процедуры? Если да, SQL Azure.
  • Вам нужны возможности автоматического масштабирования? Таблицы Azure - лучший вариант.
  • Строки в таблице Azure не могут превышать 4 МБ. Если вам нужно хранить большие данные в строке, лучше хранить их в хранилище больших двоичных объектов и ссылаться на URI большого двоичного объекта в строке таблицы.
  • Вам нужно хранить огромные объемы полуструктурированных данных? Если да, то таблицы Azure предпочтительны.

Хотя таблицы Azure чрезвычайно выгодны с точки зрения простоты и стоимости, существуют некоторые ограничения, которые необходимо учитывать. Пожалуйста, смотрите ЗДЕСЬ для некоторых начальных указаний.

3 голосов
/ 21 августа 2012

Еще одно соображение - латентность. Раньше был сайт, на котором Microsoft работала с микробенчами по пропускной способности и задержке объектов разных размеров с хранилищем таблиц и SQL Azure. Поскольку этот сайт больше не доступен, я просто дам вам приблизительное приближение к тому, что я помню. Хранилище таблиц имеет гораздо более высокую пропускную способность, чем SQL Azure. SQL Azure обычно имеет меньшую задержку (до 1/5).

Уже упоминалось, что хранилище таблиц легко масштабируется. Однако SQL Azure может масштабироваться также с Федерациями . Обратите внимание, что федерации (фактически sharding ) значительно усложняют ваше приложение. Я также не уверен, насколько федерации влияют на производительность, но я предполагаю, что есть некоторые накладные расходы.

Если непрерывность бизнеса является приоритетом, учтите, что с хранилищем Azure по умолчанию вы получаете дешевую гео-репликацию . С помощью SQL Azure вы можете добиться чего-то подобного, но с большими усилиями с помощью SQL Data Sync . Обратите внимание, что синхронизация данных SQL также приводит к снижению производительности, поскольку для отслеживания изменений данных требуются триггеры во всех ваших таблицах.

2 голосов
/ 16 ноября 2013

Я предлагаю посмотреть на кэш Azure в сочетании с таблицей Azure. Одна только таблица имеет задержки в 200-300 мс, с периодическими всплесками, которые могут значительно замедлить время отклика / интерактивность пользовательского интерфейса. Для меня кеш + таблица - выигрышная комбинация.

2 голосов
/ 05 мая 2013

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

CoderDennis и другие указали на некоторые факты: таблицы Azure дешевле, а таблицы Azure могут быть намного больше, эффективнее и т. Д. Если вы на 100% уверены, что будете придерживаться Azure, используйте таблицы.

Однако это предполагает, что вы уже выбрали Azure. Используя таблицы Azure, вы привязываетесь к платформе Azure. Это означает написание кода, очень специфичного для таблиц Azure, который не просто переносится на Amazon, вам придется переписать эти области вашего кода. С другой стороны, программирование для базы данных SQL с помощью LINQ намного проще перенести на другой облачный сервис.

Это может не быть проблемой, если вы уже выбрали свою облачную платформу.

1 голос
/ 31 августа 2013

По вашему вопросу я хочу поговорить о том, как решить с помощью логики выбрать SQL Table и какие нужно использовать Azure Table.

Как мы знаем, SQL Table - это механизм реляционной базы данных. но если у вас большие данные в одной таблице, таблица SQL неприменима, потому что запрос SQL получает большие данные медленно.

В настоящее время вы можете выбрать Azure Table, запрос Azure Table выполняется так быстро, как SQL Table для больших данных, например, на нашем веб-сайте кто-то подписал много статей, мы делаем статью в качестве канала для пользователя, каждый пользователь копия заголовка и описания статьи, поэтому в таблице статей содержится много данных. Если мы используем таблицу SQL, выполнение каждого запроса может занять более 30 секунд. Но в Azure Table пользователи получают ленту статей PartitionKey, а RowKey работает очень быстро.

Из этого примера вы можете знать, как выбирать между таблицами SQL и Azure Table.

0 голосов
/ 03 июля 2019

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

0 голосов
/ 25 августа 2014

Я думаю, что вы должны сначала определить, каковы воронки использования вашего приложения.Будет ли ваша модель данных подвергаться частым изменениям или она будет стабильной?Вы должны уметь выполнять сверхбыстрые вставки, а чтение не так сложно?Вам нужен предварительный поиск в Google?Хранение BLOBS?

Это вопросы (и не только), которые вы должны задать и ответить себе, чтобы решить, будете ли вы с большей вероятностью использовать подход NoSql или SQL для хранения своих данных.

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

...