2011-12-19 10 views
9

私たちは、ウェブトラフィックが多いニュース指向の大きなサイトを持っています。アーキテクチャは、よく見られるDB - Repoレイヤ - サービスレイヤ - Asp.Net MVCです。私たちが見てきた問題は、読み取り性能の問題です。このDDDドメインオブジェクトのすべての事柄は理論上はビジネスルールにとって素晴らしいことが判明しましたが、読取りパフォーマンスを最適化することは難しくなりました。SQL ServerとMongoを一緒に使用できますか?

解決策として、全く新しい(私たちのために)何かを考えています:noSQLを使用しています。私は、私たちのウェブサイトに表示されているデータのためにnoSQLデータベースを使用したいと思います。私たちはSQL Serverを取り除くことはできませんが(少なくともいつでもすぐに)、実際のステップはMongoをすべての新しい開発のためのクエリデータベースとして使用することです。

私の質問は、レコードデータベースとMongoをクエリデータベースとして一緒に使用することができるかどうかです。もしそうなら、どのような技術/テクニックを使って更新プログラムを更新しますか?私はモンゴーが15分もリフレッシュされることを望みます。

+1

これはプログラマーのための質問かもしれません.stackexchange.com、私は同じことをやっているので、答えに興味を持っています。 –

+0

まあ、これは可能です*明らかにこれは可能です - 実際の質問は、MongoDBをSQL Serverの読み取りキャッシュとして使いやすくするツールやフレームワークがあるかどうかです。 –

+0

http://programmers.stackexchange.com/questions/125980/can-sql-server-and-mongo-be-used-togetherでstackexchangeに追加 – John

答えて

8

最初にGreg Youngによって導入されたcqrsコマンドクエリ責任分担)パターンを調べることをお勧めします。またhereを読むことができます。

このアプローチには、読み取りと書き込みの2つのデータベースが必要です。書き込みデータベースは、主な書き込みストアとして使用され、クエリ用の読み取りデータベースとして使用されます。読み取りデータベースは非正規化データを持つことができます。たとえば、記事がある場合は、著者情報をuiにすばやく表示するために著者情報を埋め込むことができます。一般的にnosqlデータベースは、読み込み記憶域に適しています。

プライマリ正規化データベースはsqlにあり、読み取りデータベースはmongodbにあります。

一般に、このアプローチは、高トラフィックシステムに適しています。それのオープンソース実装 - ncqrsがあります。

2012年のmicrosoftのroadmapでもこのアプローチ。

私から:私はこのアプローチを1年以上使用しており、それに私の個人的な投票を与えています。

+0

CQRSは私がやろうとしていることですが、既存のレガシーシステムで作業している間にどのように動くかを理解するのが難しいです。 nCQRSは膨大な書き換えが必要なようです。私は単純なものから始めようとしています。読み取り専用のMongoDBを作成し、新しいクライアントサイドページに使用します。 Udiは「CQRSはアプローチであり、クッキーカッターソリューションではありません」と述べています。 – John

+0

@ジョン:そうです、いつものウディダハンの権利。 cqrsを適用することは、大規模な書き換えを意味しますが、将来は多くのメリットをもたらします。パフォーマンスの向上だけでなく、スケーラビリティだけでなく、アプリケーションコードの単純化と論理的分離も可能にします。 –

関連する問題