postgreSQL学习
一,简介
1.什么是postgresql
https://www.postgresql.org/#官网
PostgreSQL 是一个功能强大的开源对象关系数据库系统,它使用和扩展了 SQL 语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,是加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上拥有超过35年的积极开发经验。
开源许可独特性
(Postgres遵守BSD许可证发行)却使开发者们得以获取源代码并进一步开发系统。
BSD许可协议(英语:Berkeley Software Distribution license)是自由软件中使用最广泛的许可协议之一。BSD就是遵照这个许可证来发布,也因此而得名 BSD许可协议。
BSD包最初所有者是加州大学的董事会,这是由于 BSD 源自加州大学伯克利分校。BSD开始后,BSD许可协议得以修正,使得以后许多BSD变种,都采用类似风格的条款。
跟其他条款相比,从GNU通用公共许可证(GPL)到限制重重的著作权(Copyright),BSD许可证比较宽松,甚至跟公有领域更为接近。“Take it down to the copy center and make as many copies as you want”[1]。可以说,GPL强迫后续版本必须一样是自由软件,BSD的后续版本可以选择要继续是BSD或其他自由软件条款或封闭软件等等。
2.为什么使用postgresql
PostgreSQL 具有许多功能,旨在帮助开发人员构建应用程序、管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集大小。除了免费和开源之外,PostgreSQL还具有高度的可扩展性。
3.postgresql的各功能详尽列表
数据类型
- 基元:整数、数字、字符串、布尔值
- 结构化:日期/时间、数组、范围/多范围、UUID
- 文档:JSON/JSONB、XML、KEY-VALUE (HSTORE)
- 几何:点、线、圆、多边形
- 自定义:复合、自定义类型
数据完整性
- 唯一,不为空
- 主键
- 外键
- 排除约束
- 显式锁、咨询锁
并发性、性能
- 索引:B 树、多列、表达式、部分索引
- 高级索引:GiST,SP-Gist,KNN Gist,GIN,BRIN,覆盖索引,布隆过滤器
- 复杂的查询规划器/优化器,仅索引扫描,多列统计信息
- 事务,嵌套事务(通过保存点)
- 多版本并发控制 (MVCC)
- 并行化读取查询和构建 B 树索引
- 表分区
- SQL 标准中定义的所有事务隔离级别,包括可序列化
- 表达式的实时 (JIT) 编译
可靠性、灾难恢复
- 预写日志记录 (WAL)
- 复制:异步、同步、逻辑
- 时间点恢复 (PITR),活动备用
- 表空间
安全
- 身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
- 强大的门禁系统
- 列级和行级安全性
- 使用证书和其他方法进行多重身份验证
扩展
- 存储函数和过程
- 过程语言:PL/pgSQL、Perl、Python 和 Tcl。还有其他语言可以通过扩展使用,例如Java,JavaScript(V8),R,Lua和Rust。
- SQL/JSON 路径表达式
- 外部数据包装器:使用标准 SQL 接口连接到其他数据库或流
- 可定制的表存储界面
- 许多提供附加功能的扩展模块,包括 PostGIS
国际化、文本搜索
- 支持国际字符集,例如通过 ICU 排序规则
- 不区分大小写和不区分重音的排序规则
- 全文搜索
二,postgresql安装
1.Linux源码安装
1.获取源码
目前最新版:https://www.postgresql.org/ftp/source/v15.3/
2.安装依赖包
yum -y install readline yum -y install zlib zlib-devel yum -y install ncurses-devel yum install -y readline-devel
3.解压编译安装
tar -zxf postgresql-15.3.tar.gz -C /usr/src/ cd /usr/src/postgresql-15.3/ ./configure make && make install
4.创建用户
groupadd postgres useradd -g postgres postgres
5.创建初始化数据
mkdir -p /home/psql/data chown postgres:postgres /home/psql/data/ • 1 • 2
6.配置环境变量
vi /etc/profile #最后添加一行 PATH=$PATH:/usr/local/pgsql/bin/ source /etc/profile
7.进入postgres
1.切换用户并初始化数据库 su - postgres 2.初始化 initdb -D /home/psql/data/
8.修改配置文件
[root@localhost ~]# vi /home/psql/data/pg_hba.conf 修改listen_addresses为listen_addresses = ‘*’,允许别的机器访问 [root@localhost ~]# vi /home/psql/data/pg_hba.conf 在ipv4的配置下添加host all all 0.0.0.0/0 md5,允许密码登录
9.通过systemcat管理
vi /etc/systemd/system/pgsql.service #添加一下内容 [Unit] Description=postgresql [Service] Type=forking User= postgres Group=postgres ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /var/pgsqldata ExecReload=/usr/local/pgsql/bin/pg_ctl restart -D /var/pgsqldata ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /var/pgsqldata PrivateTmp=true [Install] WantedBy=multi-user.target #保存
10.测试启动
systemctl daemon-reload systemctl start pgsql.service && systemctl enable pgsql.service systemctl status pgsql.service
2.yum安装
https://www.postgresql.org/download/ #官网地址
根据个人需求进行选择
1.安装rpm,初始化
#安装过程 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm #安装 sudo yum install -y postgresql12-server #数据库初始化 sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
2.设置允许外包连接
#设置允许外部连接 vim /var/lib/pgsql/11/data/pg_hba.conf host all all 0.0.0.0/0 md5 vim /var/lib/pgsql/11/data/postgresql.conf listen_addresses = '*'
3.设置允许root命令登录
vim /var/lib/pgsql/11/data/pg_hba.conf #修改: local all all peer #为: local all all trust
4.启动服务
sudo systemctl enable postgresql-12 sudo systemctl start postgresql-12
5.切换用户
su - postgres psql -U postgres #远程访问-W 提示输入密码 ALTER USER postgres with encrypted password '123456'; #设置密码
3.win10安装
1.访问官网
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads