数据库
2021-04-29 11:31:19 0 举报
AI智能生成
数据库基础
作者其他创作
大纲/内容
数据库
分类
关系型数据库
概念:关系模型是指二维表格模型,一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织
优势
易理解
易用
易维护
劣势
网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的
在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。当需要对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移。
在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构
主流关系型数据库
Oracle
隶属甲骨文公司。Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案
MySQL
由瑞典MySQL AB,属于Oracle旗下产品
MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)
Percona Server(MySQL的代替品·)
MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
Microsoft SQL Server
由Microsoft公司推出,只在Windows上运行,MicroSoft这种专有策略的目标是将客户锁定到Windows环境中
PostgreSQL
特性非常齐全的自由软件的对象-关系型数据库管理系统
SQLite
设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统。
DB2
美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
Sybase
由美国Sybase公司开发,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统
dBASE
在CP/M与DOS的时期,由Ashton-Tate公司所发表,是第一个在个人电脑上被广泛使用的单机版数据库系统
Microsoft office Access
Google Fusion Tables
FileMaker
非关系型数据库(NoSQL)
概念:非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统
面向海量数据访问的面向文档数据库
特点:在海量的数据中可以快速的查询数据
MongoDB
Amazon Dynamo DB
Mircosoft Azure Cosmos DB
Couchbase
CouchDB
面向搜索数据内容的搜索引擎
特点:专门用于搜索数据内容的NoSQL数据库管理系统
Elasticsearch
Splunk
Solr
MarkLogic
Sphinx
面向可扩展性的分布式数据库
特点:具有很强的可拓展性
Cassandra
HBase
Microsoft Azure Cosmos DB
Datastax Enterprise
Accumulo
键值(key-value)数据库
特点:具有极高的并发读写性能。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
Apache Cassandra(为Facebook所使用):高度可扩展
Redis
Dynamo
LevelDB(Google)
Memcached
Hazelcast
用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询
非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能
只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适。不适合持久存储海量数据
模型
对象模型
层次模型(轻量级数据访问协议)
网状模型(大型数据储存)
关系模型
面向对象模型
半结构化模型
平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)
架构
内层:最接近实际存储体,亦即有关数据的实际存储方式。
外层:最接近用户,即有关个别用户观看数据的方式。
概念层:介于两者之间的间接层。
索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
聚簇索引
按照数据存放的物理位置为顺序
能提高多行检索的速度
非聚簇索引
对于单行的检索很快
数据库设计时可创建的三种索引
唯一索引
唯一索引是不允许其中任何两行具有相同索引值的索引
主见索引
数据库表经常有一列或多列组合,其值唯一标识表中的每一行。该列称为表的主键
在数据库关系图中为表定义主键将自动创建主键索引
唯一索引的特定类型
主键中的每个值都唯一
聚集索引
表中行的物理顺序与键值的逻辑(索引)顺序相同
一张表只能包含一个聚集索引
通常可以提供更快的访问速度
特点
建立索引的目的是加快对表中记录的查找或排序
代价
创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度
优点
提高系统的性能
创建唯一索引,可以保证数据库中每一行数据的唯一性
大大加快数据的检索速度
加速表和表之间的连接
在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
创建索引的时机
可以创建
经常需要搜索的列上
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的
经常需要排序的列
在经常使用在WHERE子句中的列
不建议创建
在查询中很少使用或者参考的列不应该创建索引
只有很少数据值的列也不应该增加索引
当修改性能远远大于检索性能时,不应该创建索引
事务
事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
ACID特性
原子性(Atomic)
一致性(Consistency)
隔离性(Isolation)
持续性(Durability)
并发性
事务的并发性是指多个事务的并行操作轮流交叉运行,事务的并发可能会访问和存储不正确的数据,破坏交易的隔离性和数据库的一致性
0 条评论
回复 删除
下一页