初识数据库
1、什么是数据库
数据库(DB,DataBase)是按照数据结构来组织、存储和管理数据的仓库。
注:数据库是安装在操作系统(如:Windows,Linux,Mac等)上的一个软件。
2、数据库的分类
2.1、关系型数据库
**SQL数据库(**Structured Query Language,结构化查询语言):泛指非关系型的数据库。
- 关系型数据库类似于我们经常使用的Excel。
- 它是有行和列的。
- 通过表与表之间、行和列之间的关系进行数据的存储。
- 实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。
- 我们可以用SQL语句操作关系型数据库。
附:常见的关系型数据库
常见的关系型数据库主要包括:MySQL、Oracle、SQL Server 、Access等。
(1)MySQL
- MySQL 由瑞典MySQL AB公司开发,属于 Oracle 旗下产品。
- 是一个非常强大的和完整的SQL数据库系统。
- MySQL 成本很低,是昂贵的 Microsoft 和 Oracle 解决方案的廉价替代品。
- MySQL 是我们学习的重点。
注:MySQL是一种常用的关系型数据库;SQL 是一门用于访问数据库的语言。
(2)Oracle
- Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品。
- Oracle 同样是非常强大、健壮且特性丰富的 SQL 数据库系统。
- Oracle 常用于高流量的数据库驱动型网站。
- Oracle 比较贵。
(3)SQL Server
- SQL Server 是微软公司推出的关系型数据库管理系统。
- SQL Server同样是非常强大、健壮且特性丰富的 SQL 数据库系统。
- SQL Server 也常用于高流量的数据库驱动型网站。
(4)Access
- Access是微软Office套件的一部分,可以与Office集成,实现无缝连接。
- Access没有 Oracle 或 SQL Server 那么强大。
- Access主要适用于低流量的中小型应用系统,不适合高流量的网站,或作为客户机/服务器系统中的客户端数据库。
2.2、非关系型数据库
NoSQL数据库(Not Only SQL,不仅仅是SQL):泛指非关系型的数据库。
- 非关系型数据库通过对象进行数据存储。
附:常见的非关系型数据库
常见的非关系型数据库主要包括:键值**(key-value)存储数据库、列存储(Column-oriented)数据库、面向文档(Document-Oriented)**数据库、图形数据库和搜索引擎数据库等。
(1)键值(key-value)存储数据库
- 键值数据库使用键值对的方法来存储数据。
- 键值数据库将数据存储为键值对集合,其中键作为唯一标识符。
- 键值数据库类似传统语言中的哈希表。
- 键值数据库可以通过key来添加、查询或者删除数据库的数据。
- 因为使用key主键访问,所以使用简单、访问速度快、扩展性强、易部署、高并发。
**典型产品:**Memcached、Redis、MemcacheDB
键值数据库目前应用最多的应该是Redis。
- Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
- 提供了多种语言的API。
- Redis通常作为普通关系型数据库的缓存层,用于降低数据库的访问压力,提升系统性能。
(2)列存储**(Column-oriented)**数据库
列式存储是相对于传统关系型数据库的行式存储来说的。
上图是传统行数据库和列数据库表中数据在磁盘上的存储形式的差异对比。对于行存储数据库,表中的数据是以行为单位逐行存储在磁盘上的;而对于列存储数据库,表中的数据则是以列为单位逐列存储在磁盘中。
**列存储解决的主要问题是数据查询问题。**我们知道,平时的查询大部分都是条件查询,通常是返回某些字段(列)的数据。对于行存储数据,数据读取时通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列。出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。而列存储,每次读取的数据是集合的一段或者全部,不存在冗余性问题。这样,通过这种存储方式的调整,使得查询性能得到极大的提升。
列存储数据库通常用用来处理分布式存储的海量数据。
**典型产品:**Cassandra、HBase
存储数据库中最为出名的恐怕就是HBase( Hadoop Database)了。
- HBase是 BigTable的开源 java 版本。
- HBase是建立在 HDFS 之上,提供高可靠性、高性能、列存储、 可伸缩、实时读写 NoSQL 的数据库系统。
(3)面向文档(Document-Oriented)数据库
面向文档数据库将数据以文档形式存储。
-
每个文档都是自包含的数据单元,是一系列数据项的集合。
-
每个数据项都有一个名词与对应值。值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
-
数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。
-
文档数据库与第一种键值存储数据库类似,它所存放的文档,就相当于键值数据库所存放的“值”。
-
文档数据库可以看作是键值数据库的升级版,它允许键值之间的相互嵌套。
-
文档型数据库比键值数据库的查询效率更高。
**典型产品:**MongoDB、CouchDB
MongoDB是目前最为流行的文档数据库。
- 它是介于关系数据库和非关系数据库之间的产品。
- 它是非关系数据库当中功能最丰富,最像关系数据库的。
- 其最大的特点是分布式部署,可以随着负载的增大动态扩容,从而满足企业业务增长的需求。
(4)图形数据库
图形数据库顾名思义,就是一种存储图形关系的数据库。
- 图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。
- 图形数据库允许我们将数据以图的方式存储。
- 实体会被作为顶点,而实体之间的关系则会被作为边。
**典型产品:**Neo4J、InforGrid
Neo4j 是目前最流行的图形数据库。
- 它支持完整的事务。在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。
- Neo4j创建的图是用顶点和边构建一个有向图。
- 其查询语言cypher已经成为事实上的标准。
(5)搜索引擎数据库
搜索引擎数据库是一类专门用于数据内容搜索的非关系数据库。
- 搜索引擎数据库使用索引对数据中的相似特征进行归类,并提高搜索能力。
- 搜索引擎数据库经过优化,以处理可能很长、半结构化或非结构化的数据。
- 它们通常提供专业的方法,例如全文搜索、复杂搜索表达式和搜索结果排名等。
**典型产品:**Solr、Elasticsearch
- Elasticsearch是构建在Apache Lucene库之上的开源搜索引擎。
- Elasticsearch通过REST和schema-free的JSON文档提供分布式、多租户全文搜索引擎。
- 官方提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript客户端。
3、什么是数据库管理系统?
数据库管理系统**(DBMS,Database Management System)**是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。
4、DB、DBMS 和DBS 的区别
-
DBMS 是数据库管理系统( DataBase Management System)的简称。
- 实际上它可以对多个数据库进行管理,所以我们可以理解为 DBMS = 多个数据库(DB) + 管理程序。
- 虽然我们有时候把 Oracle、MySQL 等称之为数据库,但确切地讲,它们应该是数据库管理系统,即 DBMS。
-
DB 是数据库(DataBase)的简称。
- 数据库是存储数据的集合。
- 我们可以把它理解为多个数据表。
-
DBS 是数据库系统( DataBase System)的简称。
- 它是更大的概念,包括了数据库、数据库管理系统以及数据库管理人员 DBA。
所以,DB、DBMS与应用程序之间的关系如下图所示:
注:
- DBMS管理DB就类似于我们使用Excel、WPS等软件管理.xlsx文件。
- 一个DBMS可以管理多个应用程序的数据。
5、为什么学习MySQL?
- MySQL是开源的。
- MySQL体积小、速度快、使用成本低。
- MySQL能集群,适用于中大型网站的开发。
6、MySQL的下载与安装
安装建议:
-
尽量不要使用exe安装(很难卸载干净)。
-
建议使用压缩包安装。(具体步骤详见下一讲)
(本讲完,系列博文持续更新中…… )
关注**“阿汤笔迹”** 微信公众号,获取更多学习笔记。
原文地址:http://www.atangbiji.com/2021/01/26/firstDB
博主最新文章在个人博客 http://www.atangbiji.com/ 发布。