通用TimeSeries数据库Python客户端
universal-tsdb的Python项目详细描述
通用tsdb
通用时间序列数据库Python客户机(InfluxDB,Warp10,…)
简介
这个项目旨在抽象你的时间序列后端,使你的代码尽可能不可知。在
一些例子:
- 概念证明
- 开发的早期阶段(当您不确定应该使用哪个平台时)
- ETL(提取转换加载),用于加载步骤
:警告:当前代码只提供摄取功能(写入指向后端的点)。在
快速启动
安装
$ pip install universal-tsdb^{pr2}$
流入DB
fromuniversal_tsdbimportClient,Ingesterbackend=Client('influx','http://localhost:8086',database='metrics',backend_username='user',backend_password='passwd')series=Ingester(backend)series.append(1585934895000,measurement='mes',field1=42.0)series.append(1585934896000,measurement='mes',tags={'tag1':'value1'},field1=43.4,field2='value')series.commit()
上面的代码将基于InfluxDB line协议生成一个数据有效载荷 并通过HTTP(S)请求发送。在
POST /write?db=metrics&u=user&p=passwd HTTP/1.1
Host: localhost:8086
mes field1=42.0 1585934895000000000
mes,tag1=value1 field1=43.4 field2="value" 1585934896000000000
翘曲10<3>fromuniversal_tsdbimportClient,Ingesterbackend=Client('warp10','http://localhost/api/v0',token='WRITING_TOKEN_ABCDEF0123456789')series=Ingester(backend)series.append(1585934895000,field1=42.0)series.append(1585934896000,tags={'tag1':'value1'},field1=43.4,field2='value')series.commit()
上面的代码将生成基于warp10gts格式的数据有效载荷 并通过HTTP(S)请求发送。在
POST /api/v0/update HTTP/1.1
Host: localhost
X-Warp10-Token: WRITING_TOKEN_ABCDEF0123456789
1585934895000000// field1{} 42.0
1585934896000000// field1{tag1=value1} 42.0
1585934896000000// field2{tag1=value1} 'value'
高级用法
批处理
当您有大量的数据要发送时,您可能需要分割成几个HTTP请求。 在“批处理”模式下,库自动提交(发送)数据:
backend=Client('influx','http://localhost:8086',database='metrics')series=Ingester(backend,batch=10)foriinrange(0..26):series.append(field=i)series.commit()# final commit to save the last 6 values
Commit#1 Sent 10 new series (total: 10) in 0.02 s @ 2000.0 series/s (total execution: 0.13 s)
Commit#2 Sent 10 new series (total: 20) in 0.02 s @ 2000.0 series/s (total execution: 0.15 s)
Commit#3 Sent 6 new series (total: 26) in 0.01 s @ 2000.0 series/s (total execution: 0.17 s)
REPORT: 3 commits (3 successes), 26 series, 26 values in 0.17 s @ 2000.0 values/s",
省略时间戳
如果省略时间戳,则库将使用函数time.time()
生成UTC历元时间。精度取决于系统。在
在Warp10
中测量Warp10中不存在InfluxDB测量。 库通过给Warp10类名加前缀来模拟度量:
backend=Client('warp10',token='WRITING_TOKEN_ABCDEF0123456789')series=Ingester(backend)series.append(1585934895000,measurement='mes',field1=42.0)series.commit()
1585934896000000// mes.field1{} 42.0
托多
- []API文档
- []示例
- []数据查询/获取功能
- []重构后端特定代码(继承类?)在
- []时间序列线协议优化
- []Gzip/deflate HTTP压缩
- []代码覆盖率/附加测试
- 项目
标签: