赞
踩
使用背景
在过去的几年中,PostgreSQL的使用量逐渐增加,而Oracle和MySQL的使用量则有所下降。这主要是由于以下几个原因:开源和免费、功能丰富、可扩展性强、安全性高、跨平台支持好、社区活跃、成熟稳定。这些因素使得PostgreSQL成为了许多开发者和组织的首选数据库解决方案,从而推动了它的流行。下面介绍一下这款关系型数据库PostgreSQL。
目录
PostgreSQL 是当前功能最强大的开源的关系型数据库系统,支持跨平台的多种操作系统, 基于C语言开发。通常简称为PG或PGSQL。 PostgreSQL是100%社区驱动的开源项自,由全球范围内千人以上的社区责献者共同维护。PostgreSQL提供了一个完整功能的瓶本,而不像MySQL那样提供多个不同的版本,如社区版、商业版及企业版。
官网:PostgreSQL: The world's most advanced open source database
中文社区: PostgreSQL中文社区:: 世界上功能最强大的开源数据库...
中文手册: PostgreSQL 14.1 手册
① 开源和免费:是一款完全开源的数据库系统,用户可以免费使用、修改和分发它。
② 功能丰富:具有许多高级功能,包括复杂查询、事务支持、触发器、存储过程、视图、全文搜索、地理空间数据处理等。
③ 可扩展性:具有良好的可扩展性,支持水平扩展和垂直扩展。通过使用分区表、复制、流复制等功能,可以轻松地扩展数据库以满足不断增长的需求。
④ 安全性:注重数据安全性,提供了各种安全功能,如访问控制、SSL支持、加密存储、审计功能等,可以帮助保护数据免受恶意攻击和数据泄露。
⑤ 跨平台支持:可以在各种操作系统上运行,包括Linux、Unix、Windows和macOS等,这使得它具有很好的跨平台兼容性。
⑥ 社区支持:拥有一个庞大的全球开发者社区,提供了丰富的文档、教程和支持资源。用户可以通过邮件列表、论坛等渠道获得帮助和交流经验。
⑦ 成熟稳定:已经存在了30多年,经过了多次的版本迭代和改进,已经非常成熟和稳定。许多大型企业和组织都在使用PostgreSQL来处理他们的关键业务数据。
PostgreSQL是一款功能丰富、可靠稳定、安全性高的开源数据库管理系统,适用于各种规模的应用程序和企业,可以满足各种复杂的数据需求。
① 数据存储和管理:PostgreSQL可以存储和管理大量的数据,包括结构化数据、半结构化数据和非结构化数据。
② 数据查询和分析:PostgreSQL提供了强大的查询和分析功能,包括复杂查询、聚合函数、窗口函数、分析函数等。
③ 数据安全:PostgreSQL提供了各种安全功能,如访问控制、SSL支持、加密存储、审计功能等,可以帮助保护数据免受恶意攻击和数据泄露。
④ 数据一致性和完整性:PostgreSQL支持事务,可以确保数据的一致性和完整性。
⑤ 数据复制和高可用性:PostgreSQL支持数据复制和流复制,可以提供数据的备份和高可用性。
⑥ 数据分区和分布式处理:PostgreSQL支持分区表,可以将数据分布到多个物理存储设备上,从而提高查询性能。
⑦ 地理信息系统(GIS):PostgreSQL具有强大的地理信息系统支持,包括地理空间数据类型、索引和查询功能。
⑧ 全文搜索:PostgreSQL提供了全文搜索功能,包括全文索引和全文搜索查询。
① Web应用程序:PostgreSQL是许多Web应用程序的首选数据库解决方案,包括许多大型的社交网络、电子商务网站、新闻门户等。它的高级功能和可扩展性使得它能够处理大量的数据和复杂的查询需求。
② 地理信息系统(GIS):PostgreSQL具有强大的地理信息系统支持,包括地理空间数据类型、索引和查询功能。因此,它被许多GIS应用程序用作后端数据库。
③ 全文搜索:PostgreSQL提供了全文搜索功能,包括全文索引和全文搜索查询。这使得它成为许多需要全文搜索功能的应用程序的首选数据库解决方案。
④ 大数据处理:PostgreSQL的可扩展性和高级功能使得它能够处理大量的数据,包括大数据处理、数据仓库等。
⑤ 金融和电信行业:PostgreSQL被许多金融和电信公司用于处理他们的关键业务数据,包括交易数据、客户数据等。它的高级功能和数据安全性使得它成为这些行业的首选数据库解决方案。
⑥ 科学研究:PostgreSQL被许多科学研究机构用于处理和分析科学数据,包括天文学、生物学、气象学等。它的高级功能和可扩展性使得它能够满足这些领域的复杂数据需求。
总结
从应用场景来说,PG更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostareSQl的ison,isonb,hstore等数据格式,特别适用于一些大数据格式的分析;而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、acebook、albaba),当然现在MySQL的在innodb引擎的大力发展,功能表现良好。
使用官方源: PostgreSQL: Downloads
- sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- # 使用yum包管理器安装PostgreSQL的官方YUM存储库。这个存储库包含了PostgreSQL的二进制安装包,可以让你使用yum来安装和更新PostgreSQL。
- sudo yum install -y postgresql14-server
- sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
- # 使用PostgreSQL 14的postgresql-14-setup脚本初始化一个新的PostgreSQL 14数据库。
- sudo systemctl enable postgresql-14
- sudo systemctl start postgresql-14
方法一:在默认配置下,本机访问 PostgreSQL
- [root@localhost ~]# su - postgres # 切换 postgres 用户
- 上一次登录:日 3月 24 12:49:21 CST 2024pts/0 上
- -bash-4.2$ psql # 登录 PostgreSQL 控制台
- psql (14.11)
- 输入 "help" 来获取帮助信息.
-
- postgres=# # 此时说明用 postgres 身份登录数据库,且不需要密码
- postgres=# \password postgres # 给 postgres 用户设置密码
- Enter new password for user "postgres":
- 再输入一遍:
- [root@localhost ~]# systemctl stop firewalld.service
- [root@localhost ~]# setenforce 0
- [root@localhost ~]# yum install -y gcc.x86_64 make readline-devel zlib-devel
- [root@localhost ~]# cd /opt/
- [root@localhost opt]# wget https://ftp.postgresql.org/pub/source/v14.1/postgresql-14.1.tar.gz
- # 下载 PostgreSQL 14.1 的源代码压缩包
- [root@localhost opt]# ls
- postgresql-16.2.tar.gz rh
- [root@localhost opt]# tar xf postgresql-14.1.tar.gz
- [root@localhost opt]# cd postgresql-14.1/
- [root@localhost postgresql-14.1]# ./configure --prefix=/apps/pgsql --with-pgport=5432
- # 默认安装在/usr/local/pgsql,指定了PostgreSQL的安装路径/apps/pgsql,指定了 PostgreSQL 的默认端口号
- [root@localhost postgresql-14.1]# make -j 2 && make install
PostgreSQL 默认不支持 以 root 身份启动服务,虽然也可修改源码实现 root 启动,但基于安全考虑不建议,因此必须创建一个用于启动 PostgrepSQL 的普通用户。
- [root@localhost postgresql-14.1]# useradd -s /bin/bash -m -d /home/postgres postgres
- # -m 在/home目录下为新用户创建一个家目录
- # -d /home/postgres:这个选项指定新用户的家目录为/home/postgres
- # 创建数据库用户和组,注意此用户需要可以交互登录
- [root@localhost postgresql-14.1]# echo "123123" | passwd --stdin postgres
- 更改用户 postgres 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
- # 修改postgres密码
- [root@localhost postgresql-14.1]# mkdir /pgsql/data -pv
- [root@localhost postgresql-14.1]# chown postgres.postgres /pgsql -R
- # 将 /pgsql 目录及其所有子目录和文件的所有者和所属组都改为 postgres 用户和 postgres 组,-R递归
- 设置了一些环境变量以便于 PostgreSQL 的安装和使用
- [root@localhost ~]# vim /etc/profile.d/pgsql.sh # 设置 PostgreSQL 的环境变量
- export PGHOME=/apps/pgsql # 设置了 PostgreSQL 的安装目录为 /apps/pgsql
- export PATH=$PGHOME/bin/:$PATH # 将 PostgreSQL 的 bin 目录添加到系统的 PATH 环境变量中,以便于在命令行中直接运行 PostgreSQL 的命令
- export PGDATA=/pgsql/data # 设置了 PostgreSQL 的数据目录为 /pgsql/data
- export PGUSER=postgres # 设置了 PostgreSQL 的默认用户为 postgres
- export MANPATH=/apps/pgsql/share/man:$MANPATH # 将 PostgreSQL 的 man 目录添加到系统的 MANPATH 环境变量中,以便于在命令行中查看 PostgreSQL 的帮助文档
- [root@localhost ~]# su - postgres
- [postgres@localhost ~]$ initdb -D /pgsql/data # -D 指定数据目录
- # 如果没有指定选项 -D <datadir> ,按环境变量$PGDATA指定的路径进行初始化
- 生产建议初始化方式:
- initdb -A md5 -D $PGDATA -E utf8 --locale=C -U postgres -W
- # -A #指定local connections默认的身份验证方法
- # -D #指定数据目录
- # -E #指定字符集
- # --locale=C #指定语言环境
- # -U #指定数据库superuser用户名
- # -W #指定数据库superuser的用户密码
- [root@localhost ~]# su - postgres
- [postgres@localhost ~]$ pg_ctl start # 开启
- [postgres@localhost ~]$ pg_ctl stop # 停止
- [postgres@localhost ~]$ pg_ctl -l logfile start # 将日志记录到文件中,不加就打印在屏幕上
- [postgres@localhost ~]$ pg_ctl restart # 重启
-
- 启动:
- pg_ctl -D /pgsql/data -l logfile start
- # pg_ctl:PostgreSQL 控制命令,用于控制 PostgreSQL 服务器的启动、停止、重启等操作。
- # -D /pgsql/data:指定 PostgreSQL 数据库的数据目录。在这个例子中,数据目录是 /pgsql/data。
- # -l logfile:指定日志文件的路径。在这个例子中,日志文件的路径是 logfile。
- # start:命令,用于启动 PostgreSQL 服务器。
- postgres -D /pgsql/data &
- # postgres:PostgreSQL 服务器的可执行文件。
- # -D /pgsql/data:指定 PostgreSQL 数据库的数据目录。在这个例子中,数据目录是 /pgsql/data。
- # &:在 Unix 系统中,& 符号用于将命令放入后台运行。
- /opt/postgresql-14.1/contrib/start-scripts/linux
- # 源码目录中内置PostgreSQL的启动脚本
-
- 停止:
- pg_ctl stop -D $PGDATA [-m SHUTDOWN-MODE]
- 其中-m是指定数据库的停止方法,有以下三种:
- # smart:等所有的连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
- # fast :快速关闭数据库,断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。相当于Oracle数据库关闭时的immediate模式。此为默认值,建议使用
- # immediate:立即关闭数据库,相当于数据库进程立即停止,直接退出,下次启动数据库需要进行恢复。相当于Oracle数据库关闭时的 abort模式
- 示例:
- pg_ctl stop -D /pgsql/data/ -ms # smart关闭
- pg_ctl stop -D /pgsql/data/ -mf # fast关闭,推荐使用,也是默认模式
- pg_ctl stop -D /pgsql/data/ -mi # immediate 相当于kill -9
-
- 或者发送信号,直接向数据库主进程发送的signal 信号有以下三种。
- # SIGTERM:发送此信号为Smart Shutdown关机模式。
- # SIGINT:发送此信号为Fast Shutdown关机模式。
- # SIGQUIT:发送此信号为Immediate Shutdown关机模式。
-
- pg_ctl restart -mf # 重启
- [root@localhost ~]# vim /lib/systemd/system/postgresql.service
- [Unit] # 定义服务的基本属性
- Description=PostgreSQL database server # 服务的描述,它会在系统日志中显示
- After=network.target # 告诉 systemd 在网络服务启动后再启动 PostgreSQL
- [Service] # 服务的主要部分,定义了服务的运行方式
- User=postgres # 用户
- Group=postgres # 用户组
- ExecStart=/apps/pgsql/bin/postmaster -D /pgsql/data # 这是服务的启动命令。它告诉 systemd 在 /apps/pgsql/bin/postmaster 这个可执行文件的基础上启动 PostgreSQL,同时使用 /pgsql/data 作为数据目录
- ExecReload=/bin/kill -HUP # 服务的重载命令。告诉 systemd 在服务运行时发送 SIGHUP 信号给服务的主进程,以便重新加载配置
- [Install] # systemd 单元的结束标记,用于定义服务的安装属性
- WantedBy=multi-user.target # 告诉 systemd 在多用户模式下(即正常的系统运行模式)启动这个服务
- [root@localhost ~]# systemctl start postgresql.service
- [root@localhost ~]# systemctl status postgresql
- ● postgresql.service - PostgreSQL database server
- Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
- Active: active (running) since 六 2024-04-06 12:25:59 CST; 1s ago
- Main PID: 47331 (postmaster)
- [root@localhost ~]# su - postgres # 切换 postgres 用户
- 上一次登录:六 4月 6 12:25:09 CST 2024pts/2 上
- [postgres@localhost ~]$ psql # 登录 PostgreSQL 控制台,可以输入该数据库支持的一些命令
- psql (14.1)
- Type "help" for help.
-
- postgres=#
这里使用 EnterpriseDB 来下载安装,EnterpriseDB 是全球唯一一家提供基于 PostgreSQL 企业级产品与服务的厂商。下载地址:Community DL Page (enterprisedb.com)
安装环境:Windows Server 2016
① 下载安装包,双击安装包开始安装
② 选择路径
③ 勾选组件
④ 输入管理员密码
⑤ 其余默认下一步,去掉勾选,点击 Finish
① 打开 pgAdmin 4
② 主页如下
③ 登录
④ 控制面板如下
⑤ 打开 SQL Shell(psql)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。