Ответ 1
Ваш основной драйвер для рассмотрения таблиц Azure значительно улучшает производительность чтения, а в вашем сценарии с использованием SQL Azure "намного медленнее" в соответствии с вашим последним пунктом в разделе "Денормализованное представление, хранящееся в SQL Azure". Я лично считаю это очень неожиданным по нескольким причинам и прошу подробный анализ того, как это требование было сделано. Моя позиция по умолчанию будет заключаться в том, что в большинстве случаев SQL Azure будет намного быстрее.
Вот некоторые причины моего скептицизма в претензии:
- SQL Azure использует собственный/эффективный протокол TDS для возврата данных; Таблицы Azure используют формат JSON, который является более подробным.
- Соединения/фильтры в SQL Azure будут очень быстрыми, если вы используете первичные ключи или имеете индексы в SQL Azure; Таблицы Azure не имеют индексов, и соединения должны выполняться на стороне клиента.
- Ограничения в количестве записей, возвращаемых таблицами Azure (по 1000 записей за раз), означают, что вам нужно реализовать несколько обращений к двум записям
Несмотря на то, что вы можете подделывать индексы в таблицах Azure, создавая дополнительные таблицы, которые содержат индексированный индекс, вы несете ответственность за сохранение этого индекса, что замедлит ваши операции и, возможно, создаст сиротские сценарии, если вы не будете осторожны.
И последнее, но не менее важное: использование таблиц Azure обычно имеет смысл, когда вы пытаетесь сократить свои расходы на хранение (это дешевле, чем SQL Azure), и когда вам нужно больше хранилища, чем может предложить SQL Azure (хотя теперь вы можете использовать Federations для ограничения максимального ограничения на максимальную память для одной базы данных). Например, если вам нужно сохранить 1 миллиард записей клиентов, использование Azure Table может иметь смысл. Но использование Azure Tables для увеличения скорости само по себе довольно подозрительно.
Если бы я был на вашем месте, я бы поставил под сомнение эту претензию очень сильно и убедился, что у вас есть навыки разработки SQL-навыков для персонала, которые могут продемонстрировать, что вы достигли узких мест производительности, присущих SQL Server/SQL Azure, прежде чем полностью изменить архитектуру.
Кроме того, я бы определил, каковы ваши цели эффективности. Вы смотрите на 100x быстрее время доступа? Вместо этого вы рассматривали кеширование? Правильно ли вы используете индексирование в своей базе данных?
Мои 2 цента...:)