腾讯云时序数据库(TencentDB for CTSDB)是一种高效、安全、易用的云上时序数据存储服务。特别适用于物联网、大数据和互联网监控等拥有海量时序数据的场景。您可以根据实际业务需求快速创建CTSDB 实例,并随着业务变化实时线性扩展实例。CTSDB 为您提供高性能的数据读写服务,满足您业务快速发展的需求。使用 CTSDB 不仅可以降低您的数据存储成本也能简化日常运维工作。 

腾讯云时序数据库 CTSDB 是一种云上分布式、可线性扩展的时序数据库。CTSDB 处理性能极高,提供 RESTful API 接口供您写入和查询数据。提供了Rollup 接口,聚合历史数据,降低存储成本。您可以通过 API 和控制台界面两种方式聚合分析数据,方便快捷。系统采用分布式部署方式,安全可靠。CTSDB 提供多种监控指标,让您随时监控集群的健康状态。内测阶段,单个创建者账号能申请一个免费实例。产品正式上线后将为您提供配置多样的实例和灵活的付费方式。

功能

CTSDB 能够提供高效读写、高压缩比存储、强大的聚合分析能力、实例监控以及数据查询结果可视化等功能。

数据写入

支持通过简单一致的 RESTful API 方式高并发写入时间序列数据。

聚合分析

支持超复杂的聚合分析能力。包括普通的聚合 avg、min、max、count、sum 和复杂的模糊聚合Cardinality 和 percentiles。

查询结果可视化

CTSDB 支持通过 HTTP 协议访问和控制台查询两种方式进行数据的查询操作。控制台的数据查询功能支持多种聚合方式下的数据可视化展现。

实例监控

我们对实例进行多维度的监控分析和图形化展现,使用户可以实时获取实例的健康度。

时序数据库 CTSDB 是腾讯云推出的一款分布式、可扩展、支持近实时数据搜索与分析的时序数据库。该数据库为非关系型数据库,提供高效读写、低成本存储、强大的聚合分析能力、实例监控以及数据查询结果可视化等功能。整个系统采用多节点多副本的部署方式,有效保证了数据的高可用性和安全性。

CTSDB 在处理海量时序数据时优势如下:

  • 高并发写入:数据先写入内存,再周期性的 Dump 为不可变的文件存储。且可以通过批量写入数据,降低网络开销。

  • 低成本存储:通过数据上卷(Rollup),对历史数据做聚合,节省存储空间。同时利用合理的编码压缩算法,提高数据压缩比。

  • 强大的聚合分析能力:支持丰富的聚合查询方式,不仅支持 avg、min、max 等常用的聚合方式,还支持 Group By、区间、Geo、嵌套等复杂聚合分析。

高性能

支持批量写入、高并发查询,通过集群扩展,可线性提升系统性能。

易使用

丰富的数据类型,兼容 Elasticsearch 常用的 API 接口。控制台提供丰富的数据管理和运维功能,操作简单。

高可靠

支持多副本,分布式部署,数据自动均衡。

低成本

通过上卷表 Rollup 提高压缩比,降低存储成本。

强大的聚合分析能力

支持 max、min、avg、percentile、sum、count 等常用聚合。复杂的脚本聚合、时间区间聚合、GEO 聚合和嵌套聚合等。

性能概述

时序数据库 CTSDB 由节点组成,单节点的规格和节点数量决定了 CTSDB 实例的处理能力。理论上:
CTSDB 实例读写并发性能 = ∑(某节点的性能 * 节点数量)
因此,节点规格越高,节点数量越多,实例的读写能力越强,而单节点的性能主要跟 CPU 和内存配置相关。实例的具体性能随着单节点配置、节点数量和写入字段数量等而改变。
本文档给出的测试数据是在指定参数下的参考值,仅作为选型参考依据,实际情况需要业务真实的测试。

性能测试

测试工具

下载测试工具

测试步骤

