【问题标题】:Cassandra vs Hbase for storing the events count for every userCassandra vs Hbase 用于存储每个用户的事件计数
【发布时间】:2015-04-02 19:23:38
【问题描述】:

我想知道我们是否应该在以下情况下使用 Hbase 或 Cassandra:

  1. 我需要对每个客户进行事件跟踪。哪个会存储一个 每天为一个客户排,第二天将创建另一个 同一客户的行。但是该行可能会更新很多 经常在一天内为客户。现在,当有相当 表上的频繁更新。

  2. 在频繁更新的情况下,数据将分成多个 SSTables。这将导致阅读时延迟增加。 cassandra 柜台后面的主要用途是什么?

  3. 另外,在hbase的情况下,存在单点的问题 失败。

【问题讨论】:

    标签: cassandra hbase cassandra-2.0


    【解决方案1】:
    1. Cassandra 似乎适合您的用例,因为它在写入方面非常高效。它看起来像经典的“时间序列”案例:对于每个客户日(=分区键),在分区中插入每个事件。
    2. 有几种策略可以提高更新和读取性能:插入新行而不是更新现有行,使用分层压缩而不是大小分层压缩,使用缓存...计数器通常用于计算点击次数、页面浏览量等统计信息...当失败发生时,它们可能不准确,并且效率低于 upsert。
    3. HBase 是主从式,将数据存储在 HDFS 中(性能较低),并且设置起来更复杂(HDFS、Zookeeper),除非您已经拥有 Hadoop 发行版。您可能会对这个video 感兴趣(跳过开头)。

    【讨论】:

    • 我知道 hbase 的设置以及它们所需的所有组件。但就性能而言,你能说出为什么 cassandra 会更好吗?另外,您建议我应该避免连续更新。而是去插入,对吗?
    • 在 Cassandra 上的写入性能更好,因为:首先 Cassandra 控制它的文件(更少的磁盘查找,机械同情)而 HBase 必须应对 HDFS,然后任何节点都可以写入数据,并且 master 不能是瓶颈,最后在写入时使用 CL ONE,您不会等待所有副本确认。在 Cassandra 中,写入路径非常简单。通过调整写入与读取的一致性,您可以从性能角度偏向其中一个。
    • 更新没问题,它们需要更多的压缩工作,而插入需要更多的磁盘空间:您可以选择,但需要权衡。
    • 但是我们设计表格的方式是用新的行替换旧的行。那么,cassandra 中仍然存在旧行并且会使用更多空间吗?
    • 旧的行状态被压缩删除。 compaction 的作用是将分散在不同 SSTable 上的行合并到一个 SSTable 中,同时删除标记为已删除的行。
    猜你喜欢
    • 2014-07-05
    • 2016-06-08
    • 2015-01-19
    • 1970-01-01
    • 2014-01-03
    • 2014-03-29
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    相关资源
    最近更新 更多