私は機能に取り組んでおり、この問題を解決するためにどのデータベースを使用すべきかについての意見を使用することができます。
MySQLを使用したRailsアプリケーションがあります。MySQLに問題はなく、正常に動作します。ただし、新機能については、MySQLを使用するかどうかを決定しています。問題を単純化するために、モデルがあるUser
と仮定しましょう。Message
ユーザーはメッセージを作成できます。メッセージは、投稿者との関連付けに基づいて他のユーザーに配信されます。
明らかに友情に基づく関連付けがありますが、ユーザーのプロファイルに基づく関連付けはもっとたくさんあります。ポスターに関するメタデータをメッセージと一緒に保存する予定です。これにより、メッセージをクエリするたびにメタデータを取得する必要がなくなります。
したがって、メッセージは次のようになります。
{
id: 1,
message: "Hi",
created_at: 1234567890,
metadata: {
user_id: 555,
category_1: null,
category_2: null,
category_3: null,
...
}
}
メッセージをクエリするときは、0個以上のメタデータ属性に基づいてクエリできる必要があります。この呼び出しは高速である必要があり、非常に頻繁に発生します。
メタデータ属性の数とクエリに含めることができる数が多いため、ここでSQLインデックスを作成することはお勧めできません。
個人的には、MySQLとMongoDBの経験があります。Cassandra、HBase、Riak、CouchDBの研究を始めました。どのデータベースが私のタスクに適しているかについて調査を行った可能性のある人々の助けを借りることができます。
そして、はい、メッセージテーブルは簡単に数百万または行に成長する可能性があります。