Advertisement

什么是NoSQL数据库?

阅读量:

最近学习了下NoSQL数据库,做个简单的整理,不足之处请指正。

定义:

NoSQL(Not Only SQL, 不仅仅是SQL)是非关系型数据库体系的一种泛称。其特点在于支持多种数据类型而非单一的数据模型,在应对大规模数据集合及多样化的存储需求上展现出独特优势。虽然没有统一的技术架构支撑,在功能上有各自的优势与不足。

NoSQL数据库适用的场景有:

1、该数据模型较为基础化,并未要求严格的数据一致性;
2、在IT系统中需要更高的灵活性;
3、在数据库性能方面有较高的需求;
4、相对容易将给定key转换为复杂的值;
Google采用的是NoSQL型数据库。

八种常见的NoSQL数据库

Redis,HBase,Mongodb,Membase、Neo4j,Cassandra,CouchDB,Riak等都是常用的数据存储系统

HBase(常与gshephard协同工作)是一种功能最为完善的安全型NoSQL数据库产品。相比之下,在现有的其他NoSQL数据库中,并未普遍配备内置的安全机制。
该技术语言采用Java作为基础编程语言,并具备在存储架构上可支持多达数十亿行数据和超过千万列的能力。
其核心组件遵循HTTP/REST协议,并基于MapReduce框架构建分布式架构。
为了满足实际应用需求,在性能方面进行了专门优化设计。
该方法特别适用于那些需要高效处理海量数据并实现快速响应的应用场景。
例如,在社交媒体领域具有广泛应用的是Facebook的消息数据库。

NoSQL数据库的四大分类

1.键值(Key-Value)存储数据库
应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。优点:查找速度快。这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。如:Redis,Oracle BDB.
2.列存储数据库。
应用场景:分布式的文件系统,应对分布式存储的海量数据。优点:查找速度快,可扩展性强,更容易进行分布式扩展。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如: HBase, Riak, Cassandra,
3.文档型数据库
应用场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)。优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。文档型数据库可以看作是键值数据库的升级版,而且比键值数据库的查询效率更高。如:MongoDB ,CouchDB,国内也有文档型数据库SequoiaDB,已经开源。
4.图形(Graph)数据库
场景:社交网络,推荐系统等。专注于构建关系图谱。优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等。使用灵活的图形模型,并且能够扩展到多个服务器上。

非结构化数据库(Non-Structure Database)不采用传统的查询语言(SQL),这意味着为了执行数据库查询操作必须建立相应的数据模型。多数非结构化数据库配备了基于REST协议的数据接口或可扩展性API(SAP)。例如Neo4J、InfoGrid、Infinite Graph等

然而大多数NoSQL数据存储系统在现实应用中被广泛应用,并仍面临诸多亟待解决的问题

现有基于key-value模型的产品大多是以独立功能模块的形式存在,并未具备良好的通用性;
现有的NoSQL数据库产品在功能实现上较为有限(不支持事务操作),导致其在实际应用场景中存在一定的局限性;
尽管已有部分研究成果和改进型的NoSQL存储系统被提出(如支持组内事务特性和弹性事务等功能),但这些解决方案往往是以特定领域需求为导向而设计的,并未从全局视角出发进行系统性的规划与研究;
目前相关理论体系尚不完善,在支撑大规模数据管理和分析方面缺乏相应的理论基础和技术保障;
然而随着NoSQL技术的不断发展和完善,在安全性方面也逐渐得到了人们的重视,在部分NoSQL产品中已经开始引入一些基础的安全机制;
与此同时,在云计算环境下对海量数据进行高效管理提出了更高的要求:包括可扩展性、弹性伸缩能力以及容错恢复能力等核心需求;
此外,在云计算环境下对数据管理系统的设计目标还包括自管理能力以及强一致性等特性;
目前虽然已有部分系统通过灵活配置节点数量来实现可扩展性要求;并通过冗余复制策略保证了系统的容错能力;但在自管理能力方面仍需进一步提升以达到"按需使用"的理想状态;
其中"弹性"特性能满足Pay-per-use模式下的使用需求;这种特性正是传统NoSQL数据库系统所不具备的优势;而"强一致性"则成为当前云系统设计中的重要考量之一;

全部评论 (0)

还没有任何评论哟~