最适合物联网应用的开源数据库
物联网(IoT)基于其固有的特性而依赖于与其相关联的数据库中的某些特定特征。 本文介绍了一种可用于物联网的开源数据库管理系统。
术语"物联网"指的是:(i)基于互联网技术实现各智能实体间的互联互通构成的整体网络;(ii)支撑这一目标的一系列核心技术体系包括但不限于RFID技术、非接触式感应技术、工业通信设备等;(iii)借助上述核心技术体系所构建的应用系统与服务生态,在商业层面创造新的增长点与市场拓展机会。
根据Gartner的数据预测, 到2017年, 全球将成为拥有84亿个物联网设备的应用场景. 物联网技术面临着前所未有的挑战, 尤其是在数据库管理方面. 一方面, 它要求实时整合海量数据, 并将其视为流量来处理; 另一方面, 数据的安全性问题也变得尤为突出. 例如, 智能城市中的环境温度传感器可以在几分钟内收集大量关于温度湿度的数据.
为了高效管理物联网数据, 选择合适的数据库至关重要. 然而, 物联网环境往往各不相同, 因此选择合适的数据库并非易事. 在面对物联网应用时, 我们需要考虑多个因素: 其中最为关键的是系统的扩展能力——即能够足够快速地处理海量数据的能力; 灵活性——能够适应不同类型的数据显示模式; 可移植性——确保系统可以在不同环境下运行良好; 分析工具支持——方便后续的数据挖掘; 安全性——防止敏感信息泄露; 最后是成本效益——在预算范围内找到最佳解决方案.
以下是一些可用于基于IoT的应用程序的顶级开放源代码数据库。
InfluxDB
由InfluxData作为开发者的开源分布式时间序列数据库。它使用了Go编程语言编写,并基于KeyDB中的LevelDB构建。除了前端界面外,在线服务和API则允许用户直接与存储层进行交互。该系统能够实时计算并汇总指定时间段内的数据值。
通过这样的软件如Grafana即可访问该存储层服务。Grafana是一个功能强大的前端工具,在可视化时间序列数据方面具有显著的优势。由于其完全独立于外部依赖关系,在查询时只需使用SQL即可检索度量、系列和点的数据结构。每个数据点都包含独特的键值对组合,并支持64位整数、64位浮点、字符串以及布尔类型的数据存储类型。这些数据项按时间和标记集排序索引以便快速定位和检索信息。该存储层通过HTTP协议以及TCP和UDP协议持久保存数据内容。
特征
- 完全基于Go语言开发,并可直接生成独立于外部库的一份单一二进制文件
- InfluxDB的时间序列管理(TSM)引擎不仅支持高效的数据存储与处理能力,并且实现了压缩机制以减少存储占用
- 插件兼容多种数据采集协议包括但不限于GraphiteCollectd及OpenTSDB等常用协议
- 提供了基于Web的统一界面用于管理数据库资源与用户权限
- 具备将不同时间序列数据集整合的能力
官方网站: https://www.influxdata.com/
最新版本:1.5.3

