Jim*_*oho 10 mongodb cassandra nosql
在sql术语中,我们存储的数据如下:
table events (
id
timestamp
dimension1
dimension2
dimension3
etc.
)
Run Code Online (Sandbox Code Playgroud)
所有维度值都是整数.这张桌子变得非常大.
我们想要对这样的查询进行愚蠢的快速读取:
SELECT dimension1, dimension2, COUNT(*)
FROM events
WHERE dimension8 = 'foo'
AND dimension9 = 'bar'
GROUP BY 1, 2
Run Code Online (Sandbox Code Playgroud)
我们想要快速写入,而不关心事务和一致性.我们关心最终的可用性和分区容差.
我在看"NoSQL"替代品.Casandra可以做我正在寻找的那种查询吗?通过阅读他们的文档,这并不是很明显......如果它可以做到这一点,那些类型的查询的性能是什么?
也在看MongoDB,但他们的"group()"功能在我能阅读时有很多限制(最多10,000行).
您是否有使用这些数据库的经验,您是否会建议将其作为上述问题的解决方案?
我应该考虑哪些其他数据库可以快速完成这些查询?
干杯,吉米
jbe*_*lis 12
"分组依赖"和"愚蠢的快速"不一起去.这就是那种野兽的本质......因此对Mongo集团运作的局限性; Cassandra本身甚至不支持它(虽然它通过Hadoop为Hive或Pig查询...但这些并不是非常愚蠢的快速).
像Twitter的Rainbird(使用Cassandra)进行实时分析的系统通过非规范化/预先计算计数来实现:http://www.slideshare.net/kevinweil/rainbird-realtime-analytics-at-twitter-strata-2011
也在看MongoDB,但他们的"group()"功能在我能阅读时有很多限制(最多10,000行).
为了澄清,这是返回的10,000行.在您的示例中,这将适用于最多10,000个组合dimension1/dimension2.如果那个太大,那么你也可以使用较慢的Map/Reduce.请注意,如果您运行的查询结果超过10k,则最好使用Map/Reduce并保存此数据.10k是一个大的查询结果,否则只是"扔掉".
您是否有使用这些数据库的经验,您是否会建议将其作为上述问题的解决方案?
许多人实际上使用MongoDB来"实时"地进行这种类型的汇总,但他们使用"计数器"而不是"聚合"来完成.它们不是"滚动"详细数据,而是进行常规插入,然后它们会增加一些计数器.
特别是,使用像&这样的原子修饰符在单个请求中以原子方式更新数据.$inc$push
现在看看有人这样做的蜂鸟.还有一个由MongoDB支持的开源事件记录系统:Graylog2.ServerDensity还执行MongoDB支持的服务器事件日志记录.
查看这些内容可能会为您想要执行的日志记录类型提供一些灵感.
| 归档时间: |
|
| 查看次数: |
6268 次 |
| 最近记录: |