BlueSky高性能时序数据库技术特点
朗坤时序数据库TrendDB是朗坤公司自主研发的一套大型通用分布式实时数据库管理软件,自主、可靠、受控、是TrendDB的重要特性
?功能完善的可视化工具软件,支持实时监视应用快速构建
?通过对实时数据库多维度管理,并提供开放式接口,支撑应用开发
?提供丰富的应用套件,实现对数据的管理
?实时数据库关键技术创新,实现高性能,扩展分析应用
BlueSky时间序列化数据库如何联合索引查询?
所以给定查询过滤条件 age=18 的过程就是先从 term index 找到 18 在 term dictionary 的大概位置,然后再从 term dictionary 里地找到 18 这个 term,然后得到一个 ting list 或者一个指向 ting list 位置的指针。然后再查询 gender= 女 的过程也是类似的。得出 age=18 AND gender= 女 就是把两个 ting list 做一个“与”的合并。
这个理论上的“与”合并的操作可不容易。对于 mysql 来说,如果你给 age 和 gender 两个字段都建立了索引,查询的时候只会选择其中 selective 的来用,然后另外一个条件是在遍历行的过程中在内存中计算之后过滤掉。那么要如何才能联合使用两个索引呢?有两种办法:使用 skip list 数据结构。同时遍历 gender 和 age 的 ting list,互相 skip;使用 bitset 数据结构,对 gender 和 age 两个 filter 分别求出 bitset,对两个 bitset 做 AN 操作。
BlueSky时间序列化数据库背景
BlueSky时间序列化数据库引擎在服务于集团内的客户时,根据集团业务特性做了很多针对性的优化。 然而在HiTSDB云产品的打磨过程中逐渐发现,很多针对性的优化很难在公有云上针对特定用户去实施。
于此同时, 在公有云客户使用BlueSky时间序列化数据库的过程中,发现了越来越多由于聚合查询导致的问题,比如: 返回数据点过多会出现栈溢出等错误,聚合点过多导致OOM, 或者无法完成聚合,实例完全卡死等等问题。这些问题主要由于原始的聚合引擎架构上的缺陷导致。
因此开发团队评估后决定围绕新的聚合引擎架构对BlueSky时间序列化数据库引擎进行升级,包含: 存储模型的改造,索引方式的升级,实现全新的流式聚合,数据迁移,性能评测。 本文主要围绕这5个方面进行梳理,***在“全新的流式聚合部分
序列化框架的对比
性能方面:
(1) 解析速度:protobuf<thrift<***ro
(2) 序列化后的数据大小:***ro<protobuf<thrift(compact)<thrift(binary)
非功能方面:
开源协议、schema表达、是否需要代码动态生成、是否自动生成RPC接口,是否自动生成RPC实现等,按照实际需求选择。
版权所有©2025 产品网