1、数据库与数据库管理系统

数据库来源于英文单词database,database可以拆分为data 与base,翻译成中文就是数据的根源,数据的基础。数据库是存储在计算机系统内的,结构化的、共享的、可控制的数据集合。数据库就是存储数据的仓库,这个仓库里的数据必须按一定的格式存放,以便于查找数据。可以这样理解:将数据按照一定的规则,结构化地储存在一个相当于磁盘的地方,这个地方就是数据库。

数据库三个基本特点

  • 永久存储

  • 有组织

  • 可共享

数据库管理系统由数据库及其管理软件组成,是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS(Database management system)。

数据库管理系统主要功能:

  • 数据定义功能DDL ,我们可以用它来定义数据库中的数据对象的组成与结构

  • 数据组织、存储和管理 ,提供多种存储方法来提高存储空间利用率和方便存取

  • 数据操纵功能DML ,我们通过它来对数据库进行增删改查

  • 数据库的事务管理和运行管理 ,对数据库的建立、运用和维护进行统一管理和控制,保证数据安全和完整

  • 数据库的建立和维护功能,包括又不限于初始数据输入,性能监控与分析

2、数据管理发展历程

人工管理阶段

计算机发展初期,内存空间小,计算速度低,外存只有磁带、卡片和纸带,没有像磁盘这样快速的直接存取存储设备,数据处理是以批处理方式进行的,程序,数据不分离。

文件系统阶段

20世纪50年代后期到60年代中期,该时期计算机硬件有了进一步的发展,出现了磁盘、磁鼓等能直接存取的外存储设备。软件方面,高级语言和操作系统已经有了完善的产品,并且操作系统中有专门负责管理数据的文件系统功能。数据处理的方式有批处理,也有联机实时处理。

image-20230605180615376

[root@r88-84 opt]# sqlite3 sqlit_test.db   #新建一个sqlit_test.db数据库
SQLite version 3.26.0 2018-12-01 12:34:55
Enter ".help" for usage hints.

#创建一个测试表
sqlite> create table testtable( id int primary key ,name vchar(50));

#向测试表插入数据
sqlite> insert into testtable(id,name) values(1,'wo');
sqlite> select * from testtable;
1|wo

#退出sqlite库
.quit


#编写python测试程序
[root@r88-84 opt]# more pythyon_sqlite.py
import  sqlite3
conn=sqlite3.connect("sqlite_test.db")
print("数据库连接成功!")
print("")

conn.execute("INSERT INTO testtable (id,name) VALUES (2,'ni')");
conn.commit()
print ("记录插入成功!")
print("")

print("查询testtable表所有记录")
cursor = conn.execute("SELECT * from testtable")
print("ID\tNAME")
for row in cursor:
   print("{}\t{}".format(row[0],row[1]))
cursor.close()
print("")

print("删除testtable表中id为2的记录")
conn.execute("delete from testtable where id=2")
conn.commit()

print("")
conn.close()
print("成功关闭数据库")

数据库系统阶段

数据库系统阶段是指从20世纪60年代后期至今。起始的标志性事件有:

  • 1968年美国IBM公司推出IMS(Information Management System)系统,该系统具有层次结构

  • 1969年美国CODASYL(Conference On Data System Language)组织提出网状模型

  • 1970年美国IBM公司的E.F.Codd连续发表论文,提出关系模型,奠定了关系数据库的理论基础

image-20230605180123266

3、常见的数据库系统

https://db-engines.com/en/ranking

关系型数据库

image-20230605181904906

Oracle

1977年6月,由拉里·埃里森(Larry Ellison)与鲍勃·迈纳(Bob Miner)和埃德·奥茨(Ed Oates)三位巨人开始共同筹划构建可商用的关系型数据库管理系统(RDBMS),并把这种商用数据库产品命名为 Oracle,主要用于大型企业级应用。

2007年,发布了oracle11g

2013年,发布了Oracle 12c,目前,还是12C阶段,只是小版本更新。

Mysql

由瑞典MySQL AB 公司1995年发布,后在2008年2月被SUN公司收购,最终SUN公司又被甲骨文公司收购,目前属于 Oracle 旗下产品。 MySQL开源,加上其体积小,速度快,在Web应用方面很广泛, 是最流行的关系型数据库管理系统之一。MySQL 软件采用了双授权政策,分为社区版和商业版一般中小型和大型网站的开发都选择 MySQL社区版 作为网站数据库。

Microsoft SQL Server

1987年,Sybase发布了Unix下跑的Sql Server。

1988年微软联合了 Sybase 和 Ashton-Tate 把Sql Server迁移到 OS/2 操作系统。

1990年微软发布的新产品只有微软的品牌,即 Microsoft SQL Server 1.1。同一年,微软为 SQL Server 建立专门的技术团队,并且于次年起陆续取得了 Sybase 的授权。

1994年,微软与 Sybase 正式终止了合作关系,微软买下了 Windows NT 版本的 SQL Server 全部版权后就开始完全独立开发。

1996年,微软发布了 SQL Server 6.5,这是个经典版本。

Sql Server 2014是微软的重要版本,这个版本性能大大提升。

Sql Server 2017是微软的重要版本,这个版本支持在Liinux上安装。

image-20230606085101070

PostgreSQL

PostgreSQL是以加州大学伯克利分校计算机系开发的 Posrgres,后更名为PostgreSQL,支持在windows和linux下运行,它是免费的,以 BSD-风格许可证下发行。

键值数据库

image-20230605181939060

Redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言如Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang的API。

redis的官网地址,非常好记,是redis.io。

Memcached

memcache是一套分布式的高速缓存系统,这是一套开放源代码软件,以BSD license授权发布。

etcd

etcd 是一款分布式存储中间件,使用 Go 语言编写。作为一款分布式、可靠的键值存储组件,etcd 常用于微服务架构中的服务注册与发现中心,相较于 ZooKeeper 部署更简单,而且具有数据持久化、支持 SSL 客户端安全认证的独特优势。

文档数据库

image-20230605182111418

MongoDB

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

时序数据库

image-20230605182152281

InfluxDB

InfluxDB是一个开源的、高性能的时序型数据库。

度量的数据集(measurement),类似于关系型数据库中的 table; 一个数据点(point),类似于关系型数据库中的 row; 时间戳(timestamp),表征采集到数据的时间点; 维度列(tag),代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查询使用; 指标列(field),代表数据的测量值,随时间平滑波动。

image-20230606091244571

Elasticsearch

Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和聚合信息来发现数据中的趋势和模式。随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长。

image-20230605182225197

4、关系型数据库相关对象

4.1、表

表由许多列和行组成,它是关系数据库中最常见、最简单的数据存储形式。

image-20231027114405757

4.2、字段

每个表都被分解为称为字段(也叫列)。 employees表中的字段由:emp_nobirth_datefirst_namelast_namegender,hire_date组成。

字段是表中的列名,用于维护表中每条记录的特定信息。

4.3、记录或行

记录也称为一行数据,它是表中存在的每个单独数据项。

image-20231027114907959

4.4、列(字段)

列是表中的垂直实体,包含与表中特定字段关联的所有信息。

image-20231027115023042

4.5、NULL值

表中的NULL值是字段中显示为空的值,这意味着具有NULL值的字段是没有任何值的字段。

NULL值与零值或包含空格的字段是不同效果的,当一个字段不确定要存储什么内容时,可以使用NULL值来表示。

image-20231027115621326

声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。