时序数据库:专门面向时序数据进行优化的数据库管理系统

时序数据库是一种专门面向时序数据进行优化的数据库管理系统。

主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据,具有下面特征之一的时序型特征的数据可以考虑使用:

  • 大量高性能的写入;
  • 聚合实时分析;
  • 数据实时可视化分析;
  • 数据量巨大,需要压缩存储;
  • 历史数据需要高效地删除;

2022年12月时序数据库排行榜
DB-Engines Ranking - popularity ranking of time Series DBMS

业界常见时序数据库

1、 Influxdb

在 InfluxDB Times Series Data Platform | InfluxData 可以看到有三个产品:

  • InfluxDB Cloud 云模式。
  • InfluxDB OSS 独立部署集群版。
  • InfluxDB OSS 独立部署单机版,开源。https://github.com/influxdata/influxdb 官方数据单机性能27W,
    star 24.6K


Introduction to InfluxDB | Time to Awesome

TICK 架构 是 InfluxData 平台的组件的集合首字母缩写,该集合包括 Telegraf、InfluxDB、Chronograf 和 Kapacitor。

TICK 架构以及各组件分工情况如图所示:

目前业界大厂(阿里、360...)的做法基本上是基于influxdb做二次开发, 实现分布式的集群方案。
部分互联网公司会基于proxy方案实现高可用和容灾能力

相关开源的:

2、Kdb+

1998年,Kx Systems(Make Data Driven Decisions 100X Faster At 1/10th The Cost | KX)发布了kdb。
Kx Systems在2003年发布了64位版本的kdb+。
它是用q语言写的。Kdb+是为处理金融、物联网等领域的大量时间序列数据而构建的。

kdb+时间序列数据库是世界上最小(只有几十KB)和最快的。它的单一集成平台使其非常有效地分析超大型数据集,并加快了基于我们的高性能核心技术构建的Kx解决方案的开发和部署(官方描述)。

特点:

  1. 内存数据库(In Memory Database),将数据放置在内存中
  2. 解释型语言(Interpreted)
  3. 有序列表(Ordered Lists), 实现高速处理数据的关键,区别于传统数据库。
  4. 赋值顺序(Evaluation Order)
  5. 面向表编程(Table Oriented)
  6. 面向列编程(Column Oriented)
  7. 强类型(Types)

3、Graphite

根据官方文档(Overview — Graphite 1.2.0 documentation),它只做两件事:

  • 存储数字时间序列数据
  • 呈现此数据的图形

4、Prometheus

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。

