Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mapreduce 如何评估卡桑德拉的表现?_Mapreduce_Cassandra_Cassandra 2.0_Query Performance - Fatal编程技术网

Mapreduce 如何评估卡桑德拉的表现?

Mapreduce 如何评估卡桑德拉的表现?,mapreduce,cassandra,cassandra-2.0,query-performance,Mapreduce,Cassandra,Cassandra 2.0,Query Performance,我是新来卡桑德拉的。我在Cassandra数据库上学习并进行了一些测试,我发现了一些问题: 鉴于Cassandra鼓励数据的非规范化和重复,当多个列族中的数据仅从其中一个列族更新时,如何保证数据一致性 表中的列数会影响查询性能吗 确实,查询返回的记录数越多,其性能就越差 在Cassandra中使用mapreduce在什么情况下有用 鉴于Cassandra鼓励非规范化和复制 数据,当存在于多个列族中的数据是 仅从其中一个列族更新数据一致性 保证 这正是卡桑德拉引入的原因。即使使用批处理,您仍然处于

我是新来卡桑德拉的。我在Cassandra数据库上学习并进行了一些测试,我发现了一些问题:

  • 鉴于Cassandra鼓励数据的非规范化和重复,当多个列族中的数据仅从其中一个列族更新时,如何保证数据一致性

  • 表中的列数会影响查询性能吗

  • 确实,查询返回的记录数越多,其性能就越差

  • 在Cassandra中使用mapreduce在什么情况下有用

  • 鉴于Cassandra鼓励非规范化和复制
    数据,当存在于多个列族中的数据是
    仅从其中一个列族更新数据一致性 保证

    这正是卡桑德拉引入的原因。即使使用批处理,您仍然处于分布式系统中,在建模数据时也需要这样考虑。既然你没有具体的问题,我们就继续从理论上讲

    表中的列数会影响查询性能吗

    与其说是列的数量,不如说是每个分区的大小。分区越大,卡桑德拉的一些内部机制(如压缩)就越难工作。如果您不熟悉数据是如何存储在磁盘上的,我建议您看看本教程

    确实,查询返回的记录数越多, 它的性能更差

    这是物理。更多数据=更多IO、带宽、GC要收集的对象等。鉴于Cassandra是作为事务数据存储构建的,它不是为超大数据返回/全表扫描构建的(真正分布式的系统很少)。上面链接的教程很好地解释了这一点

    在Cassandra中使用mapreduce在什么情况下有用

    如果您对在Cassandra上运行分析感兴趣,我建议您使用Spark,因为在商业和开源级别上,Spark和Cassandra的关系都有很多优化工作。当你们对Cassandra的工作方式感到满意时,若你们对Cassandra有兴趣的话,我建议你们看看这个教程。它谈到了商业产品,但概念/教程也将适用于开放源码

  • 如果您的意思是如何在Cassandra中支持非规范化数据的一致性,那么答案是-仅使用自定义逻辑。但一旦Cassandra不支持事务(在关系数据库中的事务,而不是原子操作的意义上),这将是一项相当困难的任务。实际上,如果您需要相关数据处于强一致状态,那么应该使用关系数据库
  • 它在某种程度上,但并没有太多的考虑。
  • 这可能取决于查询本身,但在一般情况下,性能会下降,因为需要通过网络传输更多数据
  • 例如,当您想要执行完整表扫描时,将MapReduce与Cassandra结合使用可能会很有用。这与查询未索引字段时关系数据库所做的非常相似。他们对字段值进行全扫描比较。不过,MapReduce逻辑可能更复杂。例如,出于分析目的
    关于第一个问题,如果我有两个表,A和B,具有相同的数据和相同的列,只是主键不同。如果我更改表a中某一行的值,则此更改可能也会在表B中传播?嗨,彼得-还没有。在我看到的一些JIRA的基础上,这些方面有了一些发展,但就目前而言,必须同时(从应用程序)进行更新,以保持表之间的一致性。