gpt4 book ai didi

cassandra - 选择 Cassandra 中的所有性能

转载 作者:行者123 更新时间:2023-12-03 08:21:51 25 4
gpt4 key购买 nike

我目前正在使用 DB2 并计划使用 cassandra,因为据我所知,cassandra 的读取性能高于 RDBMS。

也许这是一个愚蠢的问题,但我进行了实验来比较 DB2 和 Cassandra 之间的读取性能。

使用 500 万条记录和相同的表架构进行测试。通过查询SELECT * FROM customer。 DB2 使用 25-30 秒,Cassandra 使用 40-50 秒。

但是使用where条件进行查询SELECT * FROM customer WHERE cusId IN (100,200,300,400,500) DB2使用2-3s,Cassandra使用3-5ms .

为什么在 where 条件下 Cassandra 比 DB2 更快?所以我无法用 SELECT * FROM customer 来证明哪个数据库更大,对吗?

仅供引用。

Cassandra:RF=3 和 CL=1,有 3 个节点,每个节点在 3 台计算机上运行 (VM-Ubuntu)

DB2:在 Windows 上运行

表架构:

cusId int PRIMARY KEY, cusName varchar

最佳答案

如果您看看 Cassandra 擅长解决的问题类型,那么未绑定(bind)(“全选”)查询糟糕的原因就变得非常明显。

Cassandra 被设计为一个分布式数据库。在许多 Cassandra 存储模式中,节点数量大于复制因子(即,并非所有节点都包含所有数据)。因此,限制网络跃点数量对于高性能查询建模至关重要。 Cassandra 在特定查询(利用分区/聚类键结构)方面表现非常好,因为它可以快速定位主要负责数据的节点。

未绑定(bind)查询(又称多键查询)会产生额外的网络时间,因为需要协调器节点。因此,一个节点充当协调器,查询所有其他节点,整理数据并返回结果集。指定 WHERE 子句(至少带有分区键)并使用“ token 感知”负载平衡策略时,效果良好,原因有二:

  1. 不需要协调器节点。
  2. 查询主要负责范围的节点,并在单个网络跃点中返回结果集。

tl;博士;

使用未绑定(bind)查询查询 Cassandra 会导致产生大量额外的处理和网络时间,而如果使用 WHERE 子句指定查询,则通常不需要这样做。/p>

关于cassandra - 选择 Cassandra 中的所有性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com