Akumuli时间序列数据库——列存储,LSM,MVCC
Features
- Column-oriented time-series database.
- Log-structured append-only B+tree with multiversion concurrency control.
- Crash safety.
- Fast aggregation without pre-configured rollups or materialized views.
- Custom compression algorithm (dictionary + entropy) with small memory overhead (about 2.5 bytes per element on appropriate data).
- Compressed in-memory storage for recent data.
- Can be used as a server application or an embedded library.
- Simple query language based on JSON over HTTP.
- Query results returned using chunked transfer encoding at rate about 50MB/second (about 1M data points/second) per core.
- Data ingestion through TCP or UDP (over 1M data points/second).
Akumuli
| - | - | - |
|---|---|---|
| 主页 | https://github.com/Akumuli/akumuli | |
| 编写语言 | C++ | |
| License | Apache License, Version 2.0 | |
| 项目创建时间 | 2014/12 | |
| 最新版 | pre-release | 2015/10/18 |
| 活跃度 | 活跃 | |
| 文档 | 简单 |
Akumuli名称来自accumulate,是一个数值型时间序列数据库,可以存储、处理时序列数据。
它的特点如下:
- 基于日志结构的存储
- 支持无序数据
- 实时压缩
- 基于HTTP的JSON查询支持
- 支持面向行和面向列的存储
- 将最新数据放入内存存储
- 通过metric和tag组织时序列数据,并且可以通过tag进行join操作。
- Resampling (PAA transform),滑动窗口
- 通过基于TCP或UDP的协议接收数据(支持百万数据点每秒)
- Continuous queries (streaming)
Akumuli由两部分组成:存储引擎和服务程序。目前只有存储引擎被实现了,而且存储引擎可以在没有服务程序的情况下作为嵌入式数据库单独使用(类似sqlite),也就是说,你得通过自己编写程序使用它的API来实现数据读写。
Akumuli的数据协议基于Redis,它的数据格式也和前面看到的不太一样,比如:
|
每条数据由三部分组成,第一部分称为ID,可以是数值型(以“:”开始),或者是字符串(以“+”开始),比如这个例子中,cpu host=machine1 region= europe就是ID,它由两部分组成,cpu是metric,host和region则被称为key。
数据的第二部分可以是时间戳(:1418224205),这里的格式为ISO 8601(+20141210T074343.999999)
第三部分为值部分。
类似上面的数据结构,它的query也比较容易理解:
|
Akumuli目前还处于开发状态,不适合在生产环境下使用。
Akumuli时间序列数据库——列存储,LSM,MVCC的更多相关文章
- 时间序列数据库——索引用ES、聚合分析时加载数据用什么?docvalues的列存储貌似更优优势一些
加载 如何利用索引和主存储,是一种两难的选择. 选择不使用索引,只使用主存储:除非查询的字段就是主存储的排序字段,否则就需要顺序扫描整个主存储. 选择使用索引,然后用找到的row id去主存储加载数据 ...
- OpenTSDB介绍——基于Hbase的分布式的,可伸缩的时间序列数据库,而Hbase本质是列存储
原文链接:http://www.jianshu.com/p/0bafd0168647 OpenTSDB介绍 1.1.OpenTSDB是什么?主要用途是什么? 官方文档这样描述:OpenTSDB is ...
- 时间序列数据库选型——本质是列存储,B-tree索引,抑或是搜索引擎中的倒排索引
时间序列数据库最多,使用也最广泛.一般人们谈论时间序列数据库的时候指代的就是这一类存储.按照底层技术不同可以划分为三类. 直接基于文件的简单存储:RRD Tool,Graphite Whisper.这 ...
- MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析
文/何登成 导读: 来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...
- 应运而生! 双11当天处理数据5PB—HiStore助力打造全球最大列存储数据库
阿里巴巴电商业务中历史数据存储与查询相关业务, 大量采用基于列存储技术的HiStore数据库,双11当天HiStore引擎处理数据记录超过6万亿条.原始存储数据量超过5PB.从单日数据处理量上看,该系 ...
- [转帖]时间序列数据库 (TSDB)
时间序列数据库 (TSDB) https://www.jianshu.com/p/31afb8492eff 0.3392019.01.28 10:51:33字数 5598阅读 4030 背景 2017 ...
- 时间序列数据库(TSDB)初识与选择
时间序列数据库(TSDB)初识与选择 本文作者由 MageByte 团队的 「借来方向」编写,关注公众号 给你更多硬核技术 背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工 ...
- 时间序列数据库(TSDB)初识与选择(InfluxDB、OpenTSDB、Druid、Elasticsearch对比)
背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工智能.物联网.机器学习.商业智能.智能预警啊等等. 以前的系统,做数据可视化,信息管理,流程控制.现在业务已经不仅仅满足于这 ...
- 时间序列数据库调研之InfluxDB
基于 Go 语言开发,社区非常活跃,项目更新速度很快,日新月异,关注度高 测试版本 1.0.0_beta2-1 安装部署 wget https://dl.influxdata.com/influxdb ...
随机推荐
- CUBRID学习笔记 12防火墙设置 linux
这玩意是linux上用的. 如果你的数据库不是装在linux下可以飘过了 iptables -I INPUT -p tcp --dport 8001 -j ACCEPT iptables -I INP ...
- 《FLASH CC 2015 CANVAS 中文教程》——3、this关键字 入门
注::如果你对 FLASH 这个软件操作不够熟悉,建议你可以先看看FLASH动画之类的书. :FLASH CC 在文中直接简称为CC. :以下所以文章中所说的快捷键 如果你按了不起作用,请检查是否有其 ...
- weblogic启动报错
重启了一次linux服务器后,weblogic启动莫名报错,查看日志发现说部署的项目有个bean类无法加载, 1.然后手动删除 已经部署的项目,先在 domais/servers/AdminServe ...
- php 判断 xml 里是否存在某个节点
参考网址:http://blog.csdn.net/crazyboy2005/article/details/6114454 DOMDocument中,怎样判断某节点是否存在呢? /* $xml-&g ...
- NYOJ214
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...
- [转载]VFS—Kernel Space & User Space
在了解虚拟文件系统之前 , 需要先了解 Kernel Space 和 User Space 的区别 . 二者的差别在于内存使用上安全机制的差异 . kernel 执行时会占据一段系统的内存空间 , 这 ...
- vitamio框架
import io.vov.vitamio.LibsChecker; import io.vov.vitamio.MediaPlayer; import io.vov.vitamio.MediaPla ...
- C++——并发编程
一.高级接口:async()和Future 1.1 async()和Future的第一个用例 假设需要计算两个操作数的总和,而这两个操作数是两个函数的返回值.寻常加法如下: func1() + fun ...
- GO语言中间的derfer
defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句.当函数执行到最后时,这些defer语句会按照逆序执行, 最后该函数返回.特别是当你在进行一些打开资 ...
- Android 进入页面默认定位到ListView的解决方法
由于ListView会默认去获取焦点,如果说ListView在页面的下方的话,那么点击条目进入新页面并退出,那么这时候就会定位到ListView这里,而不是展示头部. 解决这个问题,只需要在Lis ...