|
知识路径: > 数据库技术 > 数据库技术基础 > 数据库模型 > 典型数据库:RDB(关系数据库)、OODB(面向对象数据库)、ORDB(对象关系数据库)、XML数据库、NoSQL(非关系数据库) > 非关系型数据库NoSQL > NoSQL数据库的种类 >
|
相关知识点:19个
|
|
|
|
NoSQL数据库除了文档存储、键值存储、列存储和图存储四种主流的存储方式外,还有其他类型的数据库,在此做简要的介绍。
|
|
|
|
多值数据库系统是分布式数据库系统的重要分支。它速度快,体积小,比关系数据库便宜,很快得到了认可。它提供了一个通用的数据集成与访问平台,屏蔽了现有各数据库系统不同的访问方法和用户界面,给用户呈现出一个访问多种数据库的公共接口。多值数据库系统使用的多个异构的数据源之间可以共享它们相互依赖的数据,并具有相互操作的能力。这种技术将在电子政务、电子商务、企业信息集成、军事指挥、金融证券、办公自动化、远程教育、远程医疗等领域发挥巨大的支撑作用。
|
|
|
常见的多值数据库有Rocket U2、Extensible Storage Engin(ESE/NT)、OpenInsight和OpenQM等。
|
|
|
其中,Rocket U2包含了UniData和UniVerse两个扩充型关系型数据库,采用多键值存储,支持嵌入式实体,虚拟元数据,具有.NET、socket和Java的API,具有针对快速、经济、垂直应用开发的集成式开发环境。
|
|
|
ESE是一种非关系型嵌入式数据库引擎,适用于那些需要高性能、较小存储空间支出的应用。ESENT已经应用于Windows Desktop Search、Windows Live Mail等多个微软产品中。它有高并发的数据库访问,灵活的元数据定义(表、列、索引),支持整形、浮点型、字符型、二进制列的索引等特点。
|
|
|
OpenInsight采用TCP/IP协议、命名管道的体系结构,支持远程登录,采用关系的或多键值存储,支持嵌套实体,在关系型的存储结构中,表的行和大小可动态改变。
|
|
|
OpenQM的商业版本支持Windows、Linux(RedHat、Fedora、Debian、Ubuntu)、FreeBSD、Mac OS X和Windows Mobile等,商业版本包括一个GUI管理界面和终端模拟器,但开源版本仅包括核心多值数据库引擎,主要是为开发人员准备的。OpenQM支持嵌套数据,能够高度自动化地分配表空间,通过多种锁机制来控制并行计算,采用QMBasic(集成了面向对象的编程机制)来进行快速开发。
|
|
|
|
时间序列数据库是指具有处理时间序列数据,能对时间数据数组建立索引的优化数据库系统。时序数据与每个人存在紧密联系。如电商系统获取每笔订单交易金额和支付金额的价格曲线,随时间变化的温度轨迹,能量消耗的负荷消耗断面轮廓等。这些曲线、轨迹、轮廓被统称为时间序列。
|
|
|
流数据库又被称为实时数据库,这是一种使用实时处理数据的方式来处理状态不断变化的数据库系统。对时间序列的数据库提出实时的处理要求,那么时间数据库就是流数据库。例如股票的价格、自动驾驶汽车的数据曲线等都需要实时计算处理,此时流数据库发挥巨大作用。
|
|
|
归结起来,业务场景选择时间序列与流数据库这类NoSQL数据库而非通用的数据库有两个核心原因:
|
|
|
(1)规模:时间序列的数据积累速度很快。在当前的物联网时代,一辆联网的汽车每小时产生的数据达到几百GB。关系型数据库处理这种大型数据集的效果糟糕,而针对时间序列数据微调过后的数据库能够很好地处理规模数据。时间数据库将时间作为最高优先级处理,通过提高区间数据实时查询效率来处理这种大规模数据,并带来性能的提升,包括:每秒的写入速度,能够支撑的设备指标量,读取数据的速率和高存储压缩比。
|
|
|
(2)可用性:时间序列数据库有一些特有的功能和操作,如数据保留策略、连续查询、灵活的时间聚合等。并且其具有很好的扩展性,如时序数据插值计算,降精度计算,聚合计算等,在非时序数据库中都不具备这种能力。
|
|
|
企业开发人员越来越多地采用时间序列数据库,并将它们用于各种使用场景。这里介绍两种常见的时间序列数据库InfluxDB、OpenTSDB。
|
|
|
InfluxDB是一款专业的时序数据库,只存储时序数据,因此在数据模型的存储上可以针对时序数据做非常多的优化工作。为了保证写入的高效,InfluxDB也采用LSM(Log-Structured Merge Tree)结构,这种结构的核心思想是放弃部分的读能力,换取写入的最大化能力。数据先写入内存,当内存容量达到一定阈值之后更新到文件。这种设计是将时间序列数据按照时间线挑出来,同一数据源的标签不再冗余存储,另一方面给定数据源和时间范围的数据查找,实现了倒排索引增强了多维条件查询的功能,拥有强大的聚合功能,可以非常高效地进行查找。
|
|
|
OpenTSDB基于HBase存储时序数据,以metric为单位,metric就是1个监控项,譬如服务器的话,会有CPU使用率、内存使用率这些metric,并且数据存储支持到秒级别。OpenTSDB支持数据永久存储,即保存的数据不会主动删除,并且原始数据会一直保存(有些监控系统会将较久之前的数据聚合之后保存)。
|
|
|
|
网格和云数据库(Grid&Cloud Database)是基于网格计算或者云计算的数据库。云计算是一种随需计算或者效用计算,允许用户无需了解底层IT基础设施架构,就能通过互联网访问各种基于IT资源的服务。网格计算可以理解为“虚拟超级计算机”,以松耦合的方式将大量的计算资源连接在一起提供单个计算资源无法完成的计算能力。二者的意义在于,即使本地资源有限,个人和企业开发者也可通过网络进行复杂运算,这个计算过程后端实现是透明的。
|
|
|
四类主流的数据库提供基于云服务的能力,满足个人和企业基于云平台部署的业务发展需要,如最新的文档存储MongoDB、Amazon DynamoDB。但是这里的网格和云数据库与这四类数据库有两个显著区分特点:第一个特点,网格和云数据库有明显的网格计算或者云计算特征,如基于大数据的计算、实时数据流的计算和分布式计算等;第二个特点,网格数据库和云数据库天生是为了网格计算或云计算而产生的,它们是绝对的专业户,而基于云平台提供服务的数据库只能算是可以在云平台上正常使用的某类数据库,即普通用户。目前,主流的数据库产品有GridGain和CrateDB。
|
|
|
CrateDB是开源的大规模可伸缩的数据存储系统,提供强大的搜索功能。它使用SQL处理各种表格数据、非结构化数据和二进制对象,并且支持高可用性和实时大规模并行访问和处理。
|
|
|
GridGain内存数据库可支撑OLTP、OLAP或者混合事务/分析处理使用场景,服务器集群中分发数据集,为此能比基于磁盘的数据库快千倍;而分布式SQL功能可以使用标准数据库命令通过ODBC/JDBC接口读取和写入数据库,提供巨大的数据库可扩展性。
|
|
|