1. 建表
命令如下:

#建立 metric(注意这里 tags 里只有一个 host,但当写入的数据有新的字段时,这些字段将自动作为 tag,放入 tags 里面)
curl -u {user}:{passwd} -XPUT {ctsdb_ip_port}/_metric/testa10?pretty -d '{
"tags": {"http_code": "string"
},"fields": {"count1":"long","count2":"long","count3":"long","count4":"long","count5":"long","count6":"long","count7":"long","count8":"long","count9":"long","count10":"long"
},"time": {
"name": "timestamp","format": "epoch_second"
},"options": {
"expire_day": -1,
"refresh_interval": "10s",
"number_of_shards": 3,
"number_of_replicas": 1,
"rolling_period": -1
}
}'# 查询metric
curl {ctsdb_ip_port}/_metric/testa10?pretty# 删除metric(同时会删除对应的所有数据)
curl -XDELETE{ctsdb_ip_port}/_metric/testa10
说明:

其中 {ctsdb_ip_port} 为时序数据库 CTSDB 访问端口,{user} 和 {passwd} 分别为用户名和密码。

2. 写入数据
使用脚本批量写入,脚本下载链接,参数简介如下:

 - db_url string
实例的 vip 和 Vport (格式如 10.02.36.89:9200)
- metric_name string
需要写入的 metric 名称
- data_num int
一个客户端一次写入的记录数量
- threads_nmb int
写入并发数
- counts int
一个记录中 filed 的数量

运行脚本前请修改脚本第18行的 userpwd。

使用样例:

python testa.py 10.0.1.10:9200 testa10 4000 9 10

脚本输出:
分为两部分,params:选项参数,results:最终结果。

-------------- params --------------
put_url http://10.0.1.10:9200/testa10/doc/_bulk
dataNum: 4000
threads_nmb: 9
counts: 10
-------------- results --------------
start all threads 2018-12-25 20:10:24

exit all threads 2018-12-25 20:10:24
startTime: 1545739824.51
endTime: 1545739824.55
diffTime: 0.0414531230927
wps: 158450.850363
说明:

平均写入速率为 wps 字段输出的结果。

性能参考值

说明:

时序数据库 CTSDB 单节点配置和节点数可任意组合,本文只给出三种实例配置的参考值,其它配置下的性能值用户可根据 性能概述 的性能估算方式进行估算,也可基于测试脚本进行测试。

并发线程数:9
写入字段数:10

单节点配置节点数写入能力
1核4GB内存33万点/秒 - 5万点/秒
4核20GB内存39万点/秒 - 12万点/秒
8核40GB内存311万点/秒 - 15万点/秒

腾讯云数据库托管机房分布在多个位置,这些位置都由地域(region)和可用区(zone)构成。每个地域(region)都是一个独立的地理区域。每个地域内都有多个相互隔离的位置,称为可用区(zone)。地域可用区名称是对机房覆盖范围最直接的代言,为了让地域可用区名称便于客户理解,地域命名采取【覆盖范围+机房所在城市】的结构。前半段表示该机房的覆盖能力,后半段表示该机房所在或临近的城市,可用区命名采用【城市 + 编号】的结构。每个可用区都是独立的,但同一地域下的可用区通过低时延的内网链路相连。
腾讯云支持用户在不同位置分配云资源,建议用户在设计系统时考虑将资源放置在不同可用区以屏蔽单点故障导致的服务不可用状态。
地域(region)和可用区(zone)构成:

CTSDB 支持的区域

地域(region)可用区(zone)
华南地区(广州)
ap-guangzhou
广州四区
ap-guangzhou-1
华东地区(上海)
ap-shanghai
上海二区(售罄)
ap-shanghai-1
上海三区
ap-shanghai-2
华北地区(北京)
ap-beijing
北京一区
ap-beijing-1

地域

