28. ClustrixDB 评估模型

时间:2021-12-20 07:43:15

 

本节描述如何在数据库中计算查询。在ClustrixDB中,我们跨节点切片数据,然后将查询发送到数据。这是数据库的基本原则之一,它允许随着添加更多节点而几乎线性地扩展。

有关如何分布数据的概念,请参阅数据分布,因为本页假定您理解这些概念。需要记住的主要概念是,表和索引是跨节点划分的,并且每个表和索引都有自己的分布,这使我们能够在给定的主列下精确地知道数据的位置。

 

 

并行查询求值(通过示例)

 

ClustrixDB对简单查询使用并行查询求值,对分析查询(类似于柱状存储)使用大规模并行处理(MPP)。

最好看一些示例来理解查询求值以及为什么查询(几乎)是使用ClustrixDB线性扩展的。让我们从一个SQL模式开始,并通过一些示例进行讨论。

sql> CREATE TABLE bundler (
     id         INT      default NULL auto_increment,
     name       char(60) default NULL,
     PRIMARY KEY (id)
);

sql> CREATE TABLE donation (
     id         INT default NULL auto_increment,
     bundler_id INT,
     amount     DOUBLE,
     PRIMARY KEY (id),
     KEY bundler_key (bundler_id, amount)  
);

现在,让我们看看这种情况下的数据分布。我们有三种表达方式:

  • _id_primary_bundler
  • _id_primary_donation
  • _bundler_key_donation

前两个是基于它们的id字段分布的。最后一个是基于bundler_id的。请注意,由于这些是散列分布的,所以具有相同键值的所有行都指向相同的节点。

 

扩展简单查询

在这里,我们将简单的查询定义为点选择和插入。让我们考虑一个简单的读(一个简单的写遵循相同的路径):

sql> SELECT id, amount FROM donation WHERE id = 15; 

数据将从排序副本中读取。它可以驻留在同一个节点上,也可以只需要一个跳转。下图展示了这两种情况。随着数据集大小和节点数量的增加,一个查询所需的跳数(0或1)不会改变。这允许读写的线性可伸缩性。另外,如果有两个或多个副本(通常是这种情况),则至少有一个写操作跃点(因为两个副本不能驻留在同一个节点上)。

28. ClustrixDB 评估模型