質問

よっ半数十DBs.のDBsをすべて同じスキーマ、同じSPs。えの方も、DBs、大きな意欲を多くのDBsした効率性のに代替する追加カラムを毎年、建国記念のテーブルspデータベースに表示する設定のデータとともにすでに進行中だったには、巨人と遅)DBの代わりに複数のsamll DBs.所有するカラム数のデータセットが照会されると、接続文字列を選択するときに使用するデータベースです。

唯一の理由私は嫌いであることについては、これまでのコードの重複が痛みます。例えば、時には毎回切り替えたいという保存されている手順については親権者の方の同意が必要の変更算書べてのデータベースです。

Oneソリューションしていると考えられてい組み合わせるすべてのデータを一つの大きなデータベースを追加するカラムに表示するデータベースのデータがなくてはならないので合わせます。そして、私は仕切りすべてのテーブルによるこの列の値です。理論的には、このすべては、下表のすべてのデータ自体が道徳的に同じでもなく、削減の指標システムの主要なテーマは、SPs。

私の質問はここ

  1. このょうか?ありそのために?
  2. はありまgotchasい。
  3. まこって影響実績を教えてください。
役に立ちましたか?

解決

誰もがいくつかの点でこれに対処します。私自身の個人的な意見は、複数のデータベースが裏側の痛みであり、より高速ではないということです。彼らはので、メンテナンス頭痛の痛みです。インデックスが正しく設定されている場合は、必要に応じて、各テーブル内の余分な列を追加すると、あなたのプロセスがその多くを行って遅くはありません。そして、あなたのメンテナンスが非常に容易になります。さらに、複数のDBの間で取引を行うことは面倒になるし、MTCを含むことができます。

ところで、単一のデータベースを使用すると、多くの場合、マルチテナントデータベースと呼ばれています。あなたは、このビットを研究することがあります。可能な場合でも、私はこのような複数のDBのを避けるだろう。

他のヒント

私はランディとは異なる心の思います。

マルチテナント・モデルは、その利点を有しています。

1の場合、メンテナンスは本当に多くの異なったあなたは、個々のデータベースのメンテナンスを見て停止し、セットを見ていくつかの時点で5つのデータベースまたは500を持っているかどうかではありません。はい、あなたはバックアップをシリアル化する必要があります。また、一度にすべてのデータベース間での再構築/インデックスREORGを実行することはできません。

しかし、複数の多かれ少なかれ同じデータベース間でのコードの変更のために、スクリプトは本当に余分な指を離すことなく、複数のデータベースに行われるべき多くのことをする簡単な方法があります。私はSQLFarmsは(今JNetDirect販売)組み合わせると呼ばれるツールを使用しますが、私がプレイしていない、そのようなレッドゲートマルチスクリプトなどの他の製品があります。

私は、マルチテナントモデルで一番好きなことはあなたが成長し、規模と急に新しいデータベースサーバーを必要とするとき、新しいに(たとえば、忙しいか、最も急速に成長している)テナントの一つを移動させることは非常に簡単であるということですサーバ。誰もが同じデータベースに詰まっている場合のみ、そのデータのこの抽出は、ダウンタイムを最小限にすることがあります場合は特に、非常に困難になります。マルチテナントモデルでは、あなただけの彼らのデータベースのミラーリングを設定し、その後、準備ができたら、プライマリを切り替えることができます。

私は、これらのデータベースを組み合わせることに賛成するだろう。その多くの異なるデータベースにスキーマの更新の展開に伴うオーバーヘッドの追加など別の物理ディスク上のインデックス、パーティショニング、クラスタリング、頭痛などが非常に大規模なデータベースの潜在的なパフォーマンスなdownfallsのアカウントにSQL Serverに組み込まれて、他の施設がありますが、それは簡単に単一のデータベースで扱われます、時間がかかることがあります。私は、SQL Serverは、このようなケースでは本当によくスケールを考える - データベース・サーバは、あなたのデータに応じたアクセスを行い、提供するために設計されています何をしましょう。あなたは、アプリケーションの設計に焦点を当て、SQL Serverに格納モデルを残すことができます。

これは上記記載されていないのにまた、私はあなたが持っているので、あなたが知っている何かに基づいてデータベース間で切り替えるには、この「多くのデータベース」モデルを使用するアプリケーションに関連するダイナミックSQLのいくつかのレベルがあることを疑うだろうので、それはハードの接続文字列または実際のSQL文のいずれかをオンザフライで生成されるようにしていることを意味し、アプリケーションにまたは構成ファイルに記述することができない、そしてそれは本当に大きなセキュリティ上のリスクとなる可能性があります(「SQLインジェクションについて読ん「あなたは、動的SQLの潜在的なリスク)に慣れていない場合ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top