如何做好数据库管理系统产品选型 数据库管理系统类别与模型介绍
数据库管理系统(DBMS)是如今企业运营与分析系统的核心部分。数据对于企业来说就像是血液,而数据库管理系统则是数据顺畅流动的枢纽,它负责存储、管理、保护数据,并为业务应用以及终端用户提供支持。然而,如今数据库市场已经不再是关系型数据库的天下,不同类型的产品都拥有各自的特长与缺点,企业CIO在进行选型的时候需要仔细考虑其利弊。
过去30年当中,关系型数据库(RDBMS)产品在企业系统中占据了主导地位。随着服务器成本的不断降低以及性能的不断提升,关系型数据库也得到了最大限度的普及。但是在互联网时代到来之后,关系型数据库的短板就愈加明显了。如今,IT部门正在试图寻找处理非结构化数据的方法。与结构化数据相比,它的格式更加复杂多变,这使得许多企业不得不去考虑NoSQL数据库技术。此外,对于存在大量快速交易的应用,或者那些需要对数据进行实时复杂分析的应用,内存数据库(in-memoryDatabase)或许是个不错的选择。鉴于以上的场景越来越多地出现在企业当中,如今有不少CIO希望使用混合型的数据库平台来应对上述难题。
DBMS是现代化应用的核心,选择合适的数据库技术将会对IT项目成败起到决定性的作用。现如今的数据库市场相比于10年前已经变得更为复杂了,因此理解不同类型的DBMS有哪些特点,以及再何时、何处(场景)使用它们是十分必要的。在接下来,我们就将进行一个详细的介绍,希望能够为您的数据库选型起到帮助、指导作用。
数据库管理系统类别与模型
虽然很多新技术不断涌现出来,但在进行选型的时候,大部分企业还是会首先考虑关系型数据库管理系统(RDBMS)。大数据浪潮的席卷使得这样的情况有所改变,它同时也带来了新型的DBMS产品,在某些特定的场景中,它能够与关系型数据库软件一较高下。此外,DBMS中各种各样的产品类型还在不断地添加新的技术与功能,这使得整个数据库生态系统变得前所未有地复杂。
在使用率以及市场份额方面,关系型数据库毫无疑问仍然是领导者。基于集合代数等数学概念,关系型数据库提供了数据的存储、访问以及保护能力,同时针对大多数的交易型与分析型应用保证了其性能指标。在过去的三十多年当中,企业运营数据库管理系统基本上都采用了关系型技术。在这个领域,甲骨文(Oracle)、IBM(DB2)和微软(SQL Server)是三大巨头。针对大多数的应用场景,关系型数据库都体现了充分的适用性与可靠性。在财富500强当中,所有企业都在使用关系型数据库来支撑核心业务系统。当然,稳定性的代价就是高成本——关系型数据库的价格往往不便宜。
关系型数据库系统的另外一个优势就是对ACID原则的全面支持,即交易的原子性、一致性、隔离性与持久性。ACID能够保障所有的交易能够正确地执行,如果交易出错,它能够保证关系型数据库回滚到执行之前的状态。
鉴于关系型数据库如此强大、健壮的特性,为何市面上还会出现其他类型的数据库产品呢?答案很简单,基于web 的数据处理与大数据分析需求使得关系型数据库变得捉襟见肘。尽管关系型数据库也能够在这些场景下使用,但其他产品能够提供更灵活的模式。非强一致性模型以及更小的处理消耗更适合快速变化的动态环境,于是NoSQL进入了我们的眼帘。
NoSQL数据库相比于关系型数据库提供了更灵活的数据库模式(schema),其中每一个数据元素不需要存在于每一个数据实体当中。定义更松散的数据结构会随着时间的推移而进化,因此在一些特定场景下NoSQL数据库会是更加实际的解决方案。
NoSQL与关系型数据库的另外一个不同就是数据一致性的提供方式。关系型数据库可以确保存储的数据永远保持一致性,而大多数NoSQL数据库产品提供了更松散的一致性方式。事实上,关系型数据库产品已经可以提供不同级别的数据库锁、一致性与隔离性,而一些NoSQL则提供了多种一致性模型,可以支持完整的ACID。
NoSQL解决了一些关系型数据库不能解决的问题,针对海量数据的处理更得心应手。数据被认为是稀疏的,不是所有元素都被填充,在实际值中还有很多的“空白空间”。举个例子,就像一个矩阵中有很多0。
尽管NoSQL在特定的数据类型上有着一定优势,但与关系型数据库相比它的劣势也是非常明显的。比如,交易完整性、灵活索引以及查询易用性的缺失等。此外,NoSQL还包含了四个不同的类别,用来支持不同的应用:
键值型数据库(Key-value)
文档型数据库(Document)
列式数据库(Column store)
图型数据库(Graph)
#p#分页标题#e#
每一类的NoSQL数据库都是用不同的数据模型,并且有着各自的专长、缺陷以及使用场景。进行NoSQL数据库选型的时候需要对不同类型的数据库有一个深刻的认识与理解,同时需要结合数据与应用需求。
内存数据库:我们要介绍的最后一类数据库就是内存数据库,有时也称为主内存数据库。一个内存数据库主要通过内存来存储数据,这与基于磁盘的存储有所不同。
内存数据库的主要应用场景就是改善性能。数据存储在内存介质当中,I/O延迟将得到大大削减。因为机械硬盘的转动、寻道时间以及传输到缓存器的动作在内存中都被省去了。
内存数据库主要针对内存数据访问进行了优化,而传统数据库则是针对磁盘进行的数据访问优化。内存数据库产品还可以减少开销,因为其内部算法通常更加简单,需要更少的CPU指令。
另外一个发展快速的领域就是多模型数据库管理系统,它支持超过一种类型的存储引擎。许多NoSQL数据库产品支持一种以上的数据模型,比如文档型与键值型。关系型数据库产品也逐渐开始支持NoSQL功能,比如在关系型数据库引擎之上再添加列数据存储。
其他还有一些数据库类型,但与上述三种相比就小众的多了:
XML数据库,主要支持XML数据,与NoSQL的文档数据库相类似。如今大部分的关系型数据库都已经提供了XML支持。
列式数据库(columnar database )是SQL数据库系统的一种,它主要针对多行多列读取进行了优化,但写数据方面很少优化。
对象数据库在上世纪90年代非常流行,主要因为对象编程的出现。它与NoSQL文档数据库相类似。
如IBM IMS分级系统以及CA IDMS网络系统,主要运行在大型机上。这两个产品目前仍然有不少企业在使用。
额外提醒
在进行数据库管理系统选型的时候,有些问题仍然需要考虑。首先是平台支持。目前主流的计算环境包括了Linux、Unix、Windows以及大型机系统。并不是每一个数据库产品都支持以上四个平台。
另外一个考虑因素就是厂商支持。许多数据库产品都是开源的,特别是NoSQL数据库。开源技术能够增加灵活性,降低成本。但它缺少商业化支持,除非你购买了商用版。当在管理、支持方面遇到问题时,很多开源产品的成本就会直线上升。
你还可以选择数据库一体机或者云数据库。前者与硬件进行了预集成,并针对数据库应用进行了性能优化,打包出售,开箱即用。使用一体机可以减少部署和配置的开销,同时厂商会为硬件软件提供一体化的支持。而后者更适用于IT技术人员比较缺乏的企业,数据库运维都可以由云服务商来为你解决。
课课家总结
如果你正在进行数据库选型,首先就需要确定你的具体需求,然后再考察不同类型的数据库产品所提供的不同功能,它是否满足你的需求。然后再考虑具体的应用场景,哪些数据库产品对这些应用进行了优化。事实上,在进行决策之前有许多变化的因素需要考虑,做周全的准备才能做出最正确的选择。