Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

       我们首先来看由第四部分确定的4种查询,这四种查询的主要区别在于特殊声明部分不同。我们计划先将所有查询共有的特殊声明部分抽象为SpecialClauseComponent,其中包括行数限制,行偏移量限制,是否需要包含空值列等信息。然后,再分别为这四种查询建立特殊声明子类,存储这些查询特有的信息。需要特别说明的是,AlignByDevice即按设备对齐查询是IoTDB为了满足用户对于关系表的需要设计的另一种结果集展示方式,其以时间和设备为主键,先按设备对齐,设备内再按时间对齐。该查询本质上可能是任意查询,差别仅在于结果集展示方式的不同。因此,我们计划将其作为特殊声明基类中的一个公共字段,可以与任何查询作笛卡尔积,而不是作为一个单独的特殊声明子类。Image Removed      

Image Added      

图2.6 特殊声明部分类继承结构图

       接着来看由第一部分确定的四种查询,这四种查询的主要区别自在于Select部分的对外表现不同,例如原始数据查询只包含时间序列路径,而聚合查询中还包含聚合函数。我们计划将原本分开的部分抽象为一个整体ResultColumn类,其可以根据Select部分有不同的子类表现形式,具体如下图所示(具体见宇荣部分):

...

       最后,我们得到的整体的类图,如下图所示:

Image RemovedImage Added

图2.9 逻辑查询计划设计总类图

...