4)不支持云端部署 , 更不支持SaaS 。
5)在传统的实时监控场景 , 由于对各种工业协议的支持比较完善 , 实时数据库还占有较牢固的市场地位 , 但是在工业大数据处理上 , 因为上述几个原因 , 几乎没有任何大数据平台采用它们 。
下面对几个典型的实时数据库进行介绍 。
1、InfluxDB
InfluxDB由Golang语言编写 , 也是由Golang编写的软件中比较著名的一个 , 在很多Golang的沙龙或者文章中可能都会把InfluxDB当标杆来介绍 , 这也间接帮助InfluxDB提高了知名度 。InfluxDB的主要特点包括:
- schemaless(无结构) , 可以是任意数量的列
- 可扩展(集群)
- 方便、强大的查询语言
- Native HTTP API
- 集成了数据采集、存储、可视化功能
- 实时数据Downsampling
- 高效存储 , 使用高压缩比算法 , 支持retention polices
- 数据采集支持多种协议和插件:行文本、UDP、Graphite、CollectD、OpenTSDB
2、Graphite
Graphite是分布式时序列数据存储数据库 , 容易扩展 , 具备功能强大的画图Web API , 提供了大量的函数和输出方式 。主要功能包括:
- 存储数值型时序列数据
- 根据请求对数据进行可视化(画图)
Graphite使用了类似RRDtool的RRD文件格式 , 它也不像C/S结构的软件一样 , 没有服务进程 , 只是作为Python library使用 , 提供对数据的create/update/fetch操作 。google、Etsy、GitHub、豆瓣、Instagram、Evernote和Uber等很多知名公司都是Graphite的用户 。
3、OpenTSDB
这是一个Apache开源软件 , 是在HBase的基础上开发的 , 底层存储是HBase , 但其依据时序数据的特点做了一些优化 。其最大的好处就是建立在Hadoop体系上 , 各种工具链成熟 , 但这也是它最大的缺点 , 因为Hadoop不是为时序数据打造的 , 导致其性能很一般 , 而且需要依赖很多组件 , 安装部署相当复杂 。
OpenTSDB采用Schemaless模式 , 不用预先定义数据结构 , 因此写入灵活 , 但每个时间序列只能写入一个采集量 , 不支持多列写入 。每个序列可以被打上多个标签 , 以方便聚合操作 。总的来讲 , OpenTSDB的性能无论是写入还是查询 , 都很一般 , 而且系统的稳定性欠佳 。但吸引人的是 , 它支持集群部署和支持水平扩展 。
以腾讯的CTSDB时序数据库为例 , CTSDB是腾讯云推出的一款分布式、可扩展、支持近实时数据搜索与分析的时序数据库 。该数据库为非关系型数据库 , 提供高效读写、低成本存储、强大的聚合分析能力、实例监控以及数据查询结果可视化等功能 。整个系统采用多节点多副本的部署方式 , 有效保证了服务的高可用性和数据的高可靠性 。CTSDB 在处理海量时序数据时具有的优势包括:
- 高并发写入:数据先写入内存 , 再周期性的 Dump 为不可变的文件存储 。且可以通过批量写入数据 , 降低网络开销
- 低成本存储:通过数据上卷(Rollup) , 对历史数据做聚合 , 节省存储空间 。同时利用合理的编码压缩算法 , 提高数据压缩比
4、TDengine
这是来自中国的开源软件 , 由涛思数据研发推出 。它不仅是一款时序数据库 , 而且还提供缓存、消息队列、数据订阅、流式计算等系列功能 , 是时序数据的全栈技术解决方案 。而且它不依赖任何第三方软件 , 安装包只有1.5MB , 使系统设计、安装、部署和维护都变得极为简单 。
文章插图
推荐阅读
- 百花草泡水喝的功效,脂肪肝适合喝什么
- 凉茶是药不是茶,喝凉茶注意事项
- 数据库中的索引,原理是什么?为什么查询使用索引就会快?
- 为什么使用移动路由的人,往往不愿意使用手机热点?
- 安吉白茶主要养生功能,安吉白茶和福建白茶有什么区别
- 什么是深度学习?
- 大学必备含金量高的几大证书是什么?
- 马里奥最初登场的游戏作品是什么?
- 一般公司或者团队是怎么进行代码开发并且部署到服务器上的?
- 地热放水最佳方法是什么?