InfluxDB 时序、事件和指标数据库开源项目

我要开发同款
匿名用户2013年11月06日
108阅读
所属分类Google Go、数据库相关、时序数据库
授权协议MIT

作品详情

InfluxDB是一个开源分布式时序、事件和指标数据库。使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。InfluxDB包括用于存储和查询数据,在后台处理ETL或监视和警报目的,用户仪表板以及可视化和探索数据等的API。

以下是InfluxDB目前支持的一些功能,使其成为处理时间序列数据的绝佳选择:

专为时间序列数据编写的自定义高性能数据存储。TSM引擎允许高摄取速度和数据压缩完全用Go语言编写。它编译成单个二进制文件,没有外部依赖项简单,高性能的写入和查询HTTPAPI插件支持其他数据提取协议,如Graphite,collectd和OpenTSDB专为类似SQL的查询语言量身定制,可轻松查询聚合数据标签允许对系列进行索引以实现快速有效的查询保留策略有效地自动使过时数据过期连续查询自动计算聚合数据,以提高频繁查询的效率

InfluxDB的开源版本只支持一个节点。

示例代码:

//初始化influxdb = new InfluxDB(host, port, username, password, database);// with server set timestampsinfluxdb.writePoints("some_series", [    {"value": 23.0,  "state": "NY", "email": "paul@influxdb.org"},    {"value": 191.3, "state": "CO", "email": "foo@bar.com"}]);// with a specified timestampinfluxdb.writePoints("response_times", [  {time: new Date(), "value": 232}]);// get the latest point from the events time seriesseries = influxdb.query(  "select * from events limit 1;");// get the count of events (using the column type)// in 5 minute periods for the last 4 hoursseries = influxdb.query(  "select count(region) from events " +  "group by time(5m) where time > now() - 4h;");// get the count of unique event types in 10 second// intervals for the last 30 minutesseries = influxdb.query(  "select count(type) from events " +  "group by time(10s), type where time > now() - 30m;");// get the 90th percentile for the value column of response// times in 1 hour increments for the last 2 daysseries = influxdb.query(  "select percentile(value, 90) from response_times " +  "group by time(1h) where time > now() - 2d;");// get the median in 1 hour increments for the last dayseries = influxdb.query(  "select median(value) from response_times " +  "group by time(1h) where time > now() - 1d;");// get events from new yorkseries = influxdb.query(  "select * from events " +  "where state = 'ny';");// get the number of unique users in 1 hour periods// for the last 48 hoursseries = influxdb.query(  "select count(distinct(email)) from events " +  "group by time(1h) " +  "where time > now() - 2d;");// get the count of events in 10 minute increments// from users with gmail addressesseries = influxdb.query(  "select count(email) from events " +  "group by time(10m) " +  "where email =~ /.*gmail\.com/;");
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论