云数据库GeminiDB Influx接口,更好用的时序数据库

GeminiDB Influx接口是一款基于计算存储分离架构。在云计算平台高性能、高可用、高可靠、高安全、可弹性伸缩的基础上,提供了一键部署、快速备份恢复、计算存储独立扩容、监控告警等服务能力。广泛应用于资源监控,业务监控分析,物联网设备实时监控,工业生产监控,生产质量评估和故障回溯等。提供大并发的时序数据读写,压缩存储和类SQL查询,并且支持多维聚合计算和数据可视化分析能力。

GeminiDB Influx接口,弹性扩展、超高性能,全时序场景支持的时序数据库

  • 极致性能

    海量时间线,写入性能稳定,大幅超出开源实现,支持每天万亿条监控指标写入,写入性能线性扩展度 > 80%,相同集群规模,写入性能是开源的2倍以上


    技术优势

    大规模并行分析架构,所有节点并行写入,查询语句在多节点及多核并发执行,向量化查询引擎,大数据量下查询性能更好。


    海量时间线索引管理,提高时间线查找的内存命中率,根据内存负载,动态调整GC频率,加快内存空间回收。


    数据库多副本复制卸载到分布式存储,降低计算节点到存储节点的网络流量。


  • 海量数据分析

    多维条件组合查询,快速获取目标数据,时序洞察使数据分析更加智能,数据可视化更加多样,赋能全业务场景。


    技术优势

    支持多维倒排索引及存储摘要索引,轻松高效进行多维条件组合查询,目标数据极速获取。


    时序分析异常检测,支持多种时序异常类型的检测告警,异常可视化直观展示,方便运维人员识别异常,告警策略设置简单,无需机器学习知识背景。


    采用多维时序预测算法,利用多指标间关联关系提高预测准确度,相比传统预测算法准确度提升50%,训练及预测时间从几小时缩短到几分钟,可应用于实时预测场景


  • 低成本存储

    自适应压缩算法、自动冷热分级存储,相同数据量下存储成本仅有关系型数据库的1/10


    技术优势

    采用列式存储,数据更加聚焦,搭配自适应压缩算法,大大提高数据压缩比


    冷热分级存储,即保证“热”数据高效访问,又节约“冷”数据存储成本


  • 极致弹性

    传统数据库扩容需要迁移大量数据,需要小时~天级才能完成扩容及数据重均衡。


    技术优势

    采用Share Nothing + Share Storage架构,多个无状态的计算节点,共享一个有状态的分布式存储引擎。


    集群动态负载均衡,由内部proxy集群提供数据的动态负载均衡,计算层资源利用率高。


    一键下发任务,计算资源分钟级扩容,存储空间秒级扩容。


云数据库GeminiDB Influx接口5大特性

采用云原生存储与计算分离架构,具有支持亿级时间线、极致写入性能、低存储成本、高性能多维聚合查询和极致弹性扩缩容等5大特性。

支持亿级时间线

在时序数据库系统中,存在大量并发查询和写入操作,合理控制内存的使用量显得十分重要。

开源时序数据库在写入数据的时间线增加到千万级别时,进程会因内存耗尽而OOM退出。为了避免写入海量时间线数据导致内存资源被耗尽,GeminiDB Influx接口做了如下优化:

1、在内存分配上,大量使用内存池复用技术,减少临时对象内存申请,降低内存碎片。


2、在内存回收上,实现算法根据内存负载,动态调整GC频率,加快内存空间回收。


3、在单查询上,实行Quota控制,避免单查询耗尽内存。


4、在缓存使用上,针对不同节点规格提供不同的最优配置。


经过改进,在海量时间线下,系统写入性能保持稳定,大幅超出开源实现。对于涉及海量时间线的聚合查询,如高散列聚合查询,查询性能提升更为显著。

超高写入性能

相比单机模式,集群模式可以将写入负载分散到集群中各个计算节点上,从而支持更大规模的数据写入。GeminiDB Influx接口支持每天万亿条数据写入,在工程实现上进行了以下优化:

1、时序数据按照时间线做Hash Partition,利用所有节点并行写入,充分发挥集群优势。


2、Shard节点采用针对写场景优化的LSM-Tree布局,写WAL后确保日志持久化,再写入内存Buffer即可返回。


3、数据库多副本复制卸载到分布式存储,降低计算节点到存储节点的网络流量。


4、在大规模写入场景下,GeminiDB Influx接口的写入性能线性扩展度大于80%。

低存储成本

GeminiDB Influx接口对数据采用列式存储,相同类型的数据被集中存储,更有利于数据压缩。采用自研的时序数据自适应压缩算法,在压缩前对数据进行抽样分析,根据数据量、数据分布以及数据类型选择最合适的数据压缩算法。在压缩算法上,相比原生的InfluxDB,重点针对Float、String、Timestamp这三种数据类型进行了优化和改进。

Float数据类型: 对Gorilla压缩算法进行了优化,将可以无损转换的数值转为整数,再根据数据特点,选择最合适的数据压缩算法。


String数据类型:采用了压缩效率更好的ZSTD压缩算法,并根据待压缩数据的Length使用不同Level的编码方法。


Timestamp数据类型:采用差量压缩方法,最后还针对数据文件内的Timestamp进行相似性压缩,进一步降低时序数据存储成本。

高性能多维聚合查询

在提升聚合查询整体性能方面,GeminiDB Influx接口 做了如下优化:

采用MPP架构:一条查询语句可以在多节点及多核并发执行。


向量化查询引擎:在查询结果数据量很大时,传统的火山模型每次迭代返回一条数据,存在过多的开销导致性能瓶颈。GaussDB(for Influx)内部实现了向量化查询引擎,每次迭代批量返回数据,大大减少了额外开销。


增量聚合引擎:基于滑动窗口的聚合查询,大部分从聚合结果缓存中直接命中,仅需要聚合增量数据部分即可。


多维倒排索引:支持多维多条件组合查询,避免大量Scan数据。


存储摘要索引:加快数据查询中过滤无关数据。

分钟级弹性扩缩容

在时序数据库的运行过程中,随着业务量的增加,常常需要对数据库进行在线扩容,以满足业务的要求。传统数据库中的数据存储在本地,扩容后往往需要迁移数据。当数据量达到一定规模时,数据迁移所耗费的时间往往按天计算,给运维带来了很大的困难。


如图所示,每个Database逻辑上由多个Partition组成,每个Partition独立存储,且都可自描述。所有Partition数据都存储在分布式共享存储上,数据库Shard节点和数据没有物理绑定关系。扩容时首先offload源节点Partition,再在目标节点assign即可。

时序数据库GeminiDB Influx接口常见问题

时序数据库GeminiDB Influx接口必读文档