【问题标题】:Cassandra multi row selectionCassandra 多行选择
【发布时间】:2012-12-31 21:23:56
【问题描述】:

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

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

P.S 我在我的项目中使用PHPCassa

【问题讨论】:

    标签: cassandra phpcassa


    【解决方案1】:

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

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

    【讨论】:

    • 好吧,再问一个问题,如果您说按行键查询很快,那么切片这些行会减慢速度吗?
    • 这是使用相对粗略的标记值作为键的一个很好的理由,然后您可以对列名进行切片(可能使用组合)以获得真正快速的查询。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      2) Multiget 已针对批量请求进行了优化,它可以节省您的网络跳数。(比如 1k 行将有 1k 次往返,因此它肯定会减少 999 次往返的时间)

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

      【讨论】:

        猜你喜欢
        • 2015-04-04
        • 2013-12-31
        • 2018-07-25
        • 1970-01-01
        • 2015-07-26
        • 2014-05-26
        • 2016-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多