作业一

发布时间 2023-07-24 10:29:06作者: LEE_Minhyung

一、分析说明题

图 1 TiDB与OceanBase特性比较

近年来,随着5G、云计算、人工智能、区块链等新技术的发展,以及突如其来的疫情催化,各行各业对于数字化转型升级的需求越来越迫切。数字化转型离不开强大的IT基础设施,更离不开基础软件的支持。但一个不得不面对的现实是,国内基础软件95%以上的市场份额仍被国外商用或开源软件所占据。

我国产业中存在一些“卡脖子”的技术问题,特别是芯片、发动机、材料、数控机床、工业软件等领域存在短板,一些关键零部件、关键装备依赖国外。别人一制裁我们,我们国民经济中的一些关键部分就会受到重大影响。造成这种现象的主要原因是我国科技创新的能力还不够强,特别是在关键核心技术领域还缺少重大突破,原创能力、特别是从零到一的技术,我们还掌握得太少。

要发展国产数据库,就要加强基础研究,提升原创能力。

首先要加强基础研究和应用基础研究,要增强基础研究的经费、人员和平台。

既要“补短板”,也要“筑长板”。“补短板”就是奔着最紧急、最紧迫的问题去,提出科学方法、科学答案。“筑长板”就是向前看,需要有预见性,甚至在“无人区”要及早部署研究,使中国经济在向前发展的过程中得到最关键的科技支撑。

此外,对于如何解决卡脖子问题,国家已有重大部署。多个中央文件都提出要强化国家战略科技力量、健全新型举国体制,这其实就是我们解决“卡脖子”问题的抓手,要以国家实验室为抓手,汇聚大学、科研机构、企业等科研力量来组成攻关团队,形成国家战略科技力量的体系。

二、DBMS软件动手实践题

  • PostgreSQL及pgAdmin4的安装

在官网下载最新版安装包并运行,但遇到以下乱码报错的问题。

图 2 乱码报错

查询后发现报错原因是主机名包含中文,更改为全英文名称后,能正常安装。

图 3 正常安装

安装过程中选择将pgAdmin 4一并安装。

 

图 4 pgAdmin 4安装

  • 使用pgAdmin 4管理数据库
  • 启动pgAdmin 4并连接数据库服务器。

图 5 连接服务器

  • 查看各类对象,如模式、表、视图、函数、存储过程、触发器等。每一种都可以通过pgAdmin 4方便地进行操作。

 

 

图 6 各类对象

  • 以教材为例,创建数据库。

 

图 7 创建名为CurriculaDB的数据库

  • 在数据库下创建表。

图 8 创建名为Plan的表

  • 在表中添加列并定义列属性,如列名、数据类型、是否允许为空等。

图 9 定义列属性

  • 数据完整性定义,以图8中CoursePlanID为例,这是一个代理键。除了将其取值类型设置为“Serial”,定义其为主键外,还需要对其创建唯一性索引,以满足实体完整性。

图 10 定义代理键

  • 创建完成的表可在表的属性里查看。

图 11 表创建完成

三、PostgreSQL具体如何存储元数据

PostgreSQL采用客户端/服务器的架构提供服务,整个系统由连接管理系统、编译执行系统、存储管理系统、事务系统、系统表五部分组成。其中系统表负责管理PostgreSQL数据库的元数据信息,包括数据库对象信息和数据库管理控制信息。数据库初始化的时候,会自动创建pg_default和pg_global两个表空间,其中pg_global用于存放系统表。

查阅PostgreSQL官方文档的System Catalogs条目,我们发现系统表数目相当多。

如pg_class,记录了数据库中的表,索引,序列,视图。其中比较重要字段有:①relname :表,索引,视图等的名字;②relnamespace:包含这个关系的名字空间的OID,对应pg_namespace.oid;③relkind:r = 普通表,i = 索引,S = 序列,v =视图,c =复合类型,s = 特殊,t = TOAST表。

又如pg_type,记录了数据库有关数据类型的信息。其中比较重要的字段有:①typname:数据类型名字;②typlen:对于定长类型,typlen是该类型内部表现形式的字节数目。对于变长类型,typlen是负数。-1表示一种“变长”类型(有长度字属性的数据),-2表示这是一个NULL结尾的C字串。

通过SQL Shell,我们可以更直观地理解关系表。输入服务器、数据库、端口号、用户及密码,登录到CurriculaDB。

图 12 登陆到对应的数据库

使用命令\d tablename,可以查看对应的表的内容。

图 13 查看pg_class

图 14 查看pg_type

以上文建好的CurriculaDB数据库为例,使用命令查看表Plan的relkind(表类型),查询结果为r(普通表)。说明数据库的元数据确实存放于系统表中。

图 15 查询Plan的relkind