CrateDB
由Crate.io Inc.开源发布的一款分布式SQL数据库管理系统完整整合了基于搜索功能的文档型数据存储方案。 Crate.io首席执行官Christian Lutz指出:"当我们打造Crate.io时就已规划好了为其提供适合机器数据时代的SQL体系架构今天已有75%以上的客户选择了CrateDB来管理其机器与物联网设备数据这一选择源于我们强调易用性、高性能以及多功能性的战略目标"。 CrateDB实现了机器数据应用与传统NoSQL解决方案之间的桥梁使原本受限于NoSQL工具的应用场景得以通过强大的关系查询能力实现无缝迁移 CrateDB将传统的SQL查询功能与现代搜索引擎的核心能力相结合并融合了容器化架构的特点从而实现了对分析型数据存储工具(如Splunk)的有效支撑 CrateDB平台包含了一个高效的分布式SQL查询引擎旨在加速连接聚合与即席查询提供了集成化的搜索数据分析与查询功能同时支持自适应容器架构和自动化的数据分区策略以实现简单有效的系统扩展 capabilities. 它还具备一套完整的API接口系统支持开发者快速集成与扩展基于文档型数据的应用场景. 在功能构建方面 CrateDB不仅采用了传统的面向文档型数据库设计还借鉴了一些NoSQL数据库的设计理念例如其使用的Facebook Presto高级SQL解析器能够实现复杂的语义分析和预测性分析功能. 此外 CrateDB还提供了用户友好的操作界面(Crate Shell CLI)让用户能够轻松进行交互式数据分析与决策支持.
特征
- 高度可扩展性:数据库的更新过程极为简便,只需新增一台服务器即可完成集群扩展;由于CrateDB会自动管理数据重新分配机制,因此无需人工干预即可完成资源优化配置。
- 高可用性:CrateDB具备强大的容错能力,它通过跨集群自动复制功能保障了在故障发生时的数据完整性;即使面临硬件或软件升级也不会影响数据库的操作流畅度。该系统还具备自我修复能力,能够主动识别并隔离已损坏节点,确保集群整体稳定运行。
- 实时数据提取:即使系统正处于写操作中,CrateDB依然能提供毫秒级的速度查询响应时间,并且能够有效避免传统数据库中的锁阻塞问题。
- 支持各种数据:CrateDB不仅支持关系型数据库的传统存储方案,还提供了JSON文档格式的数据存储方式;此外,它还引入了blob存储技术,能够高效地存储和检索视频文件、图片及其他非结构化数据类型。
- 它支持地理空间索引和动态模式配置功能,使得CrateDB在架构设计上具备极大的灵活性;这种特性非常适合基于敏捷开发理念的后端系统设计以及物联网数据库应用开发需求。
官方网站:https://crate.io
最新版本:2.3.11
Riak时间序列存储系统(Riak time series system)
特征
- 提供了一个无需分片即可向现有数据库架构添加新节点的功能; 数据将自动且均匀分布在数据库集群中。
- 支持基于DDL的数据表和字段定义,同时也能存储结构化和半结构化的数据。
- 提供多集群复制功能,旨在帮助系统管理员通过其内部数据中心及全球任意地理位置的数据中心进行本地或远程备份,以增强系统的容灾能力。
- 提供了一种直观易用的全局数据库访问方式,允许用户轻松编写类似SQL的数据查询语句即可访问全部数据库资源。
- 提供了与Java、Ruby、Python、Erlang、Go、Node.js以及.NET等主流编程语言之间的API及客户端库集成能力,从而方便开发者快速构建跨平台的应用程序。
- Riak Meso框架不仅提供了高效的集群资源管理功能,还集成了"按钮"式的放大缩小操作功能,极大提升了系统的管理效率。
- 提供了与Apache Spark完全集成的支持,特别适用于对时序数据分析进行处理和建模。
主要支持的操作系统包括...
- CentOS Version based on Centos架构的第6版*
- CentOS Version based on Centos架构的第7版*
- Red Hat Enterprise Linux versions: RHEL-6和RHEL-7*
- Ubuntu LTS系列中的Utopic和Xenial版本*
- Debian version: Wheezy("Wheezy"是主要版本,在括号中注明开发版本存在)*
- Debian version: Jessie("Jessie"是主要版本)*
- macOSversions从version号10.11及以上开始,并在括号中注明开发版本存在*
- Amazon Linux发布年度为2016年9月*
官方网站:http://basho.com/products/riak-ts/
最新版本:1.5.2

