0

私はアプリケーションを計画しており、リレーショナル データベースとその他の非リレーショナル データベース、それぞれ MySQL と MongoDB を維持したいと考えています。

1 つの事実は、リレーショナル データベースではユーザーが維持され、非リレーショナル データベースはこのユーザー生成コンテンツによって維持され、ジオ クエリが含まれます。

現在の問題は、 *ユーザーとアイテムの間のリンクを *両方のデータベースを使用して作成し、パフォーマンスを維持する方法です。または、間違ったアプローチを採用していますか?

私の考えは、mysql のユーザーへの外部キーと、非リレーショナル データベースの製品のobjectIdを持つ製品テーブルを作成することです。

MySQL テーブルの例:

table: products_relationship

| account_id | product_objectid                 |
| ---------- | -------------------------------- |
| 1          | 0b694fc34c9663883a5d4b32371f8333 |
| 1          | 0b694fc34c9663883a5d4b32371f9837 |
| 2          | 0b694fc34c9663883a5d4b32371f9bfc |
| 5          | 0b694fc34c9663883a5d4b32371fcb5f |
| 1          | 0b694fc34c9663883a5d4b32371fd809 |

したがって、account_id = 1 のユーザーには、名、電子メール、およびその他のデータがあります。そして3つの製品を所有しています。

新しい方法論を採用する必要がありますか? 私はそれでパフォーマンスを上げますか?それでNoSQLの機能が失われますか?

4

2 に答える 2

1

私は職場でこれを行うシステムに取り組んでいます。リレーショナル データベースと NoSQL データベースがあり、それらを統合するために Mule (http://www.mulesoft.org/) という製品を使用しています。

MySQL または Mongo のいずれかを選択し、これらのデータベースの 1 つに対してすべての PHP 作業を行うことを強くお勧めします。MySQL->Mongo または Mongo->MySQL からほぼリアルタイムでデータを移動できます。ミュールはそれが得意です。

システム間で「結合」を効率的に行うことはできません。

Mule は、データを移動するときにデータを変換するのにも役立ちます。例として、MySQL で正規化されたデータを取得し、それを非正規化して Mongo に格納できます。

于 2013-01-20T22:12:43.110 に答える
0

それほど複雑なものは必要ないのに、複雑なアーキテクチャを採用していたことに気付きました。ユーザーをリレーショナル データベースに入れたいと思う理由はありません。はい、問題なく MongoDB 内にとどまることができ、各ユーザー内の製品です。これは私が作成する関係です。

必要に応じて、_objectId を使用して接続を確立できます

于 2013-01-21T14:46:11.930 に答える