mariadb(mysql):
数据管理模型:层次模型、网状模型、关系模型
数据分类:结构化数据、半结构化数据、非结构化数据
关系模型:
数据库:一个方案、一个项目
二维关系:
表:row, column
索引:index
视图:view
SQL接口:Structured Query Language
类似于OS的shell接口;也提供编程功能;
ANSI: SQL标准,SQL-86, SQL-89, SQL-92, SQL-99, SQL-03, ...
PL-SQL,T-SQL,...
DDL:Data Defined Language
CREATE, ALTER, DROP、SHOW
DML: Data Manapulating Language
INSERT, DELETE, UPDATE, SELECT
编程接口:选择、循环;
SQL代码:
存储过程:procedure
存储函数:function
触发器:trigger
事件调度器:event scheduler
例程:routine
用户和权限:
用户:用户名和密码;
权限:管理类、程序类、数据库、表、字段
DBMS:DataBase Management System
RDBMS:Relational
MySQL:单进程,多线程
插件式存储引擎:存储引擎也称为表类型;
用户连接:通过线程来实现;
线程池:
AliSQL:MySQL的衍生版;
MariaDB:
PostgreSQL:PostgreSQL is an advanced Object-Relational database management system (DBMS).
Sqlite:SQLite is a C library that implements an SQL database engine. A large subset of SQL92 is supported. A complete database is stored in a single disk file. The API is designed for convenience and ease of use.
事务(Transaction)
组织多个操作为一个整体,要么全部都成功执行,要么失败回滚;
“回滚”, rollback
一个存储系统是否支持事务,测试标准:
ACID:
A:原子性atomicity;
C:一致性consistency;
I:隔离性isolation;
D:持久性durability;
数据库:数据集合
表:为了满足范式设计要求,将一个数据集分拆为多个;
约束:constraint,向数据表插入的数据要遵守的限制规则;
主键:一个或多个字段的组合,填入主键中的数据,必须不同于已存在的数据;而且不能为空;一个表只能有一个Primary KEY;
外键:一个表中某字段中能插入的数据,取决于另外一张表的主键中的数据;
惟一键:一个或多个字段的组合,填入惟一键中的数据,必须不同于已存在的数据;可以为空;一个表可存在多个Unique Key;
检查性约束:取决于表达式的要求;-
索引:将表中的某一个或某些字段抽取出来,单独将其组织一个独特的数据结构中;
常用的索引类型:
B+ Tree:Balance Tree
hash:注意:有助于读请求,但不利于写请求;
关系运算:
选择:挑选出符合条件的行;
投影:挑选出符合需要的列;
连接:将多张表关联起来;数据抽象:
物理层:决定数据的存储格式,即如何将数据组织成为物理文件;
逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系;
视图层:描述DB中的部分数据;关系模型的分类:
关系模型
实体-关系模型
基于对象的关系模型
半结构化关系模型
MariaDB(mysql):
可用版本:
MariaDB
Percona-Server
AliSQL
TiDB
MariaDB: mariadb.org
MariaDB的特性:
插件式存储引擎:存储管理器有多种实现版本,彼此间的功能和特性可能略有区别;用户可根据需要灵活选择;
存储引擎也称为“表类型”;
- 更多的存储引擎;
MyISAM:不支持事务,表级锁,崩溃后不保证安全恢复;
MyISAM --> Aria
InnoDB --> XtraDB :支持事务,行级锁,外键,热备; - 诸多扩展和新特性;
- 提供了较多的测试组件;
- truly open source;
安装和使用MariaDB:
安装方式:
- rpm包;
(a) 由OS的发行商提供;
(b) 程序官方提供; - 源码包;
- 通用二进制格式的程序包;