MongoDB
MongoDB 是一种全面且适应性强的 NoSQL 数据库解决方案。它不仅提供丰富的一级索引类型,并且支持范围查询、排序操作、聚合计算以及地理空间索引等多种高级功能。作为自由开源软件平台,默认情况下采用与 JSON 类似的文档结构,并基于其独特的模式设计运行。
MongoDB 通过引入自动填充机制,在无需额外存储空间的情况下实现高效的数据缓存与快速响应能力。其内存缓冲区设计允许系统在运行时动态管理大量数据存储需求,并通过优化算法提升整体查询效率与性能表现。
该系统不仅提供了完善的数据库操作接口(CRUD),还集成了一套强大的高级API集合用于复杂业务逻辑处理,并且内置了高效的文本检索与地理位置查找功能模块,默认情况下默认开启这些核心组件服务以满足企业级应用需求
特征
该系统提供全面的支持方案:一方面实现快速查询服务的核心功能;另一方面则具备独特的空间信息索引和全文检索系统等附加特性。
该系统被聚合管道整合使用;其核心优势在于能够高效地构建复杂聚合结构从而优化数据库性能。
该系统基于生存时间的时间戳集合机制;这种设计能够在特定时间段内动态地管理数据有效性。
该系统采用了易于操作的标准协议;特别适用于存储大型文件以及相关的元数据文件。
该系统采用JSON格式进行数据存储与传输;作为通用的标准协议它在Web应用以及数据库领域均展现出良好的适用性。
该系统在服务器端集成JavaScript函数;其核心功能是通过Map-Reduce算法实现高效的分布式计算处理。
该系统集成MongoDB管理服务(MMS)工具;这种配置能够让用户方便地监控数据库运行状态并完成数据备份操作。
由于系统的数据存储架构基于分片设计;因此它具备良好的自动负载平衡配置能力从而保证系统的高可用性和稳定性。
Cloud Available on AWS, Azure, and Google Cloud Platform
最新版本:4.0
RethinkDB
RethinkDB是一款开源分布式数据库软件平台,主要面向存储JSON格式文档的应用;该系统支持多节点部署模式,从而实现了对传统数据库架构的重大突破。
相较于MongoDB系统的优势显著, RethinkDB在多个方面都展现了明显优势:
- 支持高可用性和容错能力
- 采用异步处理机制
- 优化了架构设计
- 支持标准化接口规范
- 具备动态表单设计能力
- 配备自动扩展功能
- 特别适合物联网场景的应用需求
- 配置简便且易于管理
- 高级查询语言具备表连接、子查询以及大规模并行分布式计算功能。
- 该系统提供了一个优雅且强大的操作与监视API, 它与数据库集成在一起, 并有助于提升其扩展性。
- 简单而美观的管理用户界面设计, 您可以在短时间内完成数据分片与复制操作, 同时为用户提供丰富的在线文档和技术建议。
特征
- 该系统具备容错机制,在主服务器出现故障时能够自动切换至备用服务器。
- 无需额外操作的实时即插即用节点能够持续运行一秒钟。
- 异步应用程序编程接口由Ruby和Tornado中的Eventmachine实现的支持异步查询功能。
- 该系统可使用HTTPS协议进行安全访问RethinkDB。
- 此外还提供了多种数学运算功能包括地板运算、单元格计算以及圆形计算。
官方网站:https://rethinkdb.com/
最新版本:2.3.6

SQLite
SQLite是一款开源型且嵌入式的数据库系统,专为程序设计提供了一种简便的数据管理方式,不会带来任何开销.它高度便携,容易操作,结构紧凑,并且具有高效的可靠性.
SQLite遵循ACID兼容性;它遵循大多数SQL标准,并采用灵活和弱化的SQL语法。 SQLite引擎并非独立运行;它可与静态或动态的应用程序无缝连接。
特征
无需依赖独立服务器进程或系统架构,在无服务器环境也能正常运行。
无需进行系统管理配置,并支持基于低配置硬件构建基础。
自给自足且完全独立于外部依赖性。
基于ANSI-C语言开发,并提供直观易用的应用程序编程接口(API)。
跨平台支持:适用于UNIX、Linux、Windows以及Mac OS X等多种操作系统环境。
事务处理完全遵循ACID模型,在多线程环境下仍能确保数据一致性与安全性。
全面支持SQL92标准下的各种查询操作。
经过 rigorous 测试和验证,在SQLite数据库中运行稳定可靠,并持续更新以保持最佳性能状态。
最新版本:3.24.0
该分布式开源数据库 Apache Cassandra 被认为是一种高效的分布式系统,在存储和管理大量结构化的数据方面展现出卓越的能力,在多个商品级服务器上提供一致性和高可用性的解决方案。与现有的其他开源数据库相比,在提升系统的可靠性和扩展性能方面提供了多种高性能特性。该项目最初旨在支持 Inbox 邮件搜索功能,并于 2008 年开放源代码。它实现了没有单点故障的 Dynamo- style 复制模型,并引入了更加灵活的数据组织模式——列族模型。
特征
- 大规模可扩展架构:Cassandra具备无主设计特点,在所有节点上实现统一级别管理,并能轻松实现高扩展性。
- 无主架构:支持数据在任意节点上的读写操作。
- 线性可扩展性能:随着系统节点数量的增长,Cassandra整体性能表现将随之提升。
- 故障检测与恢复:系统能够方便地检测并恢复因故障导致的数据丢失节点。
- 模糊与动态数据模型:提供灵活的数据存储类型,并支持快速增删改查操作。
- 数据保护机制:通过提交日志记录和内置安全措施(包括数据备份与恢复功能)来保障数据完整性和安全性。
- 可调一致性水平:支持在分布式架构下实现灵活的数据一致性管理。
- 多数据中心复制功能:允许将数据库复制到多个数据中心以提高可用性和可靠性。
- 数据压缩优化:系统内置压缩算法可压缩高达80%的数据量且无需额外开销即可完成。
- 高效查询语言支持:提供了一种类似于传统SQL语言的高效查询工具集。
- 这使得开发人员能够轻松地将现有技能从关系型数据库转移到Cassandra数据库中使用。
官方网站:http://cassandra.apache.org
最新版本:3.11.2
