Как преобразовать веб-приложение с отдельными БД в облако с одной БД? - PullRequest
5 голосов
/ 28 сентября 2010

Я сделал приложение для электронной коммерции, работающее на C #.Каждый экземпляр этого приложения имеет свой собственный:

  1. Пул приложений IIS 7
  2. Веб-сайт IIS 7
  3. База данных SQL Server 2008

Мой партнер сказал мне, что мы должны отказаться от этого подхода и перейти в облако.Похоже, SQL Azure взимает плату за базу данных.Так что нам будет очень дорого идти на такой подход. Есть ли способ, которым мы можем использовать одну гигантскую базу данных без необходимости переписывать весь слой доступа к данным? * Или есть дешевый способ иметь сотни крошечных баз данных SQL Azure? *

примечание: каждая база данных только около 20 МБ

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

Да, SQL Azure взимает с вас плату за базу данных, но на самом деле вы платите за размер базы данных. Например, 1 ГБ БД обойдется вам в 9,99 долл. США в месяц, а БД 10 ГБ обойдется вам в 99,99 долл. США в месяц. Базы данных в SQL Azure также в настоящее время имеют максимальный размер 50 ГБ.

Исходя из этого и того, что вы сказали о своем приложении (возможно, о сотнях БД), и исходя из того, что каждая база данных будет содержать достаточно данных, чтобы платить за 1 ГБ БД, я бы продолжил использовать одну БД для каждого экземпляра.

Если данные для каждого экземпляра на самом деле довольно малы, и даже если у вас есть сотни экземпляров, вы не достигнете предела в 50 ГБ, тогда вы сэкономите деньги (но не время), разделив свои данные и сохранив их в одной базе данных. .

Если стоимость является вашей основной задачей, и вы все равно думаете о переписывании, я хотел бы рассмотреть возможность использования хранилища таблиц Azure (AZT), когда хранение одного и того же 1 ГБ данных будет стоить вам 0,15 долл. В месяц (но вы должны дать на мелочи, такие как внешние ключи и запросы с более чем 1 таблицей в них)

1 голос
/ 29 сентября 2010

При 20 МБ на базу данных вы бы охватили около 50 таких баз данных в одной базе данных Azure 1 ГБ.

С новыми размерами базы данных ваш следующий размер увеличится до 5 ГБ, и ваш счет будет амортизироваться ежедневно на основе максимального объема памяти, используемого в данный день. Таким образом, для случаев, когда у вас меньше 1 ГБ, вы выставляете счет по ставке 1 ГБ ($ 9,99 в месяц / день в месяце). Когда вы превышаете 1 ГБ, вы переходите на уровень 5 ГБ (49,95 долларов США в день в месяц). Это будет значительно дешевле, чем 50 баз данных по 1 ГБ, которые будут работать ок. 500 долларов в месяц.

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

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

...