【数据库】——NoSQL数据库简单介绍

举报
雪月清 发表于 2022/05/19 10:52:12 2022/05/19
【摘要】 NoSQL是一个概念,泛指非关系型的数据库。有时称为"Not only SQL"不仅仅是SQL,包括但不限于键值存储数据库、文档型数据库、搜索引擎数据库、列存储数据库、图形数据库。

一、NoSQL概述

1.NoSQL简介

NoSQL是一个概念,泛指非关系型的数据库。有时称为"Not only SQL"不仅仅是SQL,包括但不限于键值存储数据库、文档型数据库、搜索引擎数据库、列存储数据库、图形数据库。


2.为什么用NoSQL

传统的关系型数据库如MySQL、SQL Server、Oracle等都是将复杂的数据结构归结为简单的二元关系(即二维表形式),能够使用SQL语句进行复杂的查询并且支持事务。但是随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的社交网络类型的web2.0纯动态网站,面临着很多诸如在巨大数据量下查询缓慢,单一的关系型数据模型难以应对数据种类复杂等情况。这时就需要用到NoSQL数据库了。

NoSQL 对 SQL 做出了很好的补充。在实际开发中,有很多业务需求,并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。比如:日志收集、排行榜、定时器等。


3.NoSQL的优势及特点

易扩展

NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。

大数据量,高性能

NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

灵活的数据模型

NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段将会非常复杂且消耗时间,这点在大数据量的Web 2.0时代尤其明显。

高可用

NoSQL在不太影响性能的情况,就可以方便地实现高可用的架构。比如Cassandra、HBase模型,通过复制模型也能实现高可用。

NoSQL在不同时期的诠释

1970:NoSQL = We have no SQL

1980:NoSQL = Know SQL

2000:NoSQL = No SQL!

2005:NoSQL = Not only SQL

2013:NoSQL = No, SQL!

这说明了,NoSQL是对SQL的补充,不管如何补充也都离不开SQL。

二、NoSQL的分类

键值存储数据库

键值型数据库通过 Key-Value 键值的方式来存储数据,Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。

键值型数据库典型的使用场景是作为内存缓存

Redis


redis是内存高速缓存数据库,基于高级的key——value存储系统,其中value支持五种数据类型:

1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)

Redis还支持事务和数据的持久化,能够快速的增删。应用场景有排行榜、秒杀、抽奖。


文档型数据库

文档型数据库可存放并获取文档,可以是XML、JSON等格式。在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。

MongoDB



MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。Mongo最大的特点是它支持的查询语言非常强大,在海量数据中查询速度非常快,支持分布式文件系统。


搜索引擎数据库

关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是倒排索引

Elasticsearch


Elasticsearch是一个高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据。

分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

实时分析的分布式搜索引擎。

可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。


列存储数据库

列式数据库是相对于行式存储的数据库,Oracle、MySQL、SQL Server 等数据库都是采用的行式存储,而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的 I/O,适合于分布式文件系统,不足在于功能相对有限。


 HBase



HBASE是一个高可靠性、高性能、面向列、可伸缩非关系型数据库,利用 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)提供分布式数据存储,一个表可以有上十亿行,上百万列。在实时读写、随机访问超大规模数据集方面十分优秀,多用于数据分析、数据挖掘。


图形数据库

图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。图形数据库最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。如社交网络中人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。

Neo4J


Neo4j是一款强健的,可伸缩的基于Java语言编写的高性能图数据库。能够高效的解决复杂的数据关系。比如好友推荐、商品推荐等就是使用了基于Neo4j的智能推荐引擎。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。