我正在研究一个功能,并可以使用哪些数据库来解决这个问题。哪个数据库适合这份工作?
我们有一个使用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。我可以使用一些可能已经完成研究的人的帮助,以确定哪个数据库适合我的任务。
是的,消息表可以很容易地增长到数百万或行。
最好的部分是,我不必担心元数据更改。一旦使用元数据创建了一条消息,它就会为该消息设置一条消息。 –