NoSQL(非关系型数据库)

一、关系型数据库
简介
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB等。
实体关系模型(Entity-Relationship Model),简称E-R Model是陈品山(Peter P.S Chen)博士于1976年提出的一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图(Entity-Relationship Diagram))来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。
在这里插入图片描述
关系操作
关系操作
关系模块中常用的操作包括:
数据查询
选择 投影 连接 并 交 差 除 数据操作 增加 删除 修改 查询

完整性
完整性约束包括:
实体完整性 参照完整性 用户定义完整性
关系模型
关系:一张二维表
关系名:就是表名
记录和字段:
记录:
元组:二维表中的一行,记录
属性:二维表中的一列,字段
域:属性的取值范围
关系模式:关系名(属性1,属性2,…,属性N)在数据库中就是表结构

二、非关系型数据库
基本含义

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

NoSQL数据库的四大分类

1.键值(Key-Value)存储数据库

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

2.列存储数据库。

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

3.文档型数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

4.图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph.

因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

共同特征

对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:

不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。

无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。

弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。

分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。

异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。

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

NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。

适用场景

NoSQL数据库在以下的这几种情况下比较适用:

1、数据模型比较简单;

2、需要灵活性更强的IT系统;

3、对数据库性能要求较高;

4、不需要高度的数据一致性;

5、对于给定key,比较容易映射复杂值的环境。
在这里插入图片描述
在这里插入图片描述
SQL的JOIN操作 <—> NoSQL
在这里插入图片描述
直接查找文档
{
ISBN: 9780992461225,
title: “JavaScript: Novice to Ninja”,
author: “Darren Jones”,
format: “ebook”,
price: 29.00,
publisher: {
name: “SitePoint”,
country: “Australia”,
email: "feedback@sitepoint.com"
}
}
在这里插入图片描述
在这里插入图片描述
文档数据库:MongoDB

{
ISBN: 9780992461225,
title: “JavaScript: Novice to Ninja”,
author: “Darren Jones”,
format: “ebook”,
price: 29.00,
publisher: {
name: “SitePoint”,
country: “Australia”,
email: "feedback@sitepoint.com"
}
}
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
雅可比迭代法求解线性方程组的实验报告 一、实验题目 分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组: 使得误差不超过 0.00001。 二、实验引言 1.实验目的 掌握用迭代法求解线性方程组的基本思想和步骤,熟悉计算机fortran语言; 了解雅可比迭代法在求解方程组过程中的优缺点。 2.实验意义 雅克比迭代法就是众多迭代法中比较早且较简单的一种,求解方便实用。 三、算法设计 1.雅可比迭代法原理: 设有线性方程组Ax=b 满足, 将方程组变形为: x=Bx+f, 则雅可比(Jacobi)迭代法是指,即 由初始解逐步迭代即可得到方程组的解。 算法步骤如下: 步骤1.给定初始值,精度e,最大容许迭代次数M,令k=1。 步骤2.对i=1,2,…,n依次计算 步骤3.求出,若,则输出结果,停止计算。否则执行步骤4. 步骤4.若转步骤2继续迭代。若表明迭代失败,停止计算。 2.算法流程图 四、程序设计 program jacobi implicit none integer::i,j integer::k save k real,parameter::e=0.001 integer,parameter::n=3 real::x(n),y(n),b(n) data b/7.2,8.3,4.2/ real::D real::a(n,n) open (unit=10,file='1.txt') data a/10,-1,-1,-1,10,-1,-2,-2,5/ write(10,*)"**********矩阵A的形式为**********" write(10,"(1x,3f6.2,/)")a forall(i=1:n) x(i)=0 end forall k=0 100 D=0 do i=1,n y(i)=b(i) do j=1,n if(i/=j) y(i)=y(i)-a(i,j)*x(j) end do y(i)=y(i)/a(i,i) end do do j=1,n D=abs(x(j)-y(j)) end do forall(i=1:n) x(i)=y(i) end forall if(D>=e) then k=k+1 write(10,*)"迭代次数为:",k goto 100 else goto 200 end if 200 write(10,*)"****************************************" write(10,*)"用jacobi方法解得的结果X[t]为:" write(10,"(1x,3f6.2,/)")x(:) stop end program 五、结果及讨论 1.实验结果 **********矩阵A的形式为********** 10.00 -1.00 -1.00 -1.00 10.00 -1.00 -2.00 -2.00 5.00 迭代次数为: 1 迭代次数为: 2 迭代次数为: 3 迭代次数为: 4 迭代次数为: 5 迭代次数为: 6 迭代次数为: 7 **************************************** 用jacobi方法解得的结果X[t]为: 1.10 1.20 1.30 2.讨论分析 (1)误差 从上述输出结果中可以看出,当迭代次数k增大时,迭代值x1,y1,z1 会越来越逼近方程组的精确解x=1.0,y=1.2,z=1.3。 (2)收敛性 在本题目中, 用雅可比迭代法和高斯- 塞德尔迭代法分别求解该线性方程组,得到的近似根是收敛的 六、算法评价 优点:迭代法算法简单,编制程序比较容易。 缺点:迭代法要求方程组的系数矩阵有某种特殊性质(譬如是所谓对角占优阵)以保证 过程的收敛性。高斯—塞德尔迭代法比雅可比迭代法收敛快(达到同样的精度所需迭代次 数少),但这个结论,在一定条件下才是对的,甚至有这样的方程组,雅可比方法收敛,而高 斯—塞德尔迭代法却是发散的。在雅可比迭代法求解线性方程组时,只要误差截断设计的 合理,原则上可以得到很正确的解。而通常我们选取设计误差限或设计最大迭代次数的 方法来控制。由于它的准确性,故在实际应用中比较常见,对于解一般线性方程组非常 有效准确。通过该算法以及编程对求解的过程,我们不难发现,雅克比迭代法的优点明 显,计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩 阵A始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空 间较大,所以工程中一般不直接用雅克比迭代法,而用其改进方法。 附: 高斯—赛德尔程序 program G-S implicit none integer::i,j integer::k save k real,parameter::e=0.001 in

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值