数据库
长期存储在计算机内有组织可共享的数据和数据之间关系的集合。
存储内容:存储结构化数据,存储数据和数据之间 的关系。
存储方式:按照一定数据模型进行组织,描述和存储
(永久存储需依赖文件和磁盘,需要压缩和加密存放)
目的:在于数据共享,避免信息孤岛效应
特点:
-
较小冗余度:避免冲突
-
较高的独立性
-
易扩展性
概念
数据库是指长期存储在计算机内有组织可共享的数据和数据之间的集合,数据库中的数据按照一定的数据模型组织,描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并在一定范围内可以被多个用户共享。
数据和数值
数据=元数据+数值
DBMS(数据库管理系统)
位于用户与操作系统之间的一层数据管理软件
功能
1.数据的定义:
- 提供数据定义语言(DDL)
- 定义数据库中的数据对象
2.数据操纵:
- 提供数据操纵语言(DML)
- 操纵数据实现对数据库的基本操作(查询、插入、删除和修改)
3.数据运行管理:
-
保证数据的安全性、完整性
-
多用户对数据的并发使用
-
发生故障的系统恢复
4.数据库的维护
- 数据库数据批量装载、数据库转储
- 介质故障恢复、数据库的重组织、性能监视等
特点:
- 数据尽可能不重复,以最优方式为多种应用服务
- 数据结构独立于应用
- 对数据的CRUD由统一软件进行管理和控制
数据模型
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟
数据模型分成两个不同的层次
1.1、概念模型也称信息模型,它是按用户的观点来对数据和信息建模,可以使用ER图进行描述。实体E,关系R
矩形—实体 椭圆—属性 菱形—关系
数据模型主要包括层次模型,网状模型(用的少,效率高),关系模型(中国使用多,效率低)等,它是按计算机系统的观点对数据建模。下一代是对象模型
ORM对象关系映射:hibernate、mybatis
2.物理数据模型
关系模式是最重要的一种数据模型。也是目前主要采用的数据模型
1970年由美国IBM 公司San Jose研究室的研究员E.F.Codd提出
在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据
3.RDBMS
特点:
- 数据以表格的形式出现 -表在数学中被表示为关系
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
优缺点:
优点:
-
建立在严格的数学概念的基础上
-
概念单一。数据结构简单、清晰,用户易懂易用
-
实体和各类联系都用关系来表示
-
对数据的检索结果也是关系
-
关系模型的存取路径对用户透明
-
具有更高的数据独立性,更好的安全保密性
-
简化了程序员的工作和数据库开发建立的工作
缺点:
存取路径对用户透明导致查询效率往往不如非关系数据模型,为提高性能,必须对用户的查询请求进行优化。增加了开发数据库管理系统的难度
产品:
-
Oracle:运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域
-
DB2:速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域
-
SQL Server:全面,效率高,界面友好,操作容易,但是不跨平台[2019支持windows、Linux和Docker]。适用于于中小型企业领域
-
MySQL:开源,体积小,速度快。适用于中小型企业领域LAMP–php
SQL(语言 )
特点:1.综合统一 高度非过程化
2.面向集合的操作方式
3.以同一种语法结构提供两种使用方法;即可以直接以命令方式交互使用;也可以嵌入主语言中使用
4.语言简洁,易学易用;在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语
NoSQL
NoSQL泛指非关系型数据库。主要是针对超大规模和高并发的SNS类型动态网站的解决方案(Web2.0)。
类型:
- key-value数据库。使用hash表存储数据,例如Redis。简单易部署,但是对部分值进行查询或更新时效率低下
- 列存储数据库,用于应对分布式存储的海量数据,键仍旧存在,只是指向了多个列,例如HBase
- 文档型数据库,该类型的数据模型是版本化的文档,半结构化的文档以JSON格式存储,例如MongoDB
- 图形数据库,主要用户关系计算Neo4j
使用场景: - 数据模型比较简单
- 需要灵活性很强的IT系统
- 对数据库性能要求较高
- 不需要数据高度的一致性
- 对于给定的key比较容易映射复杂值的环境
SQL和NoSQL的区别
- 复杂查询SQL数据库比较擅长
- SQL数据库不适合分层次的数据存储,而NoSQL数据库可以很好地存储分层次的数据,更适用于大数据
- 对于基于大量事务的应用SQL非常适合,更加稳定,能够保证数据的原子性和一致性,而NoSQL对事务的处理能力有限
- SQL数据库厂商对其产品有很好的支持,而NoSQL一般只有社区支持
- 性能对比中NoSQL明显优于SQL数据库。一般NoSQL可以充分利用系统的内存资源。
- 不用考虑数据关系和格式的NoSQL非常方便开发,范式对运维提出了相当高的要求。