当前 CTSDB 覆盖国内华南、华东、华北三个地区。我们将逐步增加区域供应以满足更多节点的覆盖。建议您选择最靠近您客户的地域,可降低访问时延、提高下载速度。您启动实例、查看实例等动作都是区分地域属性的。
云产品内网通信的注意事项:

  • 即使处于不同可用区,同地域下的云资源之间均通过内网互通,可以直接使用 内网 IP 访问。

  • 不同地域之间的云产品 默认不能通过内网通信。

  • 云服务器默认不可跨地域内网互访,默认不可跨地域访问云数据库;

  • 负载均衡服务绑定服务器时,只能选择绑定本地域的云服务器;

  • 不同地域之间云资源可以通过 公网 IP 进行 Internet 访问。处于私有网络中的云服务也可以通过腾讯云提供的 对等连接 经由腾讯云高速互联网络通信,以获得比 Internet 访问更稳定高速的互联。

  • 负载均衡 不支持跨地域的流量转发。

上述内网互通是均指同一账户下的资源互通,不同账户的资源内网完全隔离。

可用区

可用区(zone)是指腾讯云在同一地域内电力和网络互相独立的物理数据中心。目标是能够保证可用区间故障相互隔离(大型灾害或者大型电力故障除外),不出现故障扩散,使得用户的业务持续在线服务。通过启动独立可用区内的实例,用户可以保护应用程序不受单一位置故障的影响。
用户启动实例时,可以选择指定地域下的任意可用区。当用户需要设计应用系统的高可靠性时(某个实例发生故障时服务保持可用),可以使用跨可用区的部署方案(如 负载均衡、弹性IP 等),以使另一可用区域中的实例可代为处理相关请求。

如何选择地域和可用区

购买云服务时建议选择最靠近您客户的地域,可降低访问时延、提高下载速度。

www.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cn

如何连接 CTSDB?

CTSDB 提供基于 HTTP 协议,以 JSON 为数据交互格式的 RESTful API 供用户访问,发送请求的同时需加上实例的用户名和密码。

CTSDB 操作起来简单吗?

是的,CTSDB 操作起来很简单。您可以在界面上查看到实例的详情,并能够进行相应的管控操作,包括初始化,修改实例名等,并且可以通过监控实时查看实例的健康状态。您可以通过 RESTful API 进行几乎所有类型的数据类操作。API 接口完全兼容 Elasticsearch 协议。

CTSDB 如何保证高性能查询?

通过实现一种倒排索引的算法来加速任意维度查询。

CTSDB 相比较关系型数据库的优势是什么?

在海量的时序数据场景下关系型数据库会存在如下问题:

  • 存储成本大:对于时序数据压缩不佳,需占用大量机器资源。

  • 维护成本高:单机系统,需要在上层人工的分库分表,维护成本高。

  • 写入吞吐低:单机写入吞吐低,很难满足时序数据千万级的写入压力。

  • 查询性能差:适用于交易处理,海量数据的聚合分析性能差。

这些问题上 CTSDB 优势如下:

  • 存储成本低:利用时间递增、维度重复、指标平滑变化的特性,合理选择编码压缩算法,提高数据压缩比。通过数据上卷(Rollup),对历史数据做聚合,节省存储空间。

  • 高并发写入:数据先写入内存,再周期性的 Dump 为不可变的文件存储,并且可以通过批量写入数据,降低网络开销。

  • 低查询延时,高查询并发:优化常见的查询模式,通过索引等技术降低查询延时。通过缓存、routing 等技术提高查询并发。

基础网络 CVM 如何连接 CTSDB?

目前 CTSDB 只提供 VPC 网络的方式,如果您的 CVM 实例在基础网络,则可以通过基础网络与 VPC 互通操作来打通网络,连接 CTSDB。具体操作请参见 创建私有网络。


  • 名称: 云数据库TencentDBforCTSDB
  • 关键词: 时序数据库,时间序列存储产品,腾讯云