2011-09-15 9 views
2

多くの町や村で小学校を運営するNGO(Non Govt Org)用のWebアプリケーションの設計と開発を担当しました。申請書には、すべての学校、学生、ボランティア、すべての学校の教師の記録が保管されます。現在、NGOの傘には約30の学校がありますが、彼らは非常に野心的な計画を非常に急速に増やす計画を持っています。 Windows Azureにアプリケーションをホストします。SQL Azureをデータベースとして使用します。今私は最小限の支出(NGOは慈善団体と寄付によって完全に資金が供給されているため)でデータベースを設計するという難しい作業に直面しています。 SQL Azureのデータベースは、5,10,20〜50 GBのような特定のサイズで提供されていることが分かっているので、各データベースの最大サイズに制限があります。私は以下のアプローチで出てきました:SQL Azureのスケーラブルデータベースの設計に必要なヘルプ

1)学校ごとに、5または10 GBのサイズのデータ​​ベースを作成します。各データベースには、「学生」、「科目」、「出席」などの表があります。このアプローチの問題は、多くのデータベースを作成する必要があることです。すべての学校に1つ。これは大幅にコストを吹き飛ばします。また、当初は10 GBの大部分が不足していましたが、将来は10 GBが学校のデータを保存するために少なく見えることがあります。

2) 'school'、 'student'、 'attendance'などのテーブルを持つ1つのデータベースを保存します。これは最初はコストを低く抑えますが、データベースが満杯になり、 NGOによって多くの学校が開設されているため、50GBのまた、「学生」と特に「出席者」の1つのテーブルは膨大な数のレコードを持ち、クエリを遅くします。将来別のデータベースを追加しても、複数のデータベースにまたがってテーブルを分割するのはどれほど簡単でしょうか。

制限を念頭に置いて、今後は進めません。 あなたからのアプローチや提案は、私たちにとって非常に役立ちます。 ありがとうございます。

編集:多くの人々に感謝私の質問に答えた。私はポイントを得た:50 GBは巨大なスペースであり、すぐにいつでも満たされないだろう。しかし、それは私に質問をもたらします:学校の数が200,300、または1000に成長する状況を考えてみましょう!!次に、私のデータベース設計はどのようにすべきでしょうか?私は50GBはそのような状況では大きくないと思います。

答えて

1

私は学校のシステムを作る会社のために働いていました。ほとんどの場合50GBが大きいと見なされますが、それよりはるかに大きいデータベースがいくつかあります。履歴の記録は通常、ここで問題になります。特に、リードのインポートなど、時間の経過とともに機能を追加する場合は特に重要です。

リニアシャードとスケールアップアーキテクチャの2つのシナリオについて説明しました。線形シャードは学校ごとにデータベースを実装します。スケールアップすると、それらはすべて同じデータベースに格納されます。 SQL Azureで考慮すべき追加オプションがあります。 http://geekswithblogs.net/hroggero/archive/2010/12/23/multitenant-design-for-sql-azure-white-paper-available.aspx

また、SQL Azureは今後のData Federationという機能を発表しました。これはあなたの可能性が最も高いです。ここでは、関連するかもしれない2件のブログ記事です:

http://geekswithblogs.net/hroggero/archive/2011/07/23/preparing-for-data-federation-in-sql-azure.aspx

http://geekswithblogs.net/hroggero/archive/2011/09/07/sharding-library-for-sql-azure-data-federation.aspx

が最後のリンクは、私はを利用して、開発者を支援するために構築していますことを、エンツォ・シャードと呼ばれる、オープンソースのライブラリーについて説明しますSQL Azureデータフェデレーションの将来の機能データフェデレーションをサポートするバージョンはベータ版であり、フェデレーションメンバー(データベースなど)全体で並列クエリを実行できます。

最後に、より詳細にこの機能について説明します(Microsoftの)ジハンによって投稿逃してはいけない:要約するとhttp://blogs.msdn.com/b/cbiyikoglu/

を、SQL Azureのスケーラビリティの分野は進化しています。しかし、多くの機能が重要なデータの成長とパフォーマンスの機会を提供するようになります。

1

50ギガバイトは非常に多くのデータです。学校の人員と出席はかなり小さい問題です。適切に設計されたデータベースは、何十年にもわたって50ギガバイトに近づきそうにない。

1

何らかの標準化されたテストデータを追跡していても、60学校でもそれほど多くのデータを生成すべきではありません。クォーターシステムで6歳から12歳までの中学校(米国を参考にしています)がある場合、学生1人あたり平均6つのクラスと1000人の学生がいる場合、1クラスあたり24,000のクラスレコードしかありません年。 30の学校がすべて中等学校になるわけではありません。 50GBは十分なはずです。私は、米国最大の学区の1つである登録、テスト、学生、教師の情報を含むデータベースで働いていました。 7年以上経ってもデータベースはほとんど30GBに達していません。

0

私はAzure Table Storageを見て、成長するサイズを気にせずにコストを抑えることをお勧めします。当然のことながら、本質的に「非リレーショナル」であるテーブルストレージのアプリケーションを設計することが課題です。

0

あなたはちょうど名前といくつかの他の文字列/テキストで50GBを打つことは決してありません。同じデータベース内のすべての学校でも、5GBでうまくいくでしょう。私は数百万行もの複雑なデータを管理していますが、問題がなければ50GBを打つことはありません:)

+0

これは答えよりもコメントです – Horaciux

1

Azure SQL DBの新しいElastic Scale機能をチェックしてください。スケールアップする代わりに。

関連する問題