0. 背景
开始学习 PostgreSQL ,它是相对于 mySQL 的另一种关系型数据库的选择。
1. 介绍
PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。
PostgreSQL 发音是 post-gress-Q-L
,它也经常被简略念为 "postgres"。
PostgreSQL 的口号是 "世界上最先进的开源的对象关系型数据库"。
PostgreSQL主要优势:
- (1) PostgreSQL完全免费,而且是BSD协议,这意味着 PostgreSQL 数据库不会被其它公司控制。而MySQL数据库虽然是开源的,现在基本上被oracle公司控制。
- (2) 与PostgreSQl配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这在MySQL下则比较困难。
- (3) PostgreSQL在很多方面都比MySQL强,如复杂SQL的执行、存储过程、触发器、索引。
- (4) 同时PostgreSQL是多进程的,而MySQL是线程的,虽然并发不高时,MySQL处理速度快,但当并发高的时候,MySQL无法充分利用CPU的能力。
先了解PostgreSQL的系统架构。
架构基础
PostgreSQL使用一种客户端/服务器(C/S) 的模型。一次会话由下列组成:
- 服务端:一个服务器进程,它管理数据库文件、接受来自客户端应用与数据库的联接并且代表客户端在数据库上执行操作。
- 客户端:那些需要执行数据库操作的客户端(程序)应用。 它可以是一个图形界面的应用,或者是一个特制的数据库管理工具。
这些客户端和服务器可以在不同的主机上。 这时它们通过 TCP/IP 网络联接通讯。
PostgreSQL 服务器可以处理多个并发请求, 它为每个连接启动(“forks”)一个新的进程。主服务器进程总是在运行并等待着客户端联接, 而客户端和相关联的服务器进程则是起起停停。
2. 安装
我的是 CentOS 7 系统,采用二进制包的方式安装。
安装yum源
使用 yum 安装需要先获得 postgresql 的仓库源。
代码语言:javascript复制yum install [https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm](https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm)
执行安装数据库
开始使用 yum 安装
代码语言:javascript复制yum install postgresql12
验证是否安装成功
代码语言:javascript复制rpm -aq| grep postgres
支持安装完成了,我们进行一些设置后启动它。
初始化数据库
一定要先初始化数据库,否则启动的时候会报错误。
代码语言:javascript复制 postgresql-setup initdb
启动服务并设置为开机启动
代码语言:javascript复制systemctl enable postgresql.service
systemctl start postgresql.service
3. 使用 shell 方式的客户端接入
登录到控制台
在“不为postgres新建一个root用户的情况下,想登入 postgresql "
你正在使用的当前linuxx用户可能是root用户,我们要先以 postgres 账户的身份 登入,然后再执行 psql 指令进入控制台。
也就是说登录postgres需要:一个linux账户名和一个postgres账户名同名,才可登入。
我们分两步:
(1)先登录到postgres用户:
代码语言:javascript复制 $ su - postgres
备注:Linux su命令用于变更为其他使用者的身份
(2)再使用psql进入到控制台:
代码语言:javascript复制$ -bash-4.2$ psql
help看看
登录后输入 help 看看
代码语言:javascript复制-bash-4.2$ help
可能显示:
代码语言:javascript复制psql (9.2.24)
Type "help" for help.
postgres=# help
You are using psql, the command-line interface to PostgreSQL.
Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
4.数据库操作
基本的数据库操作,就是使用一般的SQL语言。
使用 Go语言 连接PostgreSQL 可以使用 gORM 库来做,参考我的另一篇文章 《Go 使用 Gorm 操作 MySQL 数据库》。
5. 参考
官方站
https://www.postgresql.org/
中文站
http://www.postgres.cn/
中文手册
http://www.postgres.cn/docs/11/index.html
中文文档
http://www.postgres.cn/v2/document
https://www.cnblogs.com/geekmao/p/8541817.html
su 指令说明
https://www.runoob.com/linux/linux-comm-su.html
https://www.cnblogs.com/deykenlee/p/7565688.html
https://www.jianshu.com/p/b4a759c2208f
END