Можно ли запустить SQL Express в веб-роли Azure? - PullRequest
3 голосов
/ 14 марта 2011

Я работаю над проектом, в котором используется реляционная база данных (SQL Server 2008).Локальное (локальное) приложение выполняет чтение и запись в базу данных.Я работаю над другим интерфейсом для Azure (веб-роль MVC2), который будет использовать те же данные, но только для чтения.Если бы я развертывал традиционное веб-приложение, я бы использовал SQL Express в качестве локальной базы данных и развертывал изменения с обновлениями приложения (данные изменяются очень медленно) или через какую-то систему синхронизации.

С Azure, изображение немного облачно (извините, мне пришлось).Я не могу найти какую-либо информацию, чтобы указать, будет ли SQL Express работать внутри веб-ролей, и если да, то как это сделать.Кто-нибудь знает, возможно ли использование SQL Express в веб-роли Azure?

Другие варианты, которые я мог бы сделать при необходимости: SQL CE или использовать SQL Azure.У обоих есть ряд недостатков, и они определенно не идеальны.

Спасибо, Эрик

Редактировать Я думаю, что мой сценарий может быть недостаточно ясным.

Эти данные не изменяются между развертываниями, и доступ к ним осуществляется только из веб-роли;это в основном статический кеш.Локальная часть - это своего рода красная сельдь, так как она не влияет на данные о веб-роли (не считая ее источником).По сути, я хочу иметь локальное хранилище данных / кеш, с которым я использую существующий код T-SQL / DAL.

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

В идеальном мире я бы упаковал MDF в cspkg (чтобы он развертывался вместе с приложением), а затем использовал его локальноизнутри роли.Если нет способа сделать это, то это нормально, и мне нужно выяснить плюсы и минусы других решений.Мы не живем в идеальном мире.:)

Ответы [ 5 ]

2 голосов
/ 14 марта 2011

Добавление к ответу Иеремии: SQL Azure должен предоставить вам практически все, что SQL Express делает сегодня, и вы можете использовать службу синхронизации для синхронизации локального SQL Server с SQL Azure.

Если вы установили SQL Express вроль виртуальной машины, вы бы потребляли около $ 90 в месяц только для этого экземпляра, плюс хранилище больших двоичных объектов (вам нужен облачный диск для долговечности).По определению, Роль ВМ (или любая роль) должна поддерживать горизонтальное масштабирование;если по какой-либо причине вам нужно масштабировать до 2 экземпляров, оба экземпляра будут нуждаться в собственной копии базы данных, поэтому вам потребуется создать снимок BLOB-объекта для каждого экземпляра.

Имейте в виду, однако, если вы решите установить SQL Express на виртуальную машину: если у вас 2 экземпляра, например, 20 ГБ на экземпляр хранилища больших двоичных объектов, вы приближаетесь к 200 долларам в месяц ивы поддерживаете исправления ОС своей виртуальной машины, конфигурацию и обновления SQL Express, процедуры восстановления после сбоев и т. д. В отличие от этого, SQL Azure на 20 ГБ, хотя и стоит те же 200 долларов, будет предлагать лучшую производительность и работать со службой синхронизации, полностью удаляя любыеЗадачи управления ОС или сервером базы данных от вас.

2 голосов
/ 14 марта 2011

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

Если вы хотите, вы можете найти всю установку SQL Server в хранилище BLOB-объектов Azure.

Однако, выполняя все это, вы сможете иметь только одну рабочую / веб-роль, которая может использовать эту базу данных. Помните: база данных SQL Server может быть одновременно подключена только к одному SQL Server. Если вы хотите уменьшить масштаб, вам придется создавать новые экземпляры SQL Server для каждой веб-роли / рабочей роли.

Помимо проблем с затратами, я не могу думать ни о чем из того, что есть в SQL Express, и которое должно быть ограничителем показа для 99,9% приложений.

1 голос
/ 14 марта 2011

Чтобы подробнее рассказать о том, что упомянул Дэвид, вы можете зарегистрироваться для SQL Azure Data Sync CTP2, который позволит синхронизировать данные с SQL Server на SQL Azure, здесь: http://www.microsoft.com/en-us/SQLAzure/datasync.aspx

Убедитесь, что используется CTP2, поскольку CTP1 не поддерживает SQL Server.

1 голос
/ 14 марта 2011

Чтобы добавить к уже существующим ответам и для всех, кто интересуется, стоит ли запускать SQL Express в облаке, он имеет смысл как область временного хранения.Рассмотрим этот архитектурный подход: скажем, вы раскручиваете узлы для выполнения заданий.Хранение миллиарда результатов вычислений может быть хорошей идеей в локальном SQL Express для каждого узла и предоставлять агрегированные ответы сразу после завершения задания на узле.Передача больше не горячих результатов на внешний SQL-сервер для будущих отчетов и т. Д. Может быть сделана после слов.SQL Azure может быть неоптимальным с точки зрения объема / задержки / стоимости для хранения миллиарда результатов, и ATS не всегда будет отвечать всем требованиям, особенно когда речь идет о реляционных данных, производительности или существующем коде.

0 голосов
/ 21 марта 2011

Если это локальный кэш только для чтения - SQL CE 4 или SQLite.

Оба имеют поставщиков Entity Framework.

Если вы пишете в него - SQL Azure

...