ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

7 NoSQL数据库

2022-05-13 18:33:24  阅读:197  来源: 互联网

标签:关系 存储 NoSQL 数据库 键值 文档 节点


7 NoSQL数据库

❖7.1 NoSQL数据库概述

❖7.2 列存储数据库

❖7.3 键值对数据库

❖7.4 文档型数据库

❖7.5 图形数据库

啊啊啊啊

在Neo4J集群中,数据的写入是通过主服务器来完成的,数据的读取可以通过集群中的任意一个Neo4J实例来完成。

以下哪一项不是NoSQL的共同特征?

CAP

以下哪一项不是CAP的含义?

分布式

HBASE中表和区域的关系可以是什么?

1:N

7.1 NoSQL数据库概述

  • 数据类型多样化:数字、视频、音频
  • 数据结构化
  • 数据存储方式多样化:(列式存储、键值存储、图存储、文档存储等)

关系数据库局限

高并发、数据多、扩展性不够、

分布式大数据处理

分布式文件系统(Distributed File System:DFS ):

是指文件系统的物理存储资源不在本地节点上,通过计算机网络与节点相连。

NOSQL的基础

NoSQL是Not Only SQL的缩写,即对关系型SQL数据库系统的补充。

• 相比传统数据库叫它分布式数据库管理系统更贴切, 数据存储被简化, 重点被放在了分布式数据管理上

• NoSQL并不单指一个产品或一种技术,它代表一族产品,以及一系列不同的、有时相互关联的、有关数据存储及处理的概念。

• 遵守BASE定理, 高性能,高可用性和可伸缩性。

• 高可扩展性、分布式计算、低成本、 架构的灵活性,半结构化数
据、 没有复杂的关系。

• 没有标准化、有限的查询功能(到目前为止)、最终一致不直观等

CAP理论

分布式事务

分布式事务ACID特征,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

CAP理论

  • Consistency一致性
  • Availability可用性
  • Partition Tolerance分区容忍性

一个分布式系统,最多只能同时较好的满足两个。

CAP是为了探索不同应用的一致性C与可用性A之间的平衡,选择什么样的方式: 放弃P?放弃A?放弃C?

----------------BASE

BASE

• BA: Basically Available --基本可用;系统能够基本运行,一直提供服务。

• S: Soft-state --软状态/柔性事务。"Soft state" 可以理解为"无连接"的

• E: Eventual Consistency --最终一致性 系统在某个时刻达到最终一致性。

• BASE定义为CAP中AP的衍生,在分布式环境下, BASE是数据的属性,BASE强调基本的可用性,按照功能划分数据库.

BASE—特点

• ACID是事物的特征, A(原子性)C(一致性)I(隔离性)D(持久性),ACID的特点是强一致性、隔离性、
采用悲观保守方法、难以变化;
• BASE的特点是弱一致性、可用性优先、采用乐观方法、适应变化并且简单快捷。

大数据下,很难满足ACID

2、NoSQL的技术

• 简单数据类型--键值
• 最终一致性,非结构化和不可预知的数据, 遵守CAP定理, 高性能,高可用性和可伸缩性

NoSQL的特点

• 优点表现在: 高可扩展性、分布式计算、低成本、 架构的灵活性,半结构化数据、 没有复杂的关系。

• 缺点: 没有标准化、有限的查询功能(到目前为止)、最终一致不直观等

NoSQL数据库的存储模型

  • 列存储数据库,将同一列的数据存储在一起,可以存储结构化和半结构化数据
  • 键值存储数据库,存储的数据是有键(key)和值(value)两部分
  • 组成,通过key快速查询到其value,value的格式可以根据具体应用来确定
  • 文档存储数据库,存储的内容是文档型的,可以用格式化文件(类似json、XML等)的格式存储 图存储数据库,数据以有向加权图方式进行存储

NoSQL数据库的特征

