1

我听说在 cassandra 中使用多行选择很糟糕,因为对于每个行选择,它都会运行新查询,所以例如,如果我想一次获取 1000 行,它与一次运行 1000 个单独的查询相同,是吗真的?

如果说我在一分钟内有 1000 次页面浏览量,那么每次加载页面时继续选择大约 50 行会有多糟糕,它会严重减慢 cassandra 的速度吗?

PS我PHPCassa用于我的项目

4

3 回答 3

3

是的,运行 1000 行查询与运行 1000 行查询相同(如果您使用推荐的RandomPartitioner)。但是,我不会对此过分担心。在 Cassandra 中,通过键查询一行是一种非常常见、非常快速的操作。

至于你的第二个问题,很难提前说清楚。构建它并测试它。请注意,Cassandra 确实在内存缓存中使用,因此如果您查询相同的行,那么它们将缓存。

于 2012-12-29T19:16:29.350 回答
1

我们为 Cassandra 使用 Playorm,那里有一个“findAll”模式,它支持快速获取所有行。访问 https://github.com/deanhiller/playorm/wiki/Support-for-retrieving-many-entities-in-parallel了解更多详情。

于 2012-12-31T08:17:18.337 回答
1

1)我稍微调试了 Cassandra 代码库,根据我的观察,同时查询多行,cassandra 提供了 multiget() 功能,该功能也在 phpcassa 中继承。

2) Multiget 被优化以处理批处理请求,它节省了你的网络跳数。(比如 1k 行会有 1k 往返,所以它肯定减少了 999 往返的时间)

3) 关于 phpcassa 中的 multiget() 的更多信息:php cassa multiget()

于 2012-12-31T13:23:56.850 回答