2010-09-28 5 views
5

Zrobiłem aplikację e-commerce działa na C#. Każde wystąpienie tej aplikacji teraz ma swój własny:Jak skonwertować aplikację internetową z pojedynczymi bazami danych do chmury za pomocą pojedynczego DB?

  1. IIS 7 app basen
  2. IIS 7 strona
  3. SQL Server 2008 bazy danych

Mój partner powiedział mi, że musimy zrzucić ten podejść i przenieść się do chmury. Wygląda na to, że SQL Azure pobiera opłaty za bazę danych. Tak więc podejście to będzie dla nas bardzo kosztowne. Czy istnieje sposób na wykorzystanie pojedynczej gigantycznej bazy danych bez konieczności ponownego zapisywania całej warstwy dostępu do danych? * Czy istnieje tani sposób na setki małych baz danych SQL Azure? *

uwaga: każda baza danych jest tylko około 20 MB

+0

Potrzebujesz * zrzucić to podejście i przenieść się do chmury? Czemu? – FrustratedWithFormsDesigner

+0

stary, widziałeś ning.com ???- Za 2 lata to jest to, czego wszyscy się spodziewać. Stwórz cały _________ (wypełnij puste miejsce tym, co robisz) ... w 30 sekund. – aron

+0

koleś, który nie * wyraźnie * wyjaśnia * twoje * potrzeby dla systemu opartego na chmurze. – FrustratedWithFormsDesigner

Odpowiedz

2

Tak, SQL Azure obciąża cię każdej bazy danych, ale co tak naprawdę płaci za to wielkość bazy danych. Na przykład 1 GB DB kosztuje 9,99 USD i miesiąc, DB 10 GB kosztuje 99,99 USD miesięcznie. Bazy danych w SQL Azure mają obecnie maksymalny rozmiar 50 GB.

Na podstawie tego i tego, co powiedziałeś o swojej aplikacji (prawdopodobnie setkach baz danych) i założeniu, że każda baza danych będzie zawierała wystarczającą ilość danych, aby opłacić 1 GB wartości DB, będę nadal używać jeden DB dla każdej instancji.

Jeśli dane dla każdej instancji są rzeczywiście niewielkie i nawet gdybyś miał setki instancji, nie osiągnąłbyś limitu 50 GB, zaoszczędziłbyś pieniądze (ale nie czas), dzieląc dane i przechowując je w jednym Baza danych.

Jeśli Twoim podstawowym problemem jest koszt i myślisz o przepisaniu, rozważałbym użycie Azure Table Storage (AZT), gdzie to samo 1 GB danych będzie kosztować 0,15 $ miesięcznie na przechowywanie (ale musisz zrezygnować z małych rzeczy, takich jak klucze obce i zapytania z więcej niż 1 tabelą w nich)

+0

Z punktu widzenia kosztów najlepszy byłby [Azure Table Storage (AZT)]. Jednak spowodowałoby to poważny ponowny zapis aplikacji. – aron

+0

Istnieje również ta próbka z MS, która dotyczy systemów wielodostępnych. http://www.fabrikamshipping.com/ – knightpfhor

1

Przy 20 MB na bazę danych, pokryjesz około 50 takich baz danych w jednej bazie danych Azure 1 GB.

Przy nowych rozmiarach bazy danych następny rozmiar wynosi 5 GB, a rozliczenia są amortyzowane codziennie, w oparciu o maksymalne wykorzystanie pamięci dla danego dnia. Tak więc, gdy masz mniej niż 1 GB, naliczana jest stawka 1 GB (9,99 USD miesięcznie/dni w miesiącu). Po przekroczeniu 1 GB przechodzisz do poziomu 5GB (49,95 $/dni w miesiącu). Byłoby to znacznie tańsze niż posiadanie 50 baz danych o pojemności 1 GB, które działałyby w przybliżeniu. 500 USD miesięcznie.

Aby połączyć bazy danych, potrzebujesz identyfikatora klienta lub identyfikatora wystąpienia, który musisz dodać do swoich tabel, aby zapewnić partycjonowanie dla najemców.

Dostrzegłem kolejną sugestię rycerza o przejściu do Przechowywania tabeli w celu obniżenia kosztów. Podczas gdy przechowywanie tabel jest tańsze niż w magazynie SQL Azure, prawdopodobnie byłaby to poważna zmiana aplikacji, ponieważ przechowywanie tabel nie jest relacyjne i nie ma procedur przechowywanych ani żadnej innej pomocy normalnie uzyskiwanej z programu SQL Server. Dodanie klucza partycji/klienta jest znacznie mniej inwazyjne niż hurtowe przepisywanie warstwy pamięci masowej.

+0

Brakującego w tej (doskonałej) odpowiedzi na to pytanie dotyczy wielu dzierżawców; to ułatwia OP do bingoogle w celu uzyskania dodatkowych informacji. Baza danych dla wielu najemców miałaby sens w tym scenariuszu, ale generalnie aplikacja dla wielu dzierżawców ma jeszcze więcej sensu w kontekście scenariuszy chmury. – tijmenvdk

+0

Moja aplikacja umożliwia użytkownikom przesyłanie kodu C#. Dlatego ważne jest, aby każda witryna miała swój własny izolowany db. W ten sposób, jeśli załadujesz jakiś złośliwy kod SQL, będzie on działał tylko na bazie danych. Czy jedna lazurowa db pozwoliłaby mi to zrobić? Czy mogę utworzyć pod-bazy danych? lub schematy, w których łańcuch połączenia użytkownika końcowego ma ograniczony dostęp? – aron

+0

Czy któryś z kodów przesyłanych przez użytkowników jest uruchamiany w bazie danych? Czy użytkownicy mogą wprowadzać zmiany w bazie danych? – knightpfhor

Powiązane problemy