вторник, 17 июля 2012 г.

SQL Azure vs Amazon RDS SQL Server

Ниже приведен перевод статьи Is it time to move from SQL Azure to Amazon RDS SQL Server?

Мне известно, что Microsoft собирается выбросить слово Azure из названия технологии SQL Azure и переименовать ее в SQl Database, но в этой статье я буду использовать старое название.

В середине 2011 года мы выпустили новую систему для нашего клиента. Эта система требовала пару баз данных, web сервер и некоторый хостинг служб Windows. Нагрузка связанная с обработкой запросов была не очень существенная, так что мы легко смогли разместиться на небольшом выделенном сервере.

Наш клиент не имел собственной службы тех. поддержки, да и мы сами не хотели обслуживать их инфраструктуру. Бюджеты были жесткие, но некоторые простои могли допускаться при условии, что вмешательство человека не требовалось. Так как мы уже использовали Amazon SQS (Simple Queue Service), мы сразу же подумали об использовании Amazon EC2 с экземпляром SQL Express, виртуальную машину можно было бы перезагрузить с помощью AWS CloudFormation, если бы она зависла. Очень быстро стало понятно, что писать сценарии для того, чтобы вернуть БД в согласованное состояние будет задачей не простой и потребует немало времени, но сделать это надо было в самый сжатые сроки. Суммы за выделенные сервер доходили до нескольких тысяч долларов в год плюс плата за соединение, и подписать соглашение мы должны были на период от 1 до 3 лет. Все это заставило нас посмотреть в сторону Windows Azure и SQL Azure. SQL Azure предлагал нам вариант при котором поддержка была не нужна, по значительно более низкой цене, чем выделенный сервер. Кроме того SQL Azure не привязывает клиента к себе, то есть мы в любой момент могли отказаться от этой услуги. А так же данные копируются в реплику, то есть мы получили избыточную защищенность, которую не ожидали за те деньги, которые был готов платить клиент.

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

Соревнование, как правило, это хорошо, поэтому я был очень рад услышать, что Amazon расширила свою RDS (Relational Database Service) что бы включить SQL Server в дополнение к MySQL и Oracle. Мы уже использовали Amazon RDS для работы с MySQL, так что я очень хотел посмотреть, что RDS cможет предложить с SQL Server. Естественно, я хотел понять, поступаем ли мы правильно, все еще используя SQL Azure.

Не нужно много времени, чтобы понять, что Amazon RDS SQL Server и SQL Azur очень разные звери.

Особенности

Amazon RDS SQL Server предоставляет вам полноценный экземпляр SQL Server, и поддерживает все основные функции базы данных. Работая в SSMS будет затруднительно понять, что вы подключены не к обычной базе данных. У вас будет доступ ко всем DMV и функциям, и если вы действительно хотите, вы даже можете запустить SQL Profiler удаленно. Полный список возможностей здесь.

Если вы внимательно посмотрите, есть несколько фич, которые не поддерживаются. Одной из таких фич является шифрование. В SQL Azure, мы можем подключиться через SSMS с использованием зашифрованного соединения и работать с базой данных без опасений по поводу любопытных глаз. Мы также настроили работу web сайта через зашифрованное соединения. Рекомендуемое решение для подключения к базам данных в целях администрирования в мире AWS является использование хост-бастиона (машина, которая загружена/запущена только , если доступ требуется, и единственная машина, с которой административный доступ разрешен). Хотя это очень разумный способ идти реализации доступа, но я все же ценю дополнительный комфорт, зная, что весь трафик зашифрован.

В SQL Azure вы не работаете с полноценным экземпляром SQL Server. Вы не можете заглянуть внутрь для доступа к DMV, и даже к старым добрым хранимым процедурам, таким как sp_spaceused. Они не работают. Для достижения своих целей вы должны делать запросы к системным таблицам. READ_COMMITTED_SNAPSHOT и ALLOW_SNAPSHOT_ISOLATION включены по умолчанию и вы не можете изменить это. Вы так же должны создавать кластеризованные индексы для всех таблиц. Полный список ограничений здесь.

Вычислительные мощности и размер базы

В Amazon RDS SQL Server вы можете выбрать доступный объем нужного размера, от 20 ГБ до 1 ТБ. Это объем данных и размер журнала вместе взятых. Вы можете также выбрать объем оперативной памяти на сервере от 630МБ (Micro) и до до 68ГБ, с аналогичным выбором вычислительной мощностей.

В SQL Azure вы не получите возможность выбора аппаратных средств; вы получаете то что получаете. Ситуация с размером базы данных обстоит иначе. Вы платите только за используемые данные, начиная с 100МБ и выше, но максимальное значение ограничено 150ГБ. Плата за хранения лога не взимается, но оплата осуществляется за каждую базу в отдельности.

Бэкапы и доступность

В Amazon RDS SQL Server вы не можете использовать Multi-AZ Deployments, поэтому нельзя организовать встроенные репликации в режими реального времени. Лог транзакций копируется каждые 15 минут. Вы можете контролировать время бэкапа лога и обслуживания базы, а так же вы можете сделать снимок целой БД. Бэкап хранится до 31 дня, а снимки хранятся до тех пор пока вы их не удалите.

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

Администрирование

Из AWS консоли, вы сталкиваетесь с более чем 20 продуктами, которые вы можете использовать или не использовать. Что бы посмотреть состояние экземпляра вам нужно сделать всего нескольких щелчков мыши, но вы должны знать, куда нужно смотреть. Интерфейс отлично подходит для технарей, но наш клиент встал в ступор, когда мы пытались показать ему как с этим работать. Кроме того, вы можете создать оповещения рассылающиеся по электронной почте на основе очень много критериев, которые помогут вам в мониторинге базы данных без необходимости, что-то смотреть в консоли.

С другой стороны консоль управления платформы Windows Azure гораздо проще. На данный момент у вас есть выбор между Silverlight-интерфейсом и интерфейсом на HTML5. Воспринимать информацию гораздо проще. Наши клиенты легко могут увидеть, что происходит и перезагрузите веб сервер, если они видят проблему. Вы можете увидеть, сколько места вы использовали, и с помощью запросов вкладке Performance увидеть список последних запросов к базе данных (с основной статистикой) и возможностью отображать предполагаемый план запроса. Это полезно - особенно, когда это все отображается в браузере, но недостаточно для серьезного использования. В отличие от Amazon, вы не можете настроить оповещения для информирования вас о важных событиях.

Заключение

Сравним обе системы

Amazon RDS SQL Server

Преимущества

  • Полная поддержка баз данных.
  • Вы получите экземпляр, на котором можете иметь до 30 баз данных
  • Резервными копиями БД можно управлять, бэкапы хранятся до 31 дня, а снимки неограниченный срок.
  • Хороший встроенный мониторинг.
  • Размер базы до 1 ТБ.
  • Можно выбрать размер экземпляра в соответствии с нагрузкой.
Недостатки
  • Не поддерживается несколько зон развертывания.
  • Нет SSL соединений.
  • Минимальный размер диска 20ГБ.

SQL Azure

Преимущества

  • Маленькие и дешевые базы.
  • Простой интерфейс.
  • Множественные резервные копии базы как стандарт.
  • Зашифрованные соединения.
Недостатки
  • Нет возможности выбора железа.
  • Поддержка баз до 150GB
  • Ограниченный набор фич.
  • Ограниченный набор средств мониторинга.

В настоящий момент нам выгодней оставаться на SQL Azure, но возможность выбора железа и поддержка баз значительно большего размера делает Amazon RDS SQL Server очень интересным сервисом.

Комментариев нет:

Отправить комментарий