3

100,000 人以上のユーザーにサービスを提供する大規模な電子商取引 Web サイトを構築していますが、最初の 1 年間でユーザー数が急速に増加すると予想しています。一般に、このサイトは、ユーザーがリストを作成、更新、および削除できる ebay と非常によく似た機能を果たします。ユーザーは、リストを検索して、興味のあるアイテムを購入することもできます。基本的に、システムにはトランザクション要件と非トランザクション要件があります。

**Transactional**
Create a listing (multi-record update)
Remove a listing
Update a listing
Purchase a listing (multi-record update)

**Non-Transactional**
Search listings
View a listing

Couch や MongoDB などのスケーラブルなドキュメント ベースの NoSQL データ ストアの機能を活用したいと考えていますが、同時に ACID トランザクション要件をサポートするリレーショナル ストアも必要です。そこで、両方のテクノロジーを使用するハイブリッド ソリューションを考え出しました。

サイトは「主に読み取り」であるため、スケーラビリティのニーズを満たすために、MongoDB データ ストアをセットアップしました。トランザクションのニーズのために、MySQL Cluster をセットアップしました。ミドルウェア コンポーネントとして、JBoss App サーバー クラスターを使用します。

「検索」リクエストが届くと、JBoss はそのリクエストを Mongo に送信して検索を処理します。これにより、MySQL に負担をかけずに非常に迅速に結果が生成されます。リストが作成、更新、削除、または購入されると、JBoss は MySQL に対してトランザクションを処理します。MongoDB と MySQL の同期を維持するために、MySQL に対して JBoss によって処理されるすべてのトランザクション要求には、リスト ID を介して MongoDB 内の対応するドキュメントを更新するビジネス ロジックの最終ステップが含まれます。この文書更新の統合を容易にするために、MongoDB Java API を使用する予定です。

要するに、サイトは主に読み取られるため、このアーキテクチャにより、MongoDB を水平方向にスケールアウトして、より多くのユーザーに対応できるようになります。MySQL を使用すると、JBoss ミドルウェアを通じて MongoDB ストアを更新しながら、リレーショナル データベースの ACID プロパティを活用できます。

このアーキテクチャに問題はありますか? 一貫性、可用性、および分割耐性を同時に提供できるプラットフォームはありません。NoSQL システムは通常、一貫性をあきらめます。しかし、少なくともこのハイブリッド アプローチでは、システムの複雑さが増すという犠牲を払って 3 つすべてを実現できます。私たちの要件はすべて満たされているので、それで問題ありません。

4

2 に答える 2

3

このアプローチに問題はありません。

実は現在、SQL と NonSQL の両方を活用するアプリケーション (E コマース) にも取り組んでいます。私たちのものは Rails アプリケーションで、データの 90% は mongo に保存され、mysql にはトランザクションおよびインベントリ項目のみが保存されます。すべてのトランザクションは Mysql で処理され、それ以外はすべて mongo に送られます。

于 2011-06-23T09:17:36.440 に答える
1

すでに構築している場合は、少し企業的すぎることを除けば、アーキテクチャに大きな問題はありません。ただし、このようなシステムでゼロから始めると、おそらく SQL とミドルウェアを除外するでしょう。

NoSQL データ ストアの一貫性の喪失は、あなたが示唆するほど完全ではありません。それらの多くがトランザクションをサポートしており、特定のクエリですぐに一貫性を保つように設定できるという事実は別として、あなたの要件のいくつかは、物事をリレーショナルに設計するための単純な成果物であると思います. あなたの懸念は、複数のレコードへの更新が必要な操作に関連しているようです-リストは本当に複数のレコードですか、それとも SQL レコードはフラットな構造を持つ必要があるため、そのように設定されているだけですか?

また、検索と表示が MySQL の外部で処理される場合、結果整合性システムを効果的にセットアップしたことになります。

于 2011-06-23T05:47:22.587 に答える