综述:
随着信息化的浪潮和互联网的兴起,传统的关系数据库在一些业务上开始出现问题,其在面对大规模和高并发情境时已显得力不从心。而区别于传统的关系型数据库,不以表结构存储数据的非关系型数据库则由于其数据模型灵活,易扩展的特点得到了迅速的发展。
什么是非关系型数据库
随着信息化的浪潮和互联网的兴起,传统的关系数据库在一些业务上开始出现问题。传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题。而非关系型的数据库则由于其本身的特点得到了迅速的发展。
非关系型数据库(NoSQL)是一种用于存储和检索数据的数据库系统。区别于传统的采用了关系模型来组织数据的关系型数据库,非关系型数据库不以表结构存储数据。其可以处理大量的非结构化数据,如文本、图像等。与关系型数据库不同,非关系型数据库通常不使用 SQL 语言进行查询,而是使用其他查询语言或 API。
根据结构化方法和应用场景的不同,可以被大致划分为键值对存储数据库,文档数据库,列式数据库,图数据库。
非关系型数据库的优缺点
优点:
- 数据模型灵活:存储数据的格式可以是键值对形式、文档形式、图片形式等,而且无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式,应用场景广泛。
- 性能优越:非关系型数据库都具有非常高的读写性能,尤其在大数据量下表现优秀。
- 易扩展:去掉了关系型数据库的关系型特性,数据之间无关系,使得非关系型数据库非常容易扩展。
- 成本低:非关系型数据库基本都是开源软件,部署成本低。
缺点:
- 不提供SQL支持,学习和使用成本较高。
- 无事务处理。
- 复杂查询方面欠佳。
主流非关系型数据库简介
目前对于非关系型数据库主要有四种数据存储类型:键值对存储数据库、文档型数据库、列存储数据库、图形数据库。
Redis是目前使用较多的日志型、键值对存储数据库。键值对的存储方式在非关系型数据库中是最简单的一种,这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。这种方式在非关系型数据库类型中是最可扩展的一种类型。Redis适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。
HBase是一个分布式的、面向列的开源数据库,该技术来源于Google论文“Bigtable:一个结构化数据的分布式存储系统”。列存储数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。
MongoDB 是一个基于分布式文件存储的数据库,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。文档型数据库的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。MongoDB 是介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的非关系型数据库。
Neo4j是一个高性能的非关系型图形数据库。图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在图上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com