CQL概念

来源:互联网 发布:unity3d虚拟现实 编辑:程序博客网 时间:2024/05/17 23:37

1. CQL概念:CQL(continuous query language)是一个基于SQL的声明式语言, 它用于在流(streams)和可更新关系(updatable relation)上进行可持续查询。

 

2. CQL 定义了两种数据类型语言:stream 和 relation。CQL中的relation与传统relation相比,CQL中的relation增加了时间概念。

 

3. CQL 定义了三种操作类型:stream-to-relation,relation-to-relation,relation-to-stream。

  • stream-to-relation: 由流产生关系。CQL使用从SQL-99派生出来的窗口特定语言去处理s-r操作。其中SQL-99是一个SQL的标准。目前所有在CQL上的s-r操作都给予滑动窗口的概念。CQL中的滑动窗口的操作分为三类:time-based sliding window(基于时间的滑动窗口),tuple-based window(基于行的滑动窗口)和partitioned window(基于属性划分的滑动窗口)。其中partitioned window,即根据属性A1,A2...Ak将流S逻辑划分成几个子流,类似于SQL中的Group By。
  • relation-to-relation: 由关系产生关系。CQL使用SQL来表示r-r操作。但从技术上讲,CQL不是直接导入现有的传统关系操作,因为CQL中的关系增加了时间概念。所以,CQL在两种关系间做了映射。若Or表示传统关系R1,R2...Rn上的操作,则CQL上的关系操作Oc则可表示为,在时间t产生的关系R(t)= Or(R1(t),R1(t),...Rn(t))
  • relation-to-stream: 由关系产生流。CQL定义了三种具体的r-s操作,分别是Istream,Dsream和Rstream。Istream(insert stream),Dsream(delete stream),Rstream(relation stream)

4. CQL 处理过程举例:

    s-s:由一个流产生一个新流:

  1.     将流转化为关系 turn the stream into a relation
  2.     处理该关系 perform a relation filter
  3.     将关系结果转换回流形式 turn the relation back into a stream 

    从该例中可以看出CQL充分利用SQL操作,利用流和关系之间的转化来解决在流和关系上进行可持续查询的问题。

 

5. 一般定义可以可持续查询语言的步骤:

  1. 找到一个关系查询语言。Take a relational query language
  2. 将对关系的引用替换为对流的引用。 Replace references to relations with references to streams
  3. 注册流处理器的查询。 register the query with the stream processor
  4. 等待结果。 wait the answers to arrive

  注意聚合,子查询,窗口机制,流与关系的混合查询等这些较复杂问题。