三分钟读懂数据库相关知识
三分钟读懂数据库相关知识
数据库(Database)是一个按数据结构来存储和管理数据的计算机软件系统,通俗讲就是存放数据的仓库。数据库的存储空间很大,可以存放百万条、千万条、上亿条数据。数据库包括两层意思:
(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
数据库、操作系统、中间件作为传统的三大基础软件,是确保计算机系统稳定运行的基石。数据库根据数据存储方式的不同,可划分为关系型数据库和非关系型数据库两大类。
关系数据库
关系数据库是建立在“有关系”基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。常见的关系型数据库有Oracle、SQLServer、MySQL、DB2等等。
Oracle 数据库
Oracle 数据库是美国甲骨文公司推出以分布式数据库为核心的一组软件产品,是目前世界上使用广泛的数据库管理系统。作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理功能。
SQL Server 数据库
SQL Server是微软公司开发的商业数据库,是一个比较全面的数据库平台,使用集成的商业智能工具提供了企业级的数据管理。SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,且具有使用方便可伸缩性好与相关软件集成程度高等优点。
MySQL 数据库
MySQL是世界流行的关系型数据库管理系统之一。这种数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了读取的速度并提高了灵活性。MySQL 所使用的SQL 语言是用于访问数据库的常用标准化语言。其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
DB2 数据库
DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。
不同品牌的关系型数据库,是如何进行通信的呢。为了解决这个问题,1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言,后为国际标准化组织(ISO)采纳为国际标准。SQL的中文全称是结构化查询语言(Structured Query Language),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL可用于存取数据以及查询、更新和管理关系数据库系统,包含六个部分:
- 数据查询语言(DQL: Data Query Language):用以从表中获得数据,确定数据怎样在应用程序给出。
- 数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE,分别用于添加、修改和删除。
- 事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
- 数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。
- 数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。
- 指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
云数据RDS
关系型数据库服务(Relational Database Service)的简称,是一种即开即用、稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、PPAS、MariaDB等引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。
非关系型数据库(NoSQL)
是指每条数据间都是独立存在的,不存在任何关系。非关系型数据库严格意义上来说,并不是一种数据库,而是一种数据结构化存储方法的集合,类似于文档、键值对或者图结构。非关系型数据库的产生,是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。常见的非关系型数据库有MongoDB、Redis、Hbase等等。
MongoDB 数据库
MongoDB是一款为Web应用程序和互联网基础设施设计的数据库管理系统。MongoDB 使用 BSON( 类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,可以表示丰富的、有层级的数据结构,从而使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于MySQL等SQL数据库大大增强。
Redis 数据库
Redis是典型的是非关系型数据库,且Redis是一款开源数据库,支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的KeyValue类型的数据,同时还提供list、set、zset、hash等数据结构的存储,同时还支持数据的备份,即Master-Slave模式的数据备份。
除了传统的关系型数据库和非关系型数据库,行业内根据应用场景不同,将数据库进行更详细的划分,如关系型数据库包含云数据库、云原生关系型数据库、云原生分布式数据库等;NoSQL数据库包含云数据库Redis版、时序数据库、图数据库等。
此外,内存数据库也常被人提及。内存数据库(主存数据库),是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。内存数据库比较有代表性如SAP HANA内存数据库。
随着大数据时代的到来,海量数据对于传统的数据库在计算、查询、分析等方面带来了巨大挑战,分布式数据库由此诞生。
分布式数据库
通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
此外,根据数据库应用方向及市场目标,可以将数据库划分为事务型数据库与分析型数据库。事务型数据库是面向应用的数据库,注重实时性,响应及时性要求很高,关注最近一段时间的数据。通常DBA搭建的服务都可以称为事务型数据库。分析型数据库是面向海量数据分析,并总结数据规律的数据库。通常存储的数据时间跨度长、数据量大,对实时性要求不高,通过查询分析数据反映的规律和趋势,提供决策支撑。
近年来,随着中国基础软件人才的发展壮大,国产数据库也得到了蓬勃发展。在信息技术国产化发展政策的支持下,国内涌现了一大批国产数据库,例如TiDB(PingCAP)、DM(达梦)、GBase(南大通用)、OceanBase(蚂蚁集团)、PolarDB(阿里云)、TDSQL(腾讯)、SequoiaDB(巨杉)、GaussDB(华为)、GoldenDB(中兴)、Qianbase(易鲸捷)等。