BASE: 相对于ACID特性,NoSQL数据库保证的是BASE特性(BASE是最终一致性和软事务

NoSQL数据库的应用场景

• 1、数据模型比较简单;
• 2、需要灵活性更强的IT系统;
• 3、对数据库性能要求较高;
• 4、不需要高度的数据一致性;
• 5、对于给定key,比较容易映射复杂值的环境。
• 许多云环境下的新型应用,如社交网络网、移动服务、协作编辑等
。云计算时代海量数据管理系统的设计目标为可扩展性、弹性、容
错性、自管理性和“强一致性”。

7.2 列存储数据库

数据库以行、列的二维表的形式表示数据,以一维字符串的方式存储课程数据库

• Course_id Course_name Course_type Course_hours Course_credit
• C001 数据库原理及应用 学科基础 64 4
• C002 操作系统基础 学科基础 64 4
• C003 面向对象程序设计 学科基础 48 3

行式数据库把数据一行一行存储。

存储的效果是字符串:C001,数据库原理及应用,学科基础,64,4,C002,操作系统基础,学科基础,64,4,C003,面向对象程序设计,学科基础,48,3

列式数据库把数据一列一列中存储

• 存储的效果是字符串:C001,C002,C003,数据库原理及应用,操作系统基础,面向对象程序设计,学科基础,学科基础,学科基础,64,64,48,4,4,4

特点

查询中的选择规则是通过列来定义的,列式存储数据库是自动索引化的;数据压缩比高,查询速度高

HBASE数据库

HBase是一个开源的非关系型分布式数据库(NoSQL),实现的编程语言为 Java

  • 面向列(族)的存储
  • 数据类型单一
  • 有可扩展性。

HBASE数据模型

• HBase 以表的形式表达和存储数据,表由行和列组成,列划分为若干
个列族(row family)。

• HBase表的逻辑视图是基于行键(rowkey)、列族(column family)、列限定符(column qualifier)和时间版本(version)

HBase没有数据类型,任何列值都被转换成字符串进行存储;

HBase数据存储的层次的关系

全是1对多关系

HBASE的应用场景

• 对象存储
• 时空数据
• 消息/订单
• Feeds流
• NewSQL

7.3 键值对数据库

键值存储可以同时在内存和硬盘上保存数据, 进行非常快的保存和读取处理, 并且保存在硬盘上的数据不会消失, 即使消失也可以恢复---Redis。

二、键值数据库的数据模型
• 1 数据结构:键值模型(Key-Value模型),每行记录由主键和值两个部分组成,值可以是各种类型的数据

• 2 数据操作: Get( key )、Set( key, value )、Delete( key )等

• 3 数据完整性: 针对单个键的操作才区别“一致性”

Redis数据库

• Redis ,开源的KV数据库。

• Redis的缺点是数据库容量受到物理内存的限制。
• Redis可保存多种数据结构,单个值的最大限制是1GB。

用到的类型:字符串String、List链表、Hash哈希表

特点
• Redis将键值存储在主存中,快速读写。

所有操作都是原子的

7.4 文档型数据库

文档是处理信息的基本单位。

文档可以很长、很复杂、可以无结构

将数据存储为一 个文档,数据结构由键值对组成,字段值可以包含其他文档,数组及 文档数组。

{ name:
"Wangxin",
• status: "student"
• groups:["course", "experiment"]
• }
每一行的存储格式为 field:value。
多个键及其关联的值有序地放置在一起就是文档。 文档是一组键值(key-value)对(即BSON)。

• 每个文档可以匹配所表示实体的数据域。 • 数据关系有两种:引用和嵌入文档。 • 写操作在文档级别是原子性的,没有单个写操作对超过一个文档或者 超过一个集合是原子性的。

MongDB的特点

模式自由; • 支持动态查询; 通过网络访问。

基本的概念是文档、集合、数据库。

文档是MongoDB中数据的基本单元

MongoDB文档不能有重复的键。

文档的键是字符串。文档中的 值不仅可以是字符串,也可以是其他数据类型(或者嵌入其 他文档)

层次关系:

文档—集合---数据库。

MongoDB的应用场景

适合:网站数据

不适合:高度事务性的系统,例如银行或会计系统。

7.5 图形数据库

像寻找朋友的朋友的社交图,这样的网状数据遍历查询----图数据库。

图数据库源起欧拉和图理论,面向/基于图的数据库

以“图”数据结构存储和查询数据,数据模型以节点和关系(边)体 现,也处理键值对

图特征:包含节点和边;节点上有属性(键值对);

边有名字和方向 ,开始\结束节点;边可有属性。

图是顶点和边的集合,或图是一些节 点和关联联系(relationship)的集合

基本概念

G=(V, E) , V=vertex(节点) , E=edge(边) 。节点和关系属 性;节点多个标签(类别);一个属性图是由顶点(Vertex),边( Edge),标签(Lable),关系类型和属性组成的有向图

顶点-节点(Node),边--关系(Relationship)点和关系--实体, 节点是独立存在的,节点有设置标签,相同标签节点属于一个分组或 集合; • 关系通过关系类型来分组,类型相同的关系属于同一个集合。关系是 有向的

图数据模型

图就是二元关系。利用一系列由线(称为边)或箭头(称为弧)连接 的点(称为节点)

• 弧(u,v)表示为u→v

路径是一列节点(v1,v2,…,vk)

图的实现--两种

图的应用包括最短路径、可达集、 各种搜索算法等。这些都给图 的应用提供理论基础。

邻接表、邻接矩阵

通过关系来连接各个结点。

多个关系

如果两个实体之间拥有多种关系,就需要在它们之间创建多个关联 表。 • 在一个图形数据库中,只需要标明两者之间存在着不同的关系,例 如用DirectBy关系指向电影的导演,或用ActBy关系来指定参与电 影拍摄的各个演员

Neo4J图数据库

Neo4j查询语言名为CQL( Cypher Query Language), 不使用schema ,可以满足任何形式的需求,

速度快、规格大、可备份

每个实体都有ID(Identity)唯一标识,每个节点由标签(Lable)分组,每个关系都有一个唯一的类型,属性图模型的基本概念有:

Neo4j的两种使用方式:嵌入式模式,服务器 模式

例子

在下面的图形中,存在三个节点和两个关系共5个实体;

Person 和Movie是Lable,ACTED_ID和DIRECTED是关系类型,name, title,roles等是节点和关系的属性。有两个标签(对分组进行查询,能够缩小查询的节点范围,提高查询的性能。)Person和Movie,

• 实体包括节点和关系,节点有标签和属性,关系是有向的,链接 两个节点,具有属性和关系类型

• 3,属性(Property), 是一个键值对

每个节点都有name属性,用于命名节点。

• 在示例图形中,Person节点有两个属性name和born,Movie节点有两个
属性:title和released。

关系类型ACTED_IN有一个属性:roles(扮演的角色),该属性值是一个数组,而关系类型为DIRECTED的关系没
有属性。

• 遍历(Traversal)

Neo4j 的存储结构是什么?

(1) 存储 node 的文件, 存储节点数据、节点label及其序列Id包括存储节点数组、数组的下标即该节点的ID
(2)存储 relationship 的文件: 存储关系数据、关系组数据、关系类型、

(3)存储 label 的文件:

(4)存储 property 的文件:属性数据、类型、索引等

标签:关系,存储,NoSQL,数据库,键值,文档,节点
来源: https://www.cnblogs.com/tupo/p/16267726.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有