1

興味深いアーキテクチャの問題があります。

私のシナリオは次のとおりです。現在 60 のストアフロントにあるオンサイトの SQL Server 2005 データベースに格納されているデータを一元化する必要があります。間もなく 120 のストアフロントに倍増します。この中央の場所には、メインの SQL Server 2005 データベースがあります。中央の場所にある SQL Server 2005 データベースだけに単純に依存しない理由は、WAN 接続がさまざまな理由 (天候、物理的な回線の切断、メンテナンスなど) によって切断された場合でも、ストアフロントは SQL Server 2005 データベースを使用して動作し続けることができるからです。ローカル SQL Server 2005 データベース。私はミッションクリティカルなデータについて話しています。

ただし、多くの物流上の問題が発生します。ストアフロントは、社内チームによって構築された .NET デスクトップ アプリケーションに依存しています。そのチームは、ローカル データベースから中央データベースへの SQL Server レプリケーションを活用しています。この社内ソフトウェアの新しいバージョンをインストールし、ソフトウェアのインストールごとに関連する SQL Server スクリプトを 60 か所の場所に実行するには、これらのインストールを完了するために多くの面倒な作業が必要です (長いインストール チェックリスト、オンサイト サーバーのリモート デスクトップへのログイン、Dameware'オンサイトのワークステーションにアクセスして、従業員がデスクトップ アプリを実行したままにしていないかどうかを確認するなど)。この非常に非効率的な単調な作業は、ほとんどが週末に行われ、残業代が支払われない 6 ~ 7 人のチームによって実行されます。私は、Java EE 6、Java SE 7、および JavaFX を実装する別の社内グループの出身です。私はそのグループにいたので、彼らの痛みを知っています。もっと簡単な解決策があると思います。.NET アプリケーション アーキテクチャ全体を、クライアント アプリケーションを実装する Java EE 6 アーキテクチャに切り替えるという話があります。

私のアイデアは次のとおりです。集中化されたRDBMS Oracleデータベースとリアルタイムで同期されたままの埋め込み/No-SQLローカルデータベースを実装します(当社はOracle 10g/11gまたはSQL Server 2005+を使用しています)。WAN がダウンした場合でも、ストアフロントはローカルの組み込み/No-SQL データベースを使用してシームレスに動作し続けることができます。接続が再確立されると、組み込み/No-SQL データベースはその状態を中央データベースに保持し、リアルタイム同期を復元します。接続の移行がユーザーにシームレスに見えるようにしたい. 私は JPA 2 のようなテクノロジーの大ファンです。JPA 2 は、接続が切断された後に単純に再接続します。

Java EE6 ベースのソリューションへの切り替えを検討しているため、WebSphere v8.0.x で動作し、オープンソースであるすべての技術を検討したいと考えています。商用ライセンスを扱いたくありません。つまり、No-SQL db、インメモリ db、Lucene、Apache Jackrabbit、Corba/IIOP、JMS、EJB 3.1、CDI 1.0、JSF MyFaces 2.0.4、JPA 2、JAX-RS、およびデスクトップ クライアントなどのすべてのオプションを検討することを意味します。 JavaFXを搭載。残っている唯一の問題は、組み込み/No-SQL データベースにデータを保持し、そのデータを中央のデータ ソースにリアルタイムで同期して、ストア フロントの運用を維持できるものは何かということです。

4

1 に答える 1

2

私は .NET が大好きなので、SQL Server レプリケーション ソリューションを機能させるために一生懸命努力しますが、失敗します...

レプリケーションのために検討する 2 つの NoSQL ソリューションを次に示します。

CouchDB

http://couchdb.apache.org/

レプリケーションはかなり良好で、接続が失われたときに中断したところから再開します。RDBMS のバックグラウンドを持っている場合は学習曲線がありますが、うまくいく可能性があります。

モンゴDB

http://www.mongodb.org/

中央 (プライマリ) ノードと同期する Mongo でレプリカ セットを使用できます。レプリカ セットのセカンダリ ノードがオフラインになった場合、それらを元に戻し、中断したところから再開できます。

問題は、プライマリ ノードが大量の書き込みを取得すると、長期間ダウンしていたセカンダリ ノードと再び同期できない可能性があることです。基本的に、メイン/中央ノードのすべての書き込みを記憶し、最終的には古い書き込みがフラッシュされます。

一般的なアドバイス

Mongo と Couch はどちらもドキュメント データベースです。NoSQL に移行したい場合は、すべてのコードを正規化された構造ではなく、非正規化された構造に切り替える必要があります。これは、おそらくリレーショナルの世界で慣れているものです。

これは大きな変化であり、ドキュメント データベースの世界で自分が満足しているモデルを確立するのに苦労したことはわかっています。

一般的にデータを移動する限り、Mule ( http://www.mulesoft.org/ ) は非常に異なるタイプのシステム/データベースを接続するのに非常に優れていることがわかりました。

于 2013-01-30T23:52:54.907 に答える