根据其官方文档(https://github.com/prometheus/prometheus/blob/master/README.md),Prometheus因具备如下的特征而得以将自己与其他监控系统区别开来:

  • 多维数据模型,其时序数据由指标名称和键/值维度定义;
  • 灵活的查询语言;
  • 自治的单服务器节点,不依赖于分布式存储;
  • 通过HTTP之上的pull model进行数据收集;
  • 时间序列数据推通过中介网关传送到其他数据目的地和存储介质;
  • 服务发现和静态配置来发现目标节点;
  • 对图表和仪表板的多种支持模式;
  • 垂直和水平上支持Federation。

开源 https://github.com/prometheus/prometheus
star 45.8K

5、 TimescaleDB

Time-series data simplified | Timescale

  1. 基于时序优化
  2. 自动分片(自动按时间、空间分片(chunk)),自动调整 CHUNK 的大小
  3. 全 SQL 接口
  4. 支持垂直于横向扩展
  5. 支持时间维度、空间维度自动分区。空间维度指属性字段(例如传感器 ID,用户 ID 等)
  6. 支持多个 SERVER,多个 CHUNK 的并行查询。分区在 TimescaleDB 中被称为 chunk。
  7. 内部写优化(批量提交、内存索引、事务支持、数据倒灌)。
    内存索引,因为 chunk size 比较适中,所以索引基本上都不会被交换出去,写性能比较好。
    数据倒灌,因为有些传感器的数据可能写入延迟,导致需要写以前的 chunk,timescaleDB 允许这样的事情发生(可配置)。
  8. 利用已有的 PostgreSQL 特性(支持 GIS,JOIN 等),方便的管理(流复制、PITR)

6、DolphinDB

DolphinDB是由浙江智臾科技有限公司研发的一款高性能分布式时序数据库

7、Monarch

来自Google的闭源内存时序数据库,全局配置,靠分zone来实现大规模的监控管理。


参看:时序数据库 | Monarch: 谷歌的全球级内存时序数据库

8、beringei

来自facebook的开源内存时序数据库。
https://github.com/facebookarchive/beringei
star 3.1K

9、 OpenTSDB

来自 SoundCloud 开源
https://github.com/OpenTSDB/opentsdb
star 4.8K

基于Hbase数据库作为底层存储,向上封装自己的逻辑层和对外接口层。这种架构可以充分利用Hbase的特性实现了数据的高可用和较好的写入性能。但相比Influxdb,OpenTSDB数据栈较长,在读写性能和数据压缩方面都还有进一步优化的空间。 整体架构如下:

10、 涛思数据 TDengine

来自 涛思 开源
https://github.com/taosdata/TDengine
star 20.2K

一个采集点是一个表,根据表维度做分片,根据时间维度做分区。

每个物理节点上可有多个分片,一个分片的副本分布在不同的机器上。

meta data 协调分片,以及存储存储表、超级表、节点信息。

11、阿里云 时序数据库 TSDB

来自 阿里云 闭源
时间序列数据库 TSDB-阿里云帮助中心
自研+提供influx版本


和官方集群版描述的一样,任意数据节点可以承接流量然后通过meta节点来协调,转发部分请求到其他的数据节点,

最后汇总结果信息,将最终结果返回给client。

12、 腾讯云 CTSDB

来自 腾讯云 闭源 基于influx版本自研
时序数据库CTSDB_时序数据存储_时序数据库实例 _腾讯云

和官方集群版描述的一样,任意数据节点可以承接流量然后通过meta节点来协调,转发部分请求到其他的数据节点,最后汇总结果信息,将最终结果返回给client。

13、 GaussDB(for Influx)

来自 华为云 闭源

时序数据库_GaussDB for Influx_数据库-华为云

基于influx版本自研

openGemini(计划开源)

14、 Apache Druid

来自 Apache 开源, 更侧重于多元分析
https://github.com/apache/druid
star 12.2K

15、 饿了么 LinDB


broker更像一个proxy,storage是数据节点,并且通过etcd作为媒介进行沟通,broker收到请求后根据分片配置。

生成执行计划,然后在etcd里面生成查询任务,数据节点watch etcd的task相关的key进行查询并更新task状态机。

整个task的执行都是etcd进行异步处理的,有点儿像k8s的调度策略,broker最终汇总结果返回给client。

InfluxDB 更适合的用途:

  • 需要 logging 监控;
  • 需要精细的时间尺度;
  • 需要 TICK 生态的易用性;

LinDB 更适合的用途:

  • 需要查询速度更快;
  • 需要解决海量数据的时序场景;
  • 对时序数据时间精度不敏感,比如监控领域;

总结

Influxdb在各个大云厂商里面已经被广泛使用,并且社区活跃度比较高,产品的稳定性经过了充分的验证,值得推荐。
主要风险为,influxdb官方只开源单机版本,分布式版本是闭源的,各大厂商都自行扩展了集群版本。

 

https://www.cnblogs.com/ghj1976/p/chang-jian-de-shi-xu-shu-ju-ku.html 

时序数据库_Nice night的博客-CSDN博客 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 仓储数据库的主体包括以下几种: 1. 关系型数据库:如 Oracle、MySQL 和 Microsoft SQL Server。 2. NoSQL 数据库:如 MongoDB、Cassandra 和 Couchbase。 3. 文档数据库:如 MongoDB 和 Couchbase。 4. 图形数据库:如 Neo4j 和 Amazon Neptune。 5. 时序数据库:如 InfluxDB 和 TimescaleDB。 6. 搜索引擎:如 Elasticsearch、Solr 和 Algolia。 7. 数据仓库:如 Amazon Redshift、Google BigQuery 和 Snowflake。 这些数据库的选择取决于您的数据类型、处理要求和业务需求。 ### 回答2: 仓储数据库的主体包括以下几个方面: 1. 数据库服务器:作为仓储数据库的核心主体,负责管理和存储仓储相关的数据数据库服务器提供高效、可靠的数据存储和处理能力,以支持仓储系统的各种业务运作。 2. 数据表:数据库中的数据以表格的形式进行组织和存储,每个数据表都由一系列的列和行组成。数据表用于存储和管理各种仓储相关的信息,例如物料清单、库存记录、订单信息等。 3. 数据模型:数据模型是仓储数据库的逻辑架构,用于描述和定义数据库数据的结构和关系。常见的数据模型有关系型模型(如E-R模型、关系模型)和面向对象模型(如UML)等,通过数据模型可以确立数据表之间的关联和约束。 4. 数据字典:数据字典是仓储数据库中的元数据,用于描述和定义数据库中各种数据元素的属性和意义。数据字典包括数据表的结构、字段的定义、数据类型和约束等信息,是数据库设计和开发过程中的重要参考资料。 5. 数据访问接口:为了方便用户对仓储数据库中的数据进行操作和查询,需要提供相应的数据访问接口,例如SQL(Structured Query Language)等。数据访问接口提供了一组标准化的命令和语法,以便用户可以通过编程或查询语句来访问和操作数据库中的数据。 6. 数据备份与恢复:为了防止数据丢失和故障,需要设置定期的数据备份和恢复机制。数据备份可以将数据库中的数据和日志文件复制到其他存储媒介,以便在数据丢失或系统故障时进行数据恢复和重建。 总之,仓储数据库的主体由数据库服务器、数据表、数据模型、数据字典、数据访问接口和数据备份与恢复等组成,这些主体协同工作,确保仓储系统的数据管理和查询功能正常运行。 ### 回答3: 仓储数据库的主体包括以下几个方面: 1. 数据库管理系统(Database Management System,简称DBMS):仓储数据库的主体是DBMS。DBMS是一个软件系统,用于管理和组织仓储数据库中的数据。它提供了数据存储、管理、检索和更新等基本功能,同时还支持事务处理、数据备份与恢复、数据安全性和完整性等高级功能。 2. 数据库服务器(Database Server):数据库服务器是仓储数据库的核心服务器,负责处理用户的请求和操作,并提供对数据库的访问。它可以是一个物理服务器或者一个虚拟服务器,通过网络连接与客户端进行通信。 3. 数据库实例(Database Instance):数据库实例是指在内存中加载数据库的内容,同时提供对数据库的访问和管理。每个数据库可以有一个或多个实例,每个实例独立运行,互相不干扰。 4. 数据库(Database):数据库是仓储数据库中的存储单元,用于存储和组织数据。一个仓储数据库可以包含一个或多个数据库,每个数据库可以包含多个表,表中存储着具体的数据。 5. 数据表(Table):数据表是数据库的组成部分,用于存储具有相同结构的数据数据表由多个字段(Field)组成,每个字段对应着一个具体的数据类型和含义。通过数据表,可以进行数据的增删改查等操作。 总之,仓储数据库的主体包括数据库管理系统数据库服务器、数据库实例、数据库数据表等。这些组成部分共同协作,实现对仓储数据的有效管理和利用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值