我正在开发一项功能,并且可以就我应该使用哪个数据库来解决这个问题提出意见。
我们有一个使用 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,
...
}
}
当我查询消息时,我需要能够基于零个或多个元数据属性进行查询。这个调用需要快速并且经常发生。
由于元数据属性的数量以及查询中可以包含任意数量的事实,在此处创建 SQL 索引似乎不是一个好主意。
就个人而言,我有使用 MySQL 和 MongoDB 的经验。我已经开始研究 Cassandra、HBase、Riak 和 CouchDB。我可以从可能已经研究过哪个数据库适合我的任务的人那里获得一些帮助。
是的,消息表很容易增长到数百万或行。