精华内容
下载资源
问答
  • 举例来说,日志数据,是以时间顺序存储的,所以用时序数据库存储是一种很好的选择。使用Mysql在存储的过程中,不是对这种基于时间的数据进行优化的,所以,在查询、插入上有一些瓶颈。 InfluxDB的特点 InfluxDB有很...

    一、时序数据库InfluxDb的介绍及安装

    什么是时序数据库?

    时序数据库是近几年一个新的概念,与传统的Mysql关系型数据库相比,它的最大的特点是:数据按照时间顺序存储。是一个用于存储和分析时间序列数据的开源数据库

    举例来说,日志数据,是以时间顺序存储的,所以用时序数据库存储是一种很好的选择。使用Mysql在存储的过程中,不是对这种基于时间的数据进行优化的,所以,在查询、插入上有一些瓶颈。

    InfluxDB的特点

    InfluxDB有很多特点,如下:

    • 内置HTTP接口,使用方便
    • 数据可以打标记,这样查询可以很灵活
    • 类似SQL的查询语句
    • 安装管理很简单,并且读写数据很高效
    • 能够实时查询,数据在写入时被索引后就能够被立即查出

    1、Centos6.5环境下安装

    yum -y install wget
    
    wget https://dl.influxdata.com/influxdb/releases/influxdb-1.5.4.x86_64.rpm
    
    sudo yum localinstall influxdb-1.5.4.x86_64.rpm
    

    influxd config --可以用来查看配置

    2、influxd 启动服务 (注意检查防火墙状态!service iptables stop),启动后对于1.2.4及以下版本的influxdb,可以登录http://192.168.189.128:8083/进行可视化操作,或者下载本地的工具InfluxDBStudio进行本地操作(相当于mysql的可视化工具Navicat)

    service influxdb start
    service influxdb restart
    service influxdb stop
    service influxdb status
    

    3、influx 连接服务,默认8086端口。

    准备好接收influx的查询语句(简称InfluxQL),用exit/quit可以退出命令行。

    二、influxdb快速入门指南

    1、创建一个数据库

    create database influxDatabase;    -- 创建
    show databases;					   -- 查看所有数据库,默认有一个_internal数据库。是用来存储InfluxDB内部的实时监控数据
    
    use influxDatabase;      		   --切换并使用influxDatabase数据库。
    show measurements				   --查看此数据库的表  相当于MySQL中的 show tables;
    
    

    2、数据表基本介绍

    在这里插入图片描述
    3、CR_ud

    时间序列数据通常是一次写入,很少更新。

    --插入数据
    insert cpu,host=serverA,region=CN,msg="加油world!" value="0.88"
    目前我的经验:
    	tag只能是字符串,所以插入的时候不要写双引号了"",比如上面的host=serverA,不要写host="serverA"。
    		a、写成host=serverA,查询时语句为 : select * from cpu where host='serverA'       --这里时单引号
    		b、写成host='serverA'  查询语句就变成:select * from cpu where host='"serverA"'   --这里是单引套双引
    
    
    --查看数据
    select host,region,msg,value from cpu;
    select * from cpu;
    

    注意:

    • 如果两个insert语句对应的measurement(即表)相同(即time,和所有tag都相同),则会进行覆盖。

    • 大小写敏感

    • 在这里插入图片描述

    • measurement名称,tag keys,tag value和field key不用单双引号。InfluxDB会假定引号是名称的一部分 对应的tag插入数据时不要加引号""在这里插入图片描述

    • 语句的结尾不要写分号了,其实在之前工作里java代码中的相关sql最后也不需要写分号。在这里插入图片描述- 特殊字符有:

      逗号,
      等号=
      空格 
      双引号"
      都要用反斜杠\来进行转义
      

    三、influxdb写入数据

    1、使用HTTP接口创建数据库

    #先退出influx的操作界面,再执行以下的命令,即可创建mydb数据库。  query请求地址 以及q=的q都不能省略
    curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
    

    2.使用HTTP请求写入数据

    #写入单行数据
    curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'mytable,host=007,region=CH value=201 1434055562000000000'
    #写入多行数据,换行表示。   \+Enter 换行
    curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server02 value=0.67
    cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
    cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257'
    

    3.使用HTTP请求将外部文件中的SQL写入到数据库

    首先创建一个文件:influxfile.txt

    cpu_load,host=server02 value=1.67
    cpu_load,host=server02,region=us-west value=1.55 1422568543702900257
    cpu_load,direction=in,host=server01,region=us-west value=12.0 1422568543702900257
    

    然后执行,即可将外部的sql写入到程序中。

    #文件的路径好像没什么要求,不需要在当前文件夹下
    curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @influxfile.txt
    

    4.导入数据到InfluxDb中

    #下载一份样例数据:
    curl https://s3.amazonaws.com/noaa.water-database/NOAA_data.txt -o NOAA_data.txt
    #将数据导入到influxdb中,执行influx -import命令
    influx -import -path=NOAA_data.txt -precision=s -database=NOAA_water_database
    

    四、influxdb查询数据

    1、使用HTTP Rest接口查询数据

    • 可以查询出数据,并以Json字符串的格式展示出来。
    curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT * FROM cpu_load_short"
    

    注意:

    pretty=true是为了让结果展示格式化,看起来更加清晰,一般可以不需要。格式化的过程会消耗不必要的网络带宽。

    2、查询多个语句,就是在两个sql语句前用分号;隔开。

    curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT * FROM cpu_load_short;select \"id\",\"name\",\"value\" from cpu"
    

    注意:

    • cpu表中的name字段应该是一个关键字,我们查询的时候如果涉及到的话,就需要加上引号。
    • 查询语句中要加上value这个字段,否则语句的返回值将为空。
    • 注意大小写以及中英文标点符号。

    3、时间戳格式:

    在InfluxDB中的所有数据都是存的UTC时间,时间戳默认返回RFC3339格式的纳米级的UTC时间,例如2015-08-04T19:05:14.318570484Z,如果你想要返回Unix格式的时间,可以在请求参数里设置epoch参数,其中epoch可以是[h,m,s,ms,u,ns]之一。例如返回一个秒级的epoch:

    curl -G 'http://localhost:8086/query' --data-urlencode "db=mydb" --data-urlencode "epoch=s" --data-urlencode "q=select \"id\",\"name\",\"value\" from cpu"
    

    五、influxdb采样和数据保留(CQ和RP)

    https://www.hellodemos.com/hello-influxdb/influxdb-downsampling-and-retention.html

    1、连续查询 **Continuous Query (CQ)**是在数据库内部自动周期性跑着的一个InfluxQL的查询,CQs需要在SELECT语句中使用一个函数,并且一定包括一个GROUP BY time()语句。

    2、保留策略 **Retention Policy (RP)**是InfluxDB数据架构的一部分,它描述了InfluxDB保存数据的时间。InfluxDB会比较服务器本地的时间戳和请求数据里的时间戳,并删除比你在RPs里面用DURATION设置的更老的数据。一个数据库中可以有多个RPs但是每个数据库的RPs是唯一的。

    3、数据实现

    4、创建数据库

    create database food_data;
    

    5、创建一个两个小时的默认RP

    如果我们写数据的时候没有指定RP的话,InfluxDB会使用默认的RP,我们设置默认的RP是两个小时。使用CREATE RETENTION POLICY语句来创建一个默认RP:

    create retention policy "two hours" on "food_data" duration 2h replication 1 default;
    

    这个RP的名字叫two_hours作用于food_data数据库上,two_hours保存数据的周期是两个小时,并作为food_data的默认RP。

    说明:

    >在创建数据库时,InfluxDB会自动生成一个叫做`autogen`的RP,并作为数据库的默认RP,`autogen`这个RP会永远保留数据。在输入上面的命令之后,`two_hours`会取代`autogen`作为`food_data`的默认RP。
    

    6、创建一个保留52周数据的RP

    create retention policy "a_year" on "food_data" duration 52w replication 1;
    

    这个语句对数据库food_data创建了一个叫做a_year的RP,a_year保存数据的周期是52周。去掉DEFAULT参数可以保证a_year不是数据库food_data的默认RP。这样在读写的时候如果没有指定,仍然是使用two_hours这个默认RP。

    7、创建CQ

    现在我们已经创建了RPs,现在我们要创建一个CQ,去将10秒间隔的数据采样到30分钟的间隔,并把它们安装不同存储策略把它们存在不同的measurement里。

    CREATE CONTINUOUS QUERY "cq_30m" ON "food_data" BEGIN
      SELECT mean("website") AS "mean_website",mean("phone") AS "mean_phone"
      INTO "a_year"."downsampled_orders"
      FROM "orders"
      GROUP BY time(30m)
    END
    CREATE CONTINUOUS QUERY "cq_30m" ON "food_data" BEGIN  SELECT mean("website") AS"mean_website",mean("phone") AS "mean_phone"  INTO "a_year"."downsampled_orders"  FROM "orders" GROUP BY time(30m) END
    上面创建了一个叫做cq_30m的CQ作用于food_data数据库上。cq_30m告诉InfluxDB每30分钟计算一次measurement为orders并使用默认RPtwo_hours的字段website和phone的平均值,然后把结果写入到RP为a_year,两个字段分别是mean_website和mean_phone的measurement名为downsampled_orders的数据中。InfluxDB会每隔30分钟跑对之前30分钟的数据跑一次这个查询。
    

    六、Influxdb Web管理界面安装

    1、InfluxDb如果能够提供一个Web管理界面,那该多方便。实际上InfluxDB 1.2 前,是提供了一个web管理界面的。但是1.3版开始,InfluxDB官方就把web界面给取消了。等于说就是一个可视化界面,其实可以下载一个InfluxDBStudio,进行开始连接。

    接下来就是卸载之前装好的1.4版本influxdb,再安装1.2版本的influxdb

    #卸载
    rpm -q influxdb;
    rpm -e influxdb;
    rpm -q influxdb;
    rm -rf influxdb;
    #安装
    wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm
    yum install -y rpm
    # 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度
    rpm -ivh influxdb-1.2.4.x86_64.rpm
    

    2、更改配置文件开发Influxdb的8083端口

    cd /etc/influxdb/

    vi influxdb.conf

    主要开放8086和8083端口,记得相应的enabled也做修改,具体如下图

    [http]
      # Determines whether HTTP endpoint is enabled.
      # enabled = true
    	enabled = true
      # The bind address used by the HTTP service.
      # bind-address = ":8086"
    	bind-address = ":8086"
    
    ====================================================
    
    [admin]
      # Determines whether the admin service is enabled.
      # enabled = false
    	enabled = true
      # The default bind address used by the admin service.
      # bind-address = ":8083"
    	bind-address = ":8083"
    

    3、启动influxdb–>service influxdb start

    service influxdb start
    service influxdb restart
    service influxdb stop
    service influxdb status
    

    4、http://192.168.189.128:8083之后,如果web页面能够正常显示就OK了。防火墙记着关闭

    七、关键概念

    tag field
    索引 有索引,一个measurement(表)应该尽量使用tag 没有索引,不要使用field value作为查询条件
    必要性 可以不存在,建议要有,加快查询,但是写入效率会降低 在InfluxDB中不能没有field,查询语句条件中也必须要有field。SELECT在包括一个tag时,必须至少指定一个field
    数据类型 只能是字符串 对应的value可以是可以是字符串、浮点数(默认是浮点数)、整数(若需要存整数,需要加个i—>value=32i)、布尔值
    其中measurement,tag keys,tag values,field keys始终是字符串。

    一行数据,就一个field set集合就可以了。eg : 2 3 --> a=2 b=3这个就是field set

    描述 例子
    field set 就是所有field的key value组成的数据集合 name=“张三” score=101
    保留策略retention policy 单个measurement可以有不同的保留策略
    序列series series是retention policy,measurement和tag set的集合
    point点 point就是一行数据 image-20200616100905365

    八、InfluxDB与关系型数据库的比较

    关系型数据库(MySql、Oracle) 时间序列数据库InfluxDB
    特点 时间戳(timestamp)是必须要有的,可以认为是主键
    measurement
    有索引的列 ------》 tag
    没有索引的列 ------》 field
    行 ------》 point
    存储过程 ------》 continuous query和retention policy
    InfluxDB中的数据一次写入,很少更新

    九、InfluxDb中的数据查询语法

    1、SELECT语法说明

    在这里插入图片描述

    2、from的使用

    首先执行了三、4的数据导入,use NOAA_water_database
    # 1、查询指定的字段,必须有field的
    select "level description",location,water_level from h2o_feet limit 10
    # 2、从单个measurement中选择特定的tag和field,并提供其标识符类型
    select "level description"::field,location::tag,water_level::field from h2o_feet limit 10
    # 3、从单个measurement查询所有field
    select *::field from h2o_feet limit 10
    # 4、从measurement中选择一个特定的field并执行基本计算;water_level是float类型,所以可以进行基本运算
    #  这里的 +1 必须要前后有空格
    select (water_level * 100 ) + 1 from h2o_feet limit 10
    select (water_level * 100 / 10 + 11 - 222) from h2o_feet limit 10
    # 5、查询多个measurement
    SELECT * FROM "h2o_feet","h2o_pH"
    # 6、从完全限定的measurement中选择所有数据
    SELECT * FROM "NOAA_water_database"."autogen"."h2o_feet"
    该查询选择数据库NOAA_water_database中的数据,autogen为存储策略,h2o_feet为measurement
    
    

    3、where的用法

    WHERE子句中单引号来表示字符串字段值。不加引号或者用双引号,不会返回结果,也不会返回错误。

    包括:

    >
    <
    =
    !=
    <=
    >=
    
    SELECT * FROM "h2o_feet" WHERE "water_level" + 2 > 11.9
    SELECT "water_level" FROM "h2o_feet" WHERE "location" <> 'santa_monica' AND (water_level < -0.59 OR water_level > 9.95)
    SELECT * FROM "h2o_feet" WHERE time > now() - 7d
    

    4、group by

    SELECT MEAN("water_level") FROM "h2o_feet" GROUP BY "location"
    
    -- 默认是对h2o_quality表的所有tag进行分组计算
    SELECT MEAN("index") FROM "h2o_quality" GROUP BY *
    
    select "water_level","location" FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2020-08-18T00:30:00Z'
    
    

    5、

    SELECT MEAN("difference") FROM (SELECT "cats" - "dogs" AS "difference" FROM "pet_daycare")
    
    SELECT "all_the_means" FROM (SELECT MEAN("water_level") AS "all_the_means" FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m) ) WHERE "all_the_means" > 5
    
    SELECT SUM("water_level_derivative") AS "sum_derivative" FROM (SELECT DERIVATIVE(MEAN("water_level")) AS "water_level_derivative" FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m),"location") GROUP BY "location"
    
    

    十、常见schema查询用法

    show databases
    show measurements
    #返回指定数据库的保留策略的列表
    show retention POLICIES
    show tag keys
    show field keys
    SHOW TAG VALUES ON "NOAA_water_database" WITH KEY = "randtag"
    
    drop database mydb
    drop measurement student
    

    原文:https://www.hellodemos.com/hello-influxdb/influxdb-demos.html

    展开全文
  • 日志类的数据时候存储时序数据库中,下面就是时序数据库influxdb的安装 curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -source /etc/lsb-releaseecho "deb https://repos.influxdata.com/${...

    日志类的数据时候存储在时序数据库中,下面就是时序数据库influxdb的安装

    curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -
    source /etc/lsb-release
    echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | tee /etc/apt/sources.list.d/influxdb.list

    apt-get update
    apt-get install influxdb
    service influxdb start

    输入influx进入管理终端
    influx
    create database sinamail
    use sinamail
    select * from webmail_log

    这个sql语句这样理解,空格分割开,空格前面的叫tag,后面的叫field
    tag有索引 field没有索引,如果查询比较多就把要查的定义成tag
    多个tag用逗号分割 ,多个field也要逗号分割

    插入和查询,注意引号的使用,使用不对插不进去,查不出来
    insert webmail_log,ip=111.222.333.444,username=taoshihan method="/index.php",ua="ios"

    select * from webmail_log where ip='111.222.333.444'

    展开全文
  • 一款时序数据库 MyData

    千次阅读 2017-12-17 16:02:37
    MyData Server,主要用于存储有时间标记的仪器仪表数据和日志数据。我利用开发的业余时间,共7个月完成开发和测试。 如果您发现关系数据库存储仪表数据时的性能不理想,那么这可能就是您在找的替代产品,并且没有...

    MyData Server,主要用于存储有时间标记的仪器仪表数据和日志数据。我利用开发的业余时间,共7个月完成开发和测试。

    如果您发现关系数据库在存储仪表数据时的性能不理想,那么这可能就是您在找的替代产品,并且没有任何使用限制。

    github:https://github.com/wzh191920/MyData

    该数据库使用c++编写,目前只能运行于windows系统。通过动态库api,与数据库通信。有一个简易的web前端,可以对数据库做日常的管理。

    源码中有详细说明和部署说明,以及编译好的程序,只需点击几下鼠标即可部署运行。

    感谢您的关注,希望这款数据库能够满足您的要求!

    管理页面截图:






    展开全文
  • 摘要 腾讯 CTSDB(Cloud Time Series Database) 是一种分布式、高性能的时序数据库,针对时序数据的高并发写入、存在明显的冷热数据、IoT 用户场景等做了大量优化,同时也支持各行业的日志解析和存储。 一、背景 ...

      摘要

      腾讯 CTSDB(Cloud Time Series Database) 是一种分布式、高性能的时序数据库,针对时序数据的高并发写入、存在明显的冷热数据、IoT 用户场景等做了大量优化,同时也支持各行业的日志解析和存储。

      一、背景

      随着移动互联网物联网大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联网公司的监控数据等。实际上,这些按照时间顺序记录系统、设备状态变化的数据都是时序数据 (Time Series),它普遍存在于互联网、物联网、IT 基础设施中。

      得益于软硬件技术的快速发展,处理如此庞大的时序数据集的成本在持续降低,更多公司开始持续收集、分析数据,用于异常处理、趋势预测、精准营销、风险控制等场景,希望利用数据的潜在价值,提高公司盈利能力和竞争力。这里举两个例子:

      1. 下图为某共享单车在旧金山某热门区域的车辆借还情况。通过分析该区域车辆的历史借还数据,单车公司可优化热点时间段的车辆补给。

      2. 下图为某互联网服务的出入流量历史记录。从图中可以明显看到入流量 (蓝色线) 在某时间段有毛刺,服务提供商可基于此段时间排查服务有无异常。可以进一步基于流量监控做告警,使运维人员能够及时处理线上问题。

      二、传统时序数据解决方案存在大量问题

      传统的时序数据解决方案及问题如下:

      1. MySQL 等关系型数据库

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

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

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

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

      2. Hadoop、Spark 等批处理系统

      · 数据延迟高:离线批处理系统,数据从产生到可分析,耗时数小时、甚至天级;

      · 查询性能差:不能很好的利用索引,依赖批处理任务,查询耗时一般在分钟级以上。

      3. HBase

      · 多维分析能力差:HBase 可以较好的满足写入压力,但对于非 RowKey 前缀的查询性能较差;

      · 维护成本:使用 HBase 需要同时维护 HBase 和 Hadoop 等系统,且 HBase 的稳定性会进一步加大维护成本。

      三、写入、存储、查询多环节优化,时序数据库优势明显

      1. 时序数据模型及特点

      在引入时序数据库之前,先要了解【时序数据】的模型及特点。

      1.1 时序数据的数学模型

      前面介绍了时序数据的场景,也说明了分析时序数据的意义及传统方案。那么时序数据该怎样存储呢? 数据的存储要考虑其数学模型和特点,时序数据当然也不例外。这里以一段时序数据为例,介绍下时序数据的数学模型。

      下列数据记录了一段时间内某集群里各机器上各端口的出入流量,每半小时记录一个观测值:

      · metric: 相关联的数据集合,类似于关系型数据库中的 table;

      · point: 一个时序数据点,类似于关系型数据库中的 row;

      · timestamp: 时间戳,表征时序数据产生的时间点;

      · tag: 维度列,用于描述设备/系统的属性,表明是哪个设备/模块产生的,一般不随着时间变化;

      · field: 指标列,用于描述设备/系统状态的变化,随时间平滑波动。

      1.2 时序数据特点

      · 数据模式: 时序数据随时间增长,相同设备/系统的维度信息不变,指标平滑变化,这点从上面的 Network 表的数据变化可以看出。

      · 写入: 持续高并发写入,无更新操作:时序数据库面对的往往是百万甚至千万数量级终端设备的实时数据写入 (如摩拜单车 2017 年全国车辆数为千万级),但数据大多表征设备状态,写入后不会更新。

      · 查询: 按不同维度对指标进行统计分析,且存在明显的冷热数据,一般只会频繁查询近期数据。

      2. 时序数据库

      2.1 时序数据库

      时序数据库是管理时序数据的专业化数据库,并针对时序数据的特点对写入、存储、查询等流程进行了优化,从而解决时序数据处理难题:

      · 存储成本:

      o 利用维度重复、时间递增、指标平滑变化等特性,合理选择编码压缩算法,提高数据压缩比;

      o 通过预降精度,对历史数据做聚合,节省存储空间。

      · 高并发写入:

      o 数据批量写入,降低网络开销;

      o 数据先写入内存,再周期性的 dump 为不可变的文件存储,提高写入速度。

      · 低查询延时,高查询并发:

      o 优化常见的查询模式,通过索引等技术降低查询延时;

      o 通过缓存、routing 等技术提高查询并发。

      2.2 开源时序数据库对比

      目前行业内比较流行的开源时序数据库产品有 InfluxDB、OpenTSDB、Prometheus、Graphite 等,其产品特性对比如下图所示:

      从上表可以看出,开源的时序数据库存在如下问题:

      · 没有 free、易用的分布式版本 (OpenTSDB 支持分布式部署,但依赖系统过多,维护成本高);

      · 聚合能力普遍较弱,而时序数据大多需要来做统计分析;

      · 没有 free 的权限管理;

      · 没有针对时间序列的多维度对比分析工具。

      四、历经每日万亿写入吞吐,腾讯 CTSDB 技术架构

      腾讯 CTSDB(Cloud Time Series Database) 是一种分布式、高性能的时序数据库,针对时序数据的高并发写入、存在明显的冷热数据、IoT 用户场景等做了大量优化,同时也支持各行业的日志解析和存储。在腾讯内部支撑腾讯云等每日万亿写入吞吐的场景,经过严苛的压力打磨。其架构如下图所示:

      1. CTSDB 主要特点

      · 高性能:(具体性能数据参考后文测试部分)

      o 支持批量写入、高并发查询,以及强大的分析聚合能力;

      o 通过横向扩展,线性提升系统性能;

      o 支持 sharding、routing,加速查询。

      · 高可靠:

      o 分布式系统,支持多副本;

      o 机架感知,自动错开机架分配主从副本。

      · 易使用:

      o 丰富的数据类型,REST 接口,数据写入查询均使用 json 格式;

      o 原生分布式,弹性可伸缩,数据自动均衡;

      o 权限系统:支持用户名密码、机器白名单的权限系统。

      · 低成本:

      o 支持列存储,高压缩比 (0.1 左右),降低存储成本;

      o 支持数据预降精度:降低存储成本的同时,提高查询性能。

      o 副本数可按需调整。

      · 兼容开源生态:

      o 兼容 Kibana/Logstash/Beat 等组件,方便数据采集及可视化分析;

      o 支持从 MySQL、Kafka 等开源生态同步数据,方便迁移。

      2. 竞品性能对比测试

      这里选用业界较为流行的 InfluxDB 来与 CTSDB 做性能对比测试。

      2.1 写入性能测试

      (1) CTSDB 单节点集群与 InfluxDB 单机版写入性能对比

      横坐标:并发数 (写入线程数),纵坐标:QPS(单位:万次/s)

      结论: CTSDB 单节点写入性能最高在 19w,InfluxDB 在 15w。

      (2) CTSDB 单节点集群与 CTSDB 双节点集群写入性能对比

      横坐标:并发数 (写入线程数),纵坐标:QPS(单位:万次/s)

      结论:CTSDB 单节点集群写入最高可达 20w,双节点集群写入性能 34w。

      2.2 查询性能测试

      (1) CTSDB 单节点集群与 InfluxDB 单机版查询性能对比

      横坐标:并发数 (查询线程数),纵坐标:QPS(单位:次/s)

      结论:

      · CTSDB 查询性能整体比 InfluxDB 好很多,当并发数较高时 (40),CTSDB 查询性能比 InfluxDB 高出近 4 倍,在 2w 左右。

      · 在并发线程数达到 50 时,InfluxDB 出现链接错误,拒绝查询请求;此时,CTSDB 可正常查询。

      (2) CTSDB 单节点集群与双节点集群查询性能对比

      横坐标:并发数 (查询线程数),纵坐标:QPS(单位:次/s)

      结论:在并发数较高的情况下,双节点集群查询性能较单节点集群有了大幅度提升,呈现了查询性能线性扩展的趋势。

      关于我们

      1. 我们的现状

      作为腾讯唯一的时序数据库,CTSDB 支撑了腾讯内部 20 多个核心业务 (微信彩票、财付通、云监控、云数据库、云负载等)。其中,云监控系统记录了腾讯内部各种软硬件系统的实时状态,CTSDB 承载了它所有的数据存储,在每秒千万级数据点的写入压力、每天 20TB+数据量的写入场景下稳定运行,足以证明 CTSDB 可以稳定支撑物联网的海量数据场景。

      2. 我们的未来

      CTSDB 已经在腾讯云正式开始公测,为时序数据处理提供技术服务,我们将在降低存储成本、提升易用性和丰富功能性等方面进一步优化 CTSDB!

      欢迎对时序数据库和分布式存储感兴趣的同学加入我们!

    展开全文
  • 前言如今在万物互联(IoT)兴起的推动下,时间序列数据(衡量事物随时间变化的数据)应用和场景...虽然关系数据库可以存储这些数据,但是它们在处理这些数据时效率低下,因为它们缺乏优化,例如按时间间隔存储和检索数据...
  • 【判断题】洞口作用是保证涵洞基础和两侧路基免受冲刷,使水流顺畅,常见的洞口形式有:端墙式、八字式、走廊式、平头式。...【其它】ADO.NET的应用与实践:使用存储过程访问数据库。例:8-5【单选题】下列命令中,...
  • 引言 日志对于程序非常重要,日志对于定位问题,数据分析有着...如果采用关系型数据库存储查询,成本会非常高,并且关系数据库对于巨额数据查询分析显得不那么给力,所以如果没有非常特殊的要求,不会选择用关系型数据
  • 首先简单介绍一下时序数据库的概念,时序数据库就是按照时间顺序存储的数据的数据库。在这个数据库里,时间是一个主要维度,存储的数据大多都是按照时间变化而变化的数据。目前开源的有很多,本次先介绍一下InfluxDb...
  • 实时数仓-Druid简介

    2020-03-31 21:38:13
    Druid核心架构整合了数据仓库、时序数据库日志搜索系统的思想。主要有以下特点: 列式存储 可扩展分布式系统 并行处理 实时或离线摄入数据 自容错、自平衡、容易操作 云化、容错架构不丢失数据 基于时间的分区 ...
  • InfluxDB + Telegraf + ...InfluxDBInfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。InfluxDB 包括用于存储和查询数据,在后台处理ETL...
  • InfluxDB + Telegraf + ...InfluxDBInfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。InfluxDB 包括用于存储和查询数据,在后台处理ETL...
  • 最近完成了交易服务监控,采用如下方案: Kafka 消息总线,所有...Influxdb 时序数据库,特别合适存储日志类数据,不需要做表设计,可支持索引,类SQL查询,增强型数据统计功能。 Grafana 强大的可视化数据展示界面。
  • Istio内置的部分适配器以及相应功能举例如下: ...prometheus:开源的时序数据库,非常适合用来存储监控指标数据。 statsd:采集汇总应用指标的工具。 stdio:使Istio能将日志和me...
  • Tick技术栈之InfluxDB

    千次阅读 2018-03-09 21:24:36
    其中InfluxDB使用最广泛,是开源的时序数据库,一个比较常见的应用场景为日志存储。Kapacitor提供了基于influxdb的监控报警方案,支持多种数据聚合,选择,变换,预测方法。Chronograf用于对数据进行展示,可以使用...
  • 监控报警系统的调研

    2019-09-26 13:55:27
    数据存储时序数据库 数据展示:dashboard的展示 数据预警:预警规则的定义,如通知用户,监控的资源,通知方式等 三、技术 1.数据采集 Telegraf,支持的监控项有:java应用、http请求、日志、exec脚本、其它常见...
  • 使用ElasticSearch作为时序数据库,并且取得了非常不错的效果。很多知乎用户不禁询问,Elasticsearch是否可以用于海量金融数据的存储和分析? 为此我们对DolphinDB和Elasticsearch在不同规模的金融数据集做了综合的...
  • 数据存储:prometheus 时序数据库用来做数据收集; 数据发送:nodeExporter 用来将日志打到prometheus上; 数据展示:grafana 用来做数据的展示; grafana里面可以配置报警提醒 准备 下载文件,服务器直接命令...
  • InfluxDB简介与使用

    2019-10-24 09:05:50
    特别适合大型分布式系统的监控系统,存储日志和监控数据,简单理解为按时间序列记录一些数据(常用的指标数据、统计数据等)。 主要特点 数据无结构(无模式):列的数量可以任意 支持min, max, sum, count, ...
  • 数据库相关 图、时序、nosql、mysql衍生、开源xml、数据库管理调优驱动建模工具、数据库服务器 管理和监控 系统监控、数据备份、日志分析、性能优化、运维工具、漏洞检测 神经网络 机器学习 自然语言处理 机器视觉 ...
  • InfluxDB简介

    千次阅读 2020-09-05 15:01:30
    适合存储设备性能、日志、物联网传感器等带时间戳的数据 其主要特色功能 1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等) 2)可度量性:你可以实时对大量数据进行计算 3)基于事件:它...
  • JetLinks物联网基础平台 JetLinks基于Java8,...全文,日志时序数据存储 业务功能数据管理 业务功能基础框架 架构 设备接入流程 模块 --jetlinks-community ------ | ----docker ------ | ------ | ----dev-env
  • 时序数据分析:如日志处理,监控数据存储,分析和数据化 基本概念: 节点(Node): 一个ES实例 索引(Index): 逻辑概念,配置信息mapping和倒排索引,正排索引文件。索引可以分布在一台或者多台机器 分片(Shard): ...
  • Oraclet中的触发器

    2011-06-04 21:58:17
    触发器在数据库里以独立的对象存储,它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收...
  • ElasticSearch 全文检索,日志时序数据存储 PostgreSQL 业务功能数据管理 hsweb framework 4 业务功能基础框架 架构 设备接入流程 模块 --jetlinks-community ------|----docker ------|------|----dev-...
  • EasyFlash ...提示 :从 EasyFlash V4.1 后,基于 EasyFlash 全新设计开发的 FlashDB 开源项目正式上线,新集成了时序数据库、多分区管理,多数据库实例等功能,也从一定程度上提升了整体性能,欢迎关注:...
  • 实例143 获取数据库中所有存储过程 实例144 修改存储过程 实例145 删除存储过程 6.2 使用触发器 实例146 应用触发器添加日志信息 实例147 应用触发器级联删除数据 实例148 调用UPDATE触发器修改数据 实例149 获取...
  • 实例143 获取数据库中所有存储过程 实例144 修改存储过程 实例145 删除存储过程 6.2 使用触发器 实例146 应用触发器添加日志信息 实例147 应用触发器级联删除数据 实例148 调用UPDATE触发器修改数据 实例149 获取...
  • 实例143 获取数据库中所有存储过程 实例144 修改存储过程 实例145 删除存储过程 6.2 使用触发器 实例146 应用触发器添加日志信息 实例147 应用触发器级联删除数据 实例148 调用UPDATE触发器修改数据 实例149 获取...
  • Java开发实战1200例.第2卷.part3

    热门讨论 2013-05-08 22:46:34
    实例143 获取数据库中所有存储过程 229 实例144 修改存储过程 231 实例145 删除存储过程 232 6.2 使用触发器 233 实例146 应用触发器添加日志信息 233 实例147 应用触发器级联删除数据 235 实例148 调用UPDATE触发器...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

时序数据库存储日志