PostgreSQL学习01-简介、安装
最近一段时间应客户要求需要用到PostgreSQL数据库,虽然自己搞Oracle已经很久了,但也对其他的数据库非常感兴趣,那么就开始吧。
1 . 简介
- PostgreSQL是一个对象关系型数据库管理系统,其代码完全开源.用户可以对其进行二次开发,并根据需要以开源或闭源的形式发布。
- PostgreSQL的功能非常强大,深受数据库开发者和使用者喜爱。
- PostgreSQL于2017年、2018年连续两年被DB一Engines评选为[年度数据库」。
- 截止到目前PostgreSQL已经12.1版本。
- 拥有一系列插件:空间数据库扩展插件PostGIS,外部表访问插件postgres_fdw, oracle_fdw。
- 两个网址:
官方地址:www.postgresql.org
中文社区:www.postgres.cn
1.1 一些概念
1) 元组Tuple = 行Row
2) 域Field = 字段Column
3) 数据库簇? =
4) 表空间:是一个存储位置,表空间允许数据库管理员定义一个文件系统位置。代表数据库对象(表、索引等)的文件可以存储在该文件目录下。
5) 数据段(segment)和数据页(Page)
a.数据段 = 每个表和索引都保存在一个单独的文件中,每个文件就是一个数据段。默认表或者索引超过1G,会被拆分成另外一个数据段。命名规则:filenode(段1)filenode.1(段2)b.数据页 = 默认8K,最大32K,大小是编译时确定的。
1.2 存储结构
所有ORACLE的童鞋都知道数据库体系架构是学习数据库非常重要的知识点,也是作为DBA最初需要学习的。那么Postgresql的体系架构如何呢?
1) 一个数据库簇(database cluster)包含多个database
2) 在一个database下有多个table
3) 在database和table之间根据需要可以引入一层逻辑schema
4) 表空间对应文件系统中的一颗目录树,每个数据库在表空间目录下有一个对应的子目录(以数据库OID命名)
5) 每个表和索引都可以创建单独的数据文件,它们以表或索引的filenode命名,filenode可以在系统表pg_class中查询到。表还可以创建其他辅助文件,如_fsm和_vm为后缀的文件。
1.3 进程体系架构
1) 当接收客户端连接请求后,Postmaster会创建一个新的postgres进程,并让该进程专门服务新的客户端连接,直到该连接关闭为止。
2) 后台管理进程:bgWriter,WAL Writer,CheckPointer,AutoVacuum,实现刷写脏页,记录WAL日志,空间回收等功能。
1.4 PostgreSQL 10新特性
- 逻辑复制:用于分发数据的订阅/发布框架
- 声明式表分区:便于用户划分数据
- 提高查询并行性:攻克用户的分析难题
- 同步复制的法定副本数提交:有信心地发布数据
- 安全性加强:SCRAM-SHA-256身份验证:保障数据访问安全
2. 安装
2.1 Window安装
略
2.2 Linux安装
这里主要描述下在Centos7下的安装步骤,官网上有相关的安装介绍比较详细。具体如下:
1、安装rpm文件
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2、安装客户端
yum install postgresql10
3、安装服务端
该步骤执行后,会自动创建postgres用户。
yum install postgresql10-server
4、初始化
/usr/pgsql-10/bin/postgresql-10-setup initdb
5、设置自动启动并且启动postgresql服务
systemctl enable postgresql-10
systemctl start postgresql-10
启动postgre之后,可以看到如下进程:
postgresql的安装比较简单,官网上有明确的操作步骤
安装后,就可以用root切换postgres 进入数据库
su - postgres
在postgres用户下直接命令psql就可以进入postgres数据库了