我几天前听说了cassandra数据库引擎,正在搜索关于它的好文档。通过对cassandra的研究,我发现cassandra比其他数据引擎更具扩展性。我也在亚马逊SimpleDB上读过,但由于SimpleDB有10 as /表的限制,而且谷歌数据存储比亚马逊SimpleDB慢,所以我不喜欢使用它们(谷歌数据存储,亚马逊SimpleDB)。因此,为了使我们的站点具有特别高的写入速率和海量数据,我喜欢使用Cassandra作为我们的数据引擎。
但在开始使用cassandra之前,我对“如何使用cassandra处理复杂数据”感到困惑。我给你下面的MySQL数据库结构,请阅读这篇文章并给我一个好的建议。
用户表
主要hasColum ID
hasColum电子邮件唯一
hasColum FirstName
hasColum LastName
类别表
主要hasColum ID
hasColum父级
hasColum类别
帖子表
主要hasColum ID
hasColum UID索引链接到用户的外键->ID
hasColum CID索引外键链接到类别->ID
hasColum标题
hasColum帖子索引
hasColum PunDate
评论
hasColum ID主ID
hasColum UID索引链接到用户的外键->ID
链接到帖子的hasColum PID索引外键->ID
hasColum评论
用户组
hasColum ID主ID
hasColum名称
UserToGroup表(仅适用于多对多关系)
链接到用户的hasColum UID外键->ID
链接到组的hasColum GID外键->ID
最后供你参考,我喜欢使用SimpleCassie PHP http://code.google.com/p/simpletools-php/所以,如果你能给我一个使用SimpleCassie的例子,那将是非常有帮助的
发布于 2010-05-08 04:47:30
从cassandra's wiki data model reference
与关系系统不同,在关系系统中,您可以对实体和关系进行建模,然后添加索引来支持任何需要的查询,而使用Cassandra时,您需要提前考虑希望有效地支持哪些查询,并对其进行适当的建模。由于没有自动提供的索引,因此与使用tables:关系查询相比,每个查询更接近一个ColumnFamily。不要害怕相应地去规范化;
一篇很棒的文章here。
我希望它能对你有所帮助。
发布于 2011-03-03 04:49:06
我会假设你的系统有很重的负载和大量的数据,而且我还会假设你已经尝试过关系数据库,并且在重负载下崩溃了,命中了数百万行,每秒10k+请求等等。
在这些假设之后,我会告诉你,你需要改变你的思考方式。例如,在您的问题中,您写下了表结构,这在您考虑关系数据库时非常重要。但在列存储(如cassandra/hbase/等)中并不那么重要,重要的是请求类型。因为在列存储中,你总是可以在新的列中抛出一个新的元数据(一个额外的列,你不会在请求中使用,而是在响应中使用),所以你不需要改变你的设计。但在关系数据库中,你需要修改table,甚至获取另一个具有pk-fk关系的表。
在使用cassandra (或任何其他列数据库)时,您应该准备好所有的api。
示例:
如果你的应用程序接口中有getAllUserPosts($userId),你应该有八个: UserPosts ColumnFamily或者一个二级索引ColumnFamily (它在后台做类似的事情)。此外,您还需要如何对结果进行排序?是的,这也是设计中的一个关键点,如果你想让它按创建日期排序,那么你最好使用TimeUID in key,或者第三方机制来为你生成递增的uids。也许你想用它们的“最后一次更新”来对它们进行排序,那么你最好在上面放一个二级索引。
根据我的经验,我想告诉你,当你的api,或者你需要从数据中得到什么是非常清楚的时候,用cassandra开发一些东西真的很酷,但是当你想要改变一个大的特性时,你会有一些非常大的挑战在你面前,当心。此外,请确保您理解cassandra快速运行的基础“最终一致性”。因为您必须多次将头撞在键盘上才能获得事务工作(至少我是这样做的)。当然,在某些时候,您可能希望对cassandra上的海量数据进行大规模操作:准备好使用云计算。hadoop。
PS:我相信这里有很多人对cassandra有丰富的经验和知识,然后是我,他们会比我更好地帮助你设计你的系统。我只想分享我在生产中使用cassandra时的经历和理解。
发布于 2010-04-21 22:55:10
去规范化。请参阅http://github.com/ericflo/twissandra上的twissandra.com和文档
在http://wiki.apache.org/cassandra/ArticlesAndPresentations上有更多示例
https://stackoverflow.com/questions/2682205
复制相似问题