mongodb是否适合做需要频繁avg,sum之类的?

2013-05-31 23:36:04 +08:00
 refresh
例如经常要出报表查询这类的,一个很简单的例子就是查成绩汇总,比如说要查前5名的平均分,前10名的平均分之类的,感觉mongodb要实现这些很难,aggregate很强大,但操作起来有些复杂,是否mongodb只适合于简单且海量的数据,例如博客,评论,文章之类的?
小弟菜鸟,学习中,望勿喷
6202 次点击
所在节点    MongoDB
11 条回复
chemhack
2013-05-31 23:37:53 +08:00
这种需求就传统SQL数据库吧
chemzqm
2013-06-01 02:50:42 +08:00
类似你说的需求完全可以取出数据然后在应用层处理,我觉得比写sql来的舒服
breeswish
2013-06-01 08:06:50 +08:00
看到这个标题第一个冒出来想法是线段树 = =

MongoDB还是让它做最擅长的NoSQL吧,MapReduce不能当饭吃,效率不是很高,当然如果数据量不大,用用也可以
refresh
2013-06-01 09:55:56 +08:00
@breeswish NoSql适合哪些场景?大而且简单的数据?这个案例MapReduce应该可以解决,不过我现在想用Aggregate解决它
@chemzqm 没必要拿出一大堆数据处理吧,这样太占内存了
@chemhack 其实这算是一个非常常用简单的需求了
refresh
2013-06-01 09:58:49 +08:00
刚找到一个资料不错,mapReduce与MySql的对应图。话说mongodb好复杂,一句简单的sql要map-reduce的话,要多好多出来。感觉mongodb就是英文,sql就是中文。
aisk
2013-06-01 10:09:54 +08:00
sum avg 什么的可以每次写入的时候计算 可能需要加锁
yueq
2013-06-01 10:31:04 +08:00
@refresh 这用stored procedure就行.
atom
2013-06-01 10:40:33 +08:00
@refresh
求图
refresh
2013-06-01 11:34:22 +08:00
@atom 我以为我发了呢,原来没有 http://blog.serverdensity.com/wp-content/uploads/2010/06/sql-to-mongodb.pdf

@yueq 感谢给了关键词,我查查

@aisk 写入的时候计算不合适,sum是要根据查询条件sum的,在写入的时候,查询条件是未知的
aisk
2013-06-01 12:00:00 +08:00
@refresh 嗯这就不合适了。。。
huangz
2013-06-01 12:24:29 +08:00
Redis 的有序集合(sorted set)结构可以很好地解决这类问题:http://redis.io/topics/data-types#sorted-sets

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/70819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX