#访问约束
访问约束是YashanDB特有的一种关系数据结构,基于有界计算理论的访问约束模型(AC,Access Constraint)实现:通过在数据源上建立AC,实现大数据变小的模型变换。在查询时,通过访问AC数据,缩小查询代价和提升查询速度。
有界计算理论的基本思想是给定一个函数f(x),参数x表示大数据集,多数计算不需要访问全部的x、只需要取x的一小部分就能得到函数f(x)的精确解。有界计算理论的研究目标是如何根据不同的函数f(x),根据语义找到所需的x的那一小部分。
YashanDB的访问约束结构是按照用户创建访问约束时指定的函数f(x),从大数据集中提取与f(x)结果相关的数据,将其存储在存储空间中。用户对于f(x)的请求,从原来的遍历数据集并经过大量计算得到f(x)转变为查询访问约束后通过少量计算得到f(x)。
例如航空公司的数据集中有所有航空公司的所有航班历史飞行数据,如果现在用户需要查询航班延误次数最多的航空公司,则需要对大量的数据进行聚合。针对这一场景,可以建访问约束,只提取其中航班延误的数据,同时将数据中的重复项做聚合,例如城市、航班号等数据可能存在大量重复,可以通过合并重复值,再加一个引用计数来进行数据压缩,最终将一个海量的数据集大幅度缩小,从而达到查询加速的目的。
访问约束的作用包括:
数据存储变小:通过数据语义变换,实现数据的去重或聚合。
数据计算变小:基于有界计算、预计算将计算的范围变小。
代价有界确定:对于有明确的数据约束关系,可以基于有界算法确定计算的边界,对于计算所需的资源进行估算。
访问约束以对用户透明的方式实现查询加速。
源数据发生变化时,会动态刷新AC数据,保持数据一致性。