ソーシャル ネットワーク システムにPHPとMySQLを使用しています
member_feedという名前のMySQLテーブルがあります。このテーブルでは、各メンバーのフィードを保存します。テーブル構造は次のとおりです。
|member_feed_id | member_id | content_id | activity_id |
このテーブルには1 億 2000 万件以上のレコードがあり、すべてのメンバーが一連のレコードを持っています。
私は現在、 MySQLからMongoDBへの移行に取り組んでおり、 MongoDBは初めてです。したがって、このテーブルをMongoDBのコレクションに変換する必要があります。member_feed テーブルのコレクションを次のように構築すると思います。
1- member_feed テーブルの各行をdocumentとして、次のようにします。
{ "member_id: 1" , "content_id: 10" , "activity_id: 1" },
{ "member_id: 1" , "content_id: 11" , "activity_id: 2" },
{ "member_id: 1" , "content_id: 12" , "activity_id: 3" },
{ "member_id: 2" , "content_id: 9" , "activity_id: 4" },
{ "member_id: 2" , "content_id: 11" , "activity_id: 5" },
{ "member_id: 2" , "content_id: 14" , "activity_id: 6" }
このコレクションには 1 億 2000 万のレコードが含まれます
2-メンバー ID を持つ1 つのドキュメントのすべてのメンバー フィードと、このメンバーのすべてのフィード
{
member_id: '1',
feeds: [
{ content_id: '10', 'activity_id' : 1 },
{ content_id: '11', 'activity_id' : 2 },
{ content_id: '12', 'activity_id' : 3 }
]
member_id: '2',
feeds: [
{ content_id: '9', 'activity_id' : 4 },
{ content_id: '11', 'activity_id' : 2 },
{ content_id: '14', 'activity_id' : 6 }
]
}
そのため、彼のダッシュボードでユーザー フィードを表示する必要がある場合は、次のようにします。
1-member_id によって、mongoDB 内のドキュメントからすべてのIDを取得します$contentIdsFromMongo
2-MySQLでクエリを実行して、次のようなコンテンツを取得します
select * from content where content_id in($contentIdsFromMongo);
および$contentIdsFromMongoには10000 個の idがあるため、これは MySQL のパフォーマンスに影響します。
サーバーにmongoDBがあり、別のサーバーにMySQLがあります
毎秒、システムは各メンバーに大量のレコードを挿入するため、(挿入、更新、選択など) すべての操作を実行できるドキュメントが必要です。
各メンバーのコレクション内のドキュメントを作成する最良の方法は何ですか?この方法はmongoDBを操作する上で正しいか間違っていますか?
ありがとう。