-
2022-01-21 00:08:26
基于自己的理解,对几个常见的NoSQL数据库进行一下简单介绍,如有描述错误的,还请指正一下哈
一、数据库分类
数据库分两大类:SQL数据库和NoSQL数据库
SQL数据库
常用的有
Mysql、Oracle、MSSQL、DB2等,这些大家应该都比较熟悉,都是SQL查询,语法大同小异。NoSQL数据库
NoSQL数据库与传统的SQL数据库不同,SQL数据库是按行存储数据的,而NoSQL数据库按数据存储结构分以下四类:类型 其中的扛把子 键值数据库 Redis 列族数据库 Hbase 图数据库 neo4j 文档数据库 MongoDB 二、几类常用NoSQL数据库简介
1、Redis
Redis算是这几类之中最常见的了,因其高速的特点,常用作缓存。
为什么Redis速度贼快?
- 数据在内存,读写都在内存,速度远超从磁盘读写(会异步持久化到磁盘,不会关个机就数据全丢)
- 单线程读写,不会有多线程频繁切换上下文或者抢资源造成的额外开销(只是读写单线程,持久化之类的操作还是其他线程在做的)
- 非阻塞的多路复用,提高线程工作效率(这个不太好解释,类似你到某个地方去修手机(维修中心只有一个人),有个人A排在你后面,维修中心的工作人员接待你进行登记之后,然后需要你再提供发票;你回家去拿发票,维修中心的工作人员不会一直等着你,而是会暂时对A提供服务,等你回来了就暂停对B的服务,继续对你的服务,等你这边结束了再继续A的)
应用场景
- 高并发读写场景下,对某些不经常变更的信息做缓存,避免直接访问数据库(需要注意缓存穿透、雪崩)
- 分布式锁
- 计数(例如商品秒杀的计数,并发或多线程情况下需要注意是否算错)
- 保存session 等
2、Hbase
Hbase主要是应用于大数据方向,搭建在大数据平台上,结合分布式文件系统HDFS使用;
Hbase的数据结构
- 数据是如何存储到文件的?
其特点是以列族为文件来存储数据,有多少个列族就有多少个文件,以Hfile压缩存储到HDFS
在存储数据前会根据rowKey进行数据排序,而查询数据时,是根据rowKey+列族|字段去查询数据的,因此在Hbase中,对于rowKey如何定义很重要,好的rowKey设计,能够大大提高数据的查询效率 - 每个行列的cell带了哪些信息?
rowKey(用于定位数据)
字段值
时间戳(cell数据发生变更,不会覆盖旧数据,而是会生成一个带新的时间戳的记录,可设置保留多少条旧记录或者多少天的)
Hbase的应用
- 主要是在数仓或分析平台,进行海量数据的分析处理
3、neo4j
neo4j是一个图数据,是用于存储各种关系,主要用于社交推荐、关系透视啥的
例如:你跟你前女友存在关系,你现女友跟你存在关系,某社交软件把你前女友推荐给现女友,就是通过图数据找到他俩之间存在关系的neo4j的特点
- 单一纯粹,就是存储和找关系的,在查询关系上有着SQL数据库无法比拟的速度
- UI界面好看,真的好看
存储结构
- neo4j是将定长的信息和非定长的信息分开存储的
- 链式存储,节点是单向链表,关系是双向链表
4、MongoDB
这个没用过,只知道是BSON(二进制json)文档存储,主要用于爬虫相关的数据存储
更多相关内容 -
NoSQL数据库原理课件-侯宾.zip
2021-05-18 09:20:23分布式数据库课件 -
教学大纲 NoSQL数据库原理_数据库原理答案
2020-05-27 12:08:59Spark大数据技术与应用教学大纲 课程名称Spark大数据技术与应用 课程类别必修 适用专业大数据技术类相关专业 总学时64学时 总学分4.0学分 课程的性质 本课程是为大数据技术类相关专业学生开设的课程 NoSQL数据库大多... -
NoSQL数据库入门与实践答案—-第二章
2021-01-07 13:22:021. 单机环境下运行数据库的四种局限性 单机读写数据速度瓶颈问题 单机存储数据量的有限问题 单机指令之间速度的细微区别 安全性问题 2. 集中式数据处理与分布式数据处理,在物理上核心区别 集中式:指一堆... -
NoSQL数据库入门
2018-09-11 10:04:45NoSQL数据库入门 -
数据库7.6 NoSQL数据库项目实践 (2)_数据库实验心得体会
2020-04-14 12:39:31* 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 计算机又称电脑任何计算机不管它是什么类型都是由程序指令控制机器操作完成特定工作任务 计算机又称电脑任何计算机不管它是什么类型都是由程序指令... -
初识NoSQL NoSql数据库入门 NoSql数据库基础知识
2020-09-10 12:49:28大家有没有听说过“NoSQL”呢?大家可能会误以为是“No!SQL”的缩写,但实际上,它是“Not Only SQL”的缩写。它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不... -
noSql数据库面试题整理.zip
2020-06-29 14:07:58java nosql数据库面试资料,关于MongoDB、radis、memcached,帮助大家在面试过程中碰到的一些问题,进行了整理 -
nosql数据库hbase
2018-12-14 09:02:15便于学习nosql,hbase的PPT,学习好材料。 -
最新统计排名前十的SQL和NoSQL数据库排行榜
2020-09-10 12:34:42主要介绍了最新统计排名前十的SQL和NoSQL数据库排行榜,本文包括Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB等数据库,需要的朋友可以参考下 -
关于NoSQL数据库你要了解的10个关键特征
2021-01-19 22:02:30本文中我们将关注非关系型NoSQL数据库的10个关键特征:排在前5位的优点和前5位的挑战。 NoSQL的五大优点 1:弹性扩展 多年来,数据库负载需要增加时,数据管理员只能依赖于纵向扩展(scale-up)–买更多更强... -
大数据技术原理与应用之NoSQL数据库(PPT-31张)讲课教案.ppt
2020-04-25 03:11:125.3 NoSQL与关系数据库的比较;5.3 NoSQL与关系数据库的比较;5.3 NoSQL与关系数据库的比较;5.4 NoSQL的四大类型;5.4 NoSQL的四大类型;5.4.1 键值数据库;5.4.2 列族数据库;5.4.3 文档数据库;5.4.4 图形数据库;5.5 ... -
NoSql数据库PPT
2019-01-22 10:29:27关于nosql数据库的ppt,图、列、键值对、文档数据库的相关介绍 -
NoSQL数据库入门与实践(基于MongoDB、Redis)
2019-05-19 20:27:42NoSQL数据库入门与实践(基于MongoDB、Redis) -
(完整版)4.《NoSQL数据库原理与应用》课程教学大纲(正式版).doc
2020-10-29 08:29:00NoSQL数据库原理与应用 含实验 教 学 大 纲 2018 版 2018 年 10 月 前 言 一大纲编写依据 NoSQL泛指非关系型的数据库随着互联网 web2.0 网站的兴起传统的关系数据库在 应付 web2.0 网站特别是超大规模和高并发的 SNS... -
JAVA操作NOSQL数据库
2018-11-09 11:03:09JAVA操作NOSQL数据库,包括hbase,cassandra,kudu,文档和代码都有。 -
四类NoSQL数据库适用场景总结_图数据库neo4j应用场景
2020-08-29 13:23:26键值数据库 适用案例 现在讲几个适合使用键值数据库的情况 1 存触会话信息 通常来说每一次网络会话都是唯一的所以分配给它们的 session id 值也各 不相同如果应用程序原来要把 session id 存在磁盘上或关系型数据库... -
NoSQL数据库原理第三章HDFS基本原理(4:3)v1.0.pptx
2020-04-10 11:29:07NoSQL数据库原理第3章 HDFS的基本原理第3章 HDFS的基本原理3.1.1 Hadoop的由来2013年-2016年谷歌公司发表三篇论文被称为谷歌大数据的三驾马车The Google File SystemMapReduceSimplified Data Processing on Large ... -
8种主流NoSQL数据库对比
2014-09-02 22:49:288种主流NoSQL数据库对比,有时间可以了解了解 -
由浅入深掌握大数据列式存储NoSQL数据库Kudu视频教程
2021-10-21 14:08:21从零开始讲解大数据列式存储NoSQL数据库Kudu,基于Kudu构建高性能随机读写访问的数据存储系统,原理从入门到深入,搞定面试 课程亮点 1,知识体系完备,从小白到大神各阶段读者均能学有所获。 2,生动形象,化繁为... -
用Python写一个NoSQL数据库
2021-02-25 10:01:47本文译自WhatisaNoSQLDatabase?LearnByWritingOneInPython....在本文,我们将会通过纯Python(我比较喜欢叫它,“轻结构化的伪代码”)写一个NoSQL数据库来回答这些问题.很多情况下,SQL已经成为“数据库”(database)的一 -
NOsql数据库论文
2016-03-12 15:15:02这个是我写的NOsql数据库的论文也是期末作业,有需要的可以下载下来用 -
NoSQL数据库简介
2022-04-01 13:36:45假如必须支持数量极为庞大的Web用户,而不是像原来那样只需要支持一小部分商户。 开发者要求数据库必须能够提供下列几个方面的支持: 对大批量读写操作的处理能力;...接下来,我们介绍NoSQL数据库。.假如必须支持数量极为庞大的Web用户,而不是像原来那样只需要支持一小部分商户。
开发者要求数据库必须能够提供下列几个方面的支持:
- 对大批量读写操作的处理能力;
- 较低的延迟时间和较短的响应时间;
- 较高的数据可用性;
- 关系型数据库很难满足上述需求。
对于大规模的数据管理任务来说,以下4项特征尤为重要:
- 可伸缩性:有效应对负载变化能力。
- 成本开销:提供多种计费方案。
- 灵活性:不需要固定的表格结构。
- 可用性:利用很多台低廉的服务器来搭建一套系统。
数据库管理系统特性表
接下来,我们介绍NoSQL数据库。
NoSQL数据库
数据库系统必须完成两项任务:存储数据和获取数据。为了满足这两项需求,数据库管理系统需要满足三件事:
- 持久的存储数据;
- 维护数据的一致性;
- 确保数据的可用性。
持久地存储数据
必须采用某种存储方式使得数据库服务器在关闭之后,依然能够保留其数据。假如将数据存储在内存RAM中,断电之后,数据也就丢失了。
数据必须可供获取:持久化存储数据可以用不同的方式获取。闪存:可以直接按照存储位置来读取数据。
磁盘和磁带:必须先把驱动器中的活动部件移动到适当的位置,使得设备的读取磁头位于待读的数据块上,然后在进行读取。维护数据一致性
数据库中的数据应该处在协调一致的状态。当两位或多位数据库用户在使用同一份数据时,如何正确地实现读取操作和写入操作。
首先,更新客户的待付账款;然后更新本公司的可用资金总额。
确保数据的可用性
如果数据库只运行在一台服务器上面,那么会有很多原因导致用户无法访问。(硬件故障、版本升级等)
一台用来更新数据并响应用户的查询,另一台作为备份,当前者出现故障,可以使用后者给用户提供服务。要想在多台服务器中维护同一个数据库管理系统是有一些困难的。如果两台数据库服务器必须保证各自拥有的数据彼此相同,那么数据库系统就要花费更长的时间来执行相关的事务。对于保证一致性及高可用性的应用程序来说,这么做是值得的。比如银行的财务系统。然而对于其他一些应用程序来说,能够迅速执行数据库操作要比随时保持数据一致性更为重要。比如某网站的电子商务网站。
场景分析
在用户按下“添加到购物车”时,需要等待多久才算合适呢?最理想的状态是,客户能立刻得到响应,从而继续进行购物。但如果这个界面用起来很慢,而且不够流畅,那么用户可能就会去改用另一家性能好的网站了。故在这种情况下,快速响应要比随时维持数据一致性更为重要。
解决方案:先把新数据写入其中一台服务器,并告诉程序已经保存到这台服务器了。此时,网站界面可以通知用户,该商品已经添加到购物车中。当用户收到购物车已更新消息时,数据库管理系统可以把刚刚修改的数据复制到备份的服务器中。
说明:虽然用户的购物车数据在这两台服务器之间可能出现短暂的不一致现象,但用户依然可以继续购物。这两台服务器中的购物车的数据最终仍然会保持一致,我们允许这种短暂的不一致状态。
在执行读取操作时,若想判断出各台服务器所返回的响应数据是否正确,解决方案就是同时去查询含有该数据的那些服务器。
NoSQL数据库通常采用最终一致性来满足用户对一致性的需求,即在某一段时间内,多份数据库拷贝中的数据可能不同但它们最终会具备相同的值。
把购物车数据复制到备份服务器中,但是当主服务出现故障时,备份服务器中的数据仍然可以使用,但是如果主服务器故障之前没有将最新的数据写入备份服务器,那么备份服务器就会与主服务器不同。
如果NoSQL数据库的数据保存在5台副本服务器中,且数据库的读取阈值为3,那么只要有其中3台服务器的给出相同的应答消息,系统就会把该结果返回用户。
有3台服务器做出相同的应答,另有一台服务器给出的应答与这三者不同。对于每种响应结果,数据库都会统计出返回这种结果的服务器数量。如果某种结果所对应的服务器数量达到或超过某个预先配置好的临界值(阈值),那么就把该结果返回给用户。
通过设置读取阈值可以在响应时间和一致性之间求得平衡。同样,通过设置写入阈值可以在响应时间和持久性之间取得平衡。
持久性是一种能够长期维持数据副本无误的性质。执行写操作时,副本服务器会把数据写入到各自的持久化存储空间中,只有当完成写入操作的服务器的数量大于或等于写入阈值时,整个写入操作才算彻底完成。
关系型数据库管理系统支持ACID事务,而NoSQL数据库有时也能提供某种程度的ACID事务,但一般来说,NoSQL数据库主要支持的还是BASE事务。
BASE:基本可用性、软状态、最终一致性基本可用性:如果分布式系统中的某些部分出了故障,那么系统中的其余部分依然可以继续运作。
软状态:指那种不刷新就会过期的数据,即一种数据最终会为新值所覆写的现象。
最终一致性:在更新过程中,副本之间可能会暂时出现不一致现象,但最终还是能够更新完所有的副本。NoSQL数据库可以分为四大类:键值数据库;文档数据库;列族数据库;图数据库。
总结
- 键值数据库简单而灵活。键的类型可以是整数、字符串、由值所构成的列表,也可以是其他类型。对于键值数据库的键来说,在同一个命名空间内,各键的名字不同相互重复。
- 键值数据库适合用来实现可缩放式的设计方案,可以采用主从式复制模式或无主式复制模式来配置数据库。主从式复制模式中,通常有一个节点专门接受写入操作,同时多个节点都可以处理读取请求。无主式复制模式中,多个节点都能够执行写入操作及读取操作。
-
Mini-NoSQL-Database:NoSQL 数据库作为数据库系统课程的课程项目
2021-06-14 22:33:40##README 这是我们 DBMS 课程项目的存储库,我们在其中构建了一个名为 noPandaDB 的 NoSQL 数据库。 我们将构建查询语言以及数据库结构。 我们将主要使用Python进行编码。 ###Description ####查询语言查询语言称为... -
objectdb:Dart和Flutter的持久嵌入式面向文档的NoSQL数据库
2021-02-03 22:10:42objectdb:Dart和Flutter的持久嵌入式面向文档的NoSQL数据库 -
NoSQL数据库简单介绍
2021-12-20 17:05:15NoSQL,泛指非关系型的数据库。传统的关系型数据库如MySQL、SQL Server、Oracle等都是将复杂的数据结构归结为简单的二元关系(即二维表形式),能够使用SQL语句进行复杂的查询并且支持事务。但是随着互联网web2.0...目录
一、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的智能推荐引擎。
-
NoSQL数据库原理第二章NoSQL数据库的基本原理(4:3)v1.0x_数据库第五版第十一章答案
2020-04-10 11:28:41NoSQL数据库原理 第2章 NoSQL数据库的基本原理;2.1.1 关系模型 1实体Entity是指现实世界中的具体或抽象的事物例如一个学生一个教师一门课程等 2属性Attribute对实体的特性进行描述例如学生的学号班级姓名等属性一般... -
NoSQL数据库的四大分类及四大特点
2019-07-23 12:12:19读写速度快,nosql基本都是内存数据库,比硬盘存储要快很多,查询数据快 3.灵活性 NoSQL无需事先为 要存储的数据 建立字段,随时可以存储自定义的数据格式,在关系型数据库添加字段和删除字段是非常麻烦的。 4...1.四种分类
1.key-value
Redis
键值对存储,特点:查询数据块
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。2.Colunmn列式存储
HBase
将同一列的数据放在一起,查询非常快3.document文档存储
MongoDB
经典用于web项目中,与KeyValue类似,比如MongoDB主要应用在爬虫4.Graph图结构存储
neo4j
用于社交网络,
Nosql特点:
1.易扩展
当一台机器不够用了,很容易添加一个新的服务器,只要配置好环境之后,自动使用。
2.大数据量、高性能
读写速度快,nosql基本都是内存数据库,比硬盘存储要快很多,查询数据快
3.灵活性
NoSQL无需事先为 要存储的数据 建立字段,随时可以存储自定义的数据格式,在关系型数据库添加字段和删除字段是非常麻烦的。
4.高可用
一台机器宕机出问题了,不会影响其他的机器
3.相关理论
相关理论
关系数据库理论:ACID
分布式系统:CAP
Consistency (一致性):“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
Availability (可用性):
可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
Partition Tolerance (分区容错性):
即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。
分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。
https://blog.csdn.net/qq_34802511/article/details/81296510 -
NoSQL数据库和SQL数据库的区别
2021-12-28 14:42:20NoSQL数据库是通过集合存储数据,SQL数据库是通过表格存储数据。