0

C#、エンティティ フレームワーク 4、mssql を使用して Web プロジェクトに取り組んでいます。データが大きくなる一方で (それほど大きくはありませんが、単一のサーバーでは困難です)、スループットとパフォーマンスを向上させるために、データ アクセス レイヤーで何かを変更することにしました。

データベースを nosql に変更するとリファクタリングにコストがかかるため、これまで使用したことのないデータベース レプリケーションを使用する予定です。

  • 「読み取り」または「書き込み」操作に従ってプログラマーによって明示的に使用される複数の「接続文字列」を使用する必要がありますか?
  • スレーブを読み取ると「ダーティ」読み取りが発生しますか?
  • 最小限のリファクタリング コストでこの問題に対処するための他のベスト プラクティスはありますか?

mssql サーバーに限定されません。

ps: テーブルは多くありませんが、十分に大きく、テーブル/データベースを分離するのが難しいソーシャルデータがいくつかあります。

4

1 に答える 1

1

NoSQLは必要ありません。「データベース症候群」を取り除く必要があります:)

これは、1 つの大きなデータベースの代わりに、より小さなデータベースのセットを持つことができることを意味します。あなたのシステムにはさまざまな懸念事項があると確信しています。例: 請求、配送など。

これらの問題を別々のデータベースに分けてみませんか? したがって、「請求」サブシステムには、独自の「配送」データベースがあります。これは、あなたが持っているものと同じくらい別のデータベースです。

スケーリングがはるかに簡単になりました。必要に応じて、それぞれを個別のサーバーに配置したり、重要なサーバーに専用のハードウェアを与えて残りをまとめたりすることができます。

また、管理もはるかに簡単になります。他のコンテキストに影響を与えることなく、1 つのコンテキストで個別に変更できます。

これが「ベスト プラクティス」であり、SOA スタイルの一部です ;)

もう 1 つの (私の目にはあまり好ましくない) は、「水平シャーディング」と呼ばれるものです。たとえば、システムが「プロジェクト」で動作し、各「プロジェクト」(およびそのすべてのデータ) を個別のデータベースに単純に配置できます。それも機能しますが、すべてに適合するわけではなく、独自のトリックがあります。

于 2013-02-25T08:45:33.573 に答える