3.2.3.1 键值存储系统的特点
在互联网飞速发展的今天,键值存储系统和关系数据库系统将共存。虽然都是管理数据,但键值存储系统和关系数据库系统是完全不同的。
1)关系数据库系统中,数据库包含表,表包含行和列,行由各个列的数据值组成,在一个表中的行都拥有相同的策略。而在键值存储系统中,并不包含策略和关系数据库那样的表。键值存储系统一般包含域或桶,各个域或桶中包含若干条数据记录。
(2)关系数据库拥有良好的数据模型定义,包含策略、表的关系、事物等机制。数据之间的关系式建立在数据本身基础上的,而不是上层应用的功能和需要。键值存储系统中,数据记录只是简单地通过一个标识来识别和获取,数据之间没有关系的概念。
(3)关系数据库的目的是提高数据共享能力和减少数据冗余,键值存储系统一般需要进行数据冗余保证可靠性。
(4)关系数据库适合于存储传统数据,如字符、数字的存储和查询。键值存储系统适合于海量的非关系型数据的存储和查询。
总而言之,键值存储系统和关系数据库系统从根本上是不同的,键值存储系统在需要可扩展性的系统中和需要进行海量非关系数据查询和处理的环境中拥有明显优势。当前,键值存储系统在以下几方面的效果优于关系数据库系统。
(1)键值存储系统是云计算模式的最佳搭档 云计算模式就是需要灵活地应对用户对可伸缩性的需求。键值存储系统的可伸缩性的特点正好满足了用户的需求。如果试图把规模庞大的系统伸缩需求交给数十个甚至上百台服务器去处理,那么键值存储系统应该是一个比较好的解决方案。
(2)键值存储系统提供了相对廉价的存储平台,并拥有巨大的扩充潜力 用户通常只需根据自己的规模进行相应的配置即可,当需求增长时配额也能随之增加。同时,键值存储系统一般运行在便宜的PC服务器集群上,避免了购买高性能服务器的昂贵开销。
与关系数据库相比,键值存储系统也在一些传统的数据处理上存在明显的不足。例如,关系数据库的约束性保证数据在最低层次拥有完整性,违反完整性约束的数据是不可能存在于关系数据库系统中的,而键值存储系统一般都不同程度地放宽了对一致性和完整性约束的要求。键值存储系统不存在这些约束,使得程序员不得不承担起确保数据完整性的重要责任。然而在实际过程中,程序员经常会犯错误,使得系统出现一些Bug,这很可能引起数据完整性问题。其次,各种键值存储系统之间并没有像关系数据库的标准查询语言一样的标准接口,所以兼容性问题也是键值存储系统需要面临的一个重要挑战。
3.2.3.2 键值存储系统的分类
由于互联网快速发展对非关系型数据处理的需要越来越强烈,业界和学术界对键值存储系统的研究投入很大,现在已经出现了多种开源系统和商业产品,表3—2列出了这些典型系统。
……
展开