最近看了一些数据库的基础知识,这里主要涉及三个问题:
- DB、DBS和DBMS都是什么意思?
- 主流的DBMS都有哪些,各自都有哪些特点?
- SQL语言都有哪些分类
DB、DBS和DBMS
DB(DataBase)
:就是数据库。数据库表示存储数据的集合,可以理解为多个数据表DBMS(DataBase Management System)
:数据库管理系统,可以对一个或多个数据库进行管理。可以理解为 DBMS = 多个数据库(DB) + 管理程序DBS(DataBase System)
:数据库系统。这个包括了数据库、数据库管理系统以及数据库管理人员DBA。
主流的DBMS都有哪些,各自都有哪些特点
- 关系型数据库(RDBMS)就是建立在关系模型基础上的数据库,SQL就是关系型数据库的查询语言。
- 键值型数据库:通过Key-Value键值的方式来存储数据,其中Key和Value可以是简单的对象,也可以是复杂的对象。Key作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样自由使用条件过滤(比如WHERE),如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。键值型数据库典型的使用场景是作为内容缓存。Redis是最流行的键值型数据库。
- 文档型数据库用来管理文档,在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录,MongoDB是最流行的文档型数据库。
- 搜索引擎也是数据库检索中的重要应用,常见的全文搜索引擎有Elasticsearch、Splunk和Solr。虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎的优势在于采用了全文搜索的技术,核心原理是“倒排索引”
- 列式数据库是相对于行式存储的数据库,Oracle、MySQL、SQL Server等数据库都是采用的行式存储(Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限。
- 图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
SQL语言都有哪些分类
DDL(Data Definition Language)
:数据定义语言,它用来定义我们的数据库对象,包括数据库、数据表和列。通过使用DDL,我们可以创建,删除和修改数据库和表结构。DML(Data Manipulation Language)
:数据操作语言,我们用它操作和数据库相关的记录,比如增加、删除、修改数据表中的记录。DCL(Data Control Language)
:数据控制语言,我们用它来定义访问权限和安全级别。DQL(Data Query Language)
:数据查询语言,我们用它查询想要的记录,在实际的业务中,我们绝大多数情况下都是在和查询打交道。