2009-02-26 6 views
0

私はReadOnlyデータベースについてかなり読んだことがあります。Readonlyデータベースクエリ?

したがって、私は、書き込みデータベースがロックを利用していないときに、読み取り専用のデータベースと、データの読み取りと照会に大量に使用される別の書き込みデータベースと、すべてのCRUDの作業に利点があるのだろうかと思っていました。

+0

少し質問を明確にできますか?これらのデータベースには同じデータがあり、ある時点で同期化されていますか、それらの関係は何ですか? –

答えて

3

特に、R/Wデータベースからアドホッククエリとレポートのニーズを軽減する場合は、いくつかの利点があります。最大の課題はそれらを同期させておくことですが、夜間の処理が十分であれば(つまり、日中の変更を読み取り専用DBに含める必要はありません)、一般に2つのデータベースがあれば、特にデータベースが別々の物理マシンにある場合

編集:現実世界の例として、数年前、私のクライアントで、彼らはの上向きのコストは非常に強力なマシンを稼働して、自分の本番データベース(SQL Serverなど)のうち、使用可能なアドホックレポートの取得に苦労しました。ハードウェアだけのために50,000ドル。

標準化されていないr/oデータを使用して読み取り専用データベースをセットアップし、デスクトップマシン上でセットアップSQLサーバーを実行していました(ハードウェアのコストは約2500ドルです)。また、2500ドルの既製品デスクトップPCは、OLTP、バッチ処理、および装置のニーズのレポートを提供しようとしているディスクのゴブとゴブを持つ大規模なコンパッククワッド処理サーバーのパフォーマンスの10倍の大きさで吹き飛んだ。

ユーザーは非常に満足していましたが、ITスタッフの初期の抵抗にもかかわらず、最終的には「生産」マシンの貴重なサイクルを解放し、モデルは他の場所でエミュレートされました。

0

読み取り専用データベースの利点は明らかです。テーブルのロックはなく、読み取りを試みている間は誰もデータを変更しません。

しかし、シンクロナイズの問題があります。変更した読取り専用データベースを更新する必要があります。

パフォーマンスをさらに向上させるために、2つのデータベースを別々のサーバーに置くこともできます。

0

読取り専用のリレーショナルデータベースから得られるメリットはあまりありません。

おそらく、データが多次元行列に大量に正規化されていないOLAPが考えられます。 SQLサーバー分析サービスを見てください。

0

アプリケーションが、既知のストアドプロシージャやレポートなどを介してデータベースに対して実行されているSQL文を制限している場合、読み取り専用コピーは心配しないでください。結局のところ、データベースは、読み込み、書き込み、および更新を同時に行うためのものです。結局のところ、あなたのシステムをテストし、SELECTクエリがテーブルをロックしないようにして、他のユーザがINSERT/UPDATE/DELETEできないようにします。

ただし、データにアクセスするための方法(リンクされたテーブルを持つMS Access)を提供している場合は、間違いなく読み取り専用データベースが必要です。それ以外の場合は、SELECT * FROM TheBiggestTableEveryoneUsesなどの特別なクエリを作成し、そのテーブルのレコードをINSERT/UPDATE/DELETEしようとする他のユーザーとデッドロックを作成する可能性があります。

0

これはアーキテクチャ上の質問であり、リソース計画に含まれています。

  • あなたは
  • あなたの負荷のhttp/SQLコール/トランザクションを計画する必要があり、あなたの聴衆が同時のSQL DBは
  • キャッシュ
  • SQL並行処理モデルを打つどのように多くの
  • 者である必要がありますどのように多くのヒット曲を定義
  • とは何ですか?ストレスレベルとは何ですか?

S oを定義しているアーキテクチャは トランザクションデータベースとして知られており、データベース When to build a separate reporting database?

を報告するので、だから我々は、SQLクラスタリングとレプリケーションをした私は、教育省のために働いて、我々は50億人の生徒の教師の両親の100TBのデータなど を持っています。 私たちのデータは5分ごとに複製され、レプリケートされたデータベースからは毎月毎週、そして数多くのレポートがTransaction dbに影響を与えずに実行されます。 もう一度あなたの会社が複数のデータベースを買う余裕がないなら、あなたは同じデータベースでそれをすることができますスタートアップ企業のようにするか、聴衆が重大ではない場合LOL あなたのインフラストラクチャを構築する必要があるのは$$$の問題です 誰かなぜそれが必要なのか述べた 1.トランザクションのパフォーマンスが重要な場合。 2.トランザクションアプリケーションでメンテナンスウィンドウを取得するのが難しい場合。 3.このアプリケーションだけでなく、他のアプリケーションサイロからも結果を関連付ける必要がある場合。 4.スター・スキーマ/ビジネス・インテリジェンス環境に最適なトレンドまたはその他のタイプのレポートをレポートがサポートする必要がある場合。 5.レポートが長時間実行されている場合。 6.トランザクションアプリケーションが高価なハードウェアリソース(クラスタ、メインフレームなど)にある場合 7.トランザクションデータに対してデータクレンジング/抽出トランスフォームロード操作を実行する必要がある場合(たとえば、状態名を標準状態略語)。