首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cassandra上的复杂查询

cassandra上的复杂查询
EN

Stack Overflow用户
提问于 2010-04-21 18:49:41
回答 5查看 8.3K关注 0票数 3

我几天前听说了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的例子,那将是非常有帮助的

EN

回答 5

Stack Overflow用户

发布于 2010-05-08 04:47:30

cassandra's wiki data model reference

与关系系统不同,在关系系统中,您可以对实体和关系进行建模,然后添加索引来支持任何需要的查询,而使用Cassandra时,您需要提前考虑希望有效地支持哪些查询,并对其进行适当的建模。由于没有自动提供的索引,因此与使用tables:关系查询相比,每个查询更接近一个ColumnFamily。不要害怕相应地去规范化;

一篇很棒的文章here

我希望它能对你有所帮助。

票数 5
EN

Stack Overflow用户

发布于 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时的经历和理解。

票数 5
EN

Stack Overflow用户

发布于 2010-04-21 22:55:10

去规范化。请参阅http://github.com/ericflo/twissandra上的twissandra.com和文档

http://wiki.apache.org/cassandra/ArticlesAndPresentations上有更多示例

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2682205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档