对Twitter和Facebook等大型网站使用的NoSQL数据库进行了大量宣传。然而,正如我对此更仔细地研究一下,似乎这个领域的大多数成功公司都在使用数据库技术的组合,使用MySQL作为主数据库,然后添加NoSQL数据库,例如添加缓存层以提高性能。我还听说过Diaspora最初开始使用MongoDB作为他们的主要数据库,然后不得不切换到关系数据库,因为Mongo被证明不适合他们的需求。特别是,我听说代表用户之间的关系确实需要关系数据库或图形数据库。
然而,Spotify似乎对Cassandra来说非常重要,Cassandra既不是关系数据库也不是图形数据库。此外,虽然Spotify并不以社交网络着称,但它确实包括能够跟随其他用户并看到他们一直在听什么歌的功能。如果这一切都是用Cassandra完成的,那么Cassandra可能非常适合社交网络,甚至代表用户之间的关系?任何人都可以给我任何见解吗?
编辑:我知道Cassandra不支持加入,但是有没有合理的方法来表示Cassandra的社交图,尽管没有连接?此外,我对Cassandra与SQL社交图特别感兴趣,对Cassandra与图DB不太感兴趣。答案 0 :(得分:1)
Cassandra非常适合使用简单的键值或分区内的bigtable-esque切片进行高速写入和读取。
Cassandra非常擅长将你建模为SQL JOIN或搜索任意文本。
人们倾向于使用技术组合的原因是不同的技术是针对不同的问题而设计的 - 针对搜索优化的工具(elasticsearch,solr等)在搜索类型问题上会更好,但是赢了# 39; t具有您从Cassandra获得的键/值查找的读/写吞吐量。
答案 1 :(得分:1)
它们都有不同的用例,单个数据库可能还不够。
对于社交网站,可以使用这些的组合。 SQL或NoSQL数据库可用于存储用户信息,首选项等,具体取决于您查看的比例。
然而,关系要求(社交网络)是不同的,SQL和NoSQL数据库(包括Cassandra)都不是表示这些数据的好选择。
图表数据库在表示社交图和执行相关算法方面更快更有效率。