2010-04-15 4 views
23

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

ответ

34

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

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

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

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

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

+0

Будем надеяться, что они сообщают об этом на Build 2014. –

+0

Как указано в моем ответе, это было объявлено в PDC (как они называли Build) в 2009 году! Несколько лет назад я перестал дышать. Объявление на Build 2014 было бы смешно. Им просто нужно отправить эту функцию. Лазурные таблицы могли быть соперниками. – CoderDennis

13

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

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

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

8

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

3

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

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

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

2

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

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

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

Возможно, это не проблема, если вы уже определились с облачной платформой.

1

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

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

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

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

+0

Похоже, вы должны добавить некоторые индексы в свои таблицы SQL. – CoderDennis

4

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

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

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

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

2

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

0

Интересно, сможем ли мы в конечном итоге с некоторыми «независимыми от вендора» облачными библиотеками api?

0

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

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

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

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