为什么是0.01

最近在做自己的项目用到了数据库,之前只是简单的用过MySQL,对数据库也基本不懂,就会一些基本的SQL操作,于是乎想趁这个机会去好好了解一个数据库。

为什么要选择postgresql?

  • 它是开源的,并且是C语言写的,我做过九年C语言开发,要去了解这个数据库不看源代码肯定是不行的
  • MySQL也是开源的,但是简单的了解了一下网上的说明,我觉得postgresql更优秀、更加有前景一些
  • 为什么选择PostgreSQL而不是MySQL这是一位独立开发者的讲述,还是很有道理的

这里的0.01就是指我自身的一些条件一些基础,基本可以忽略,但是也是必不可少的,所以定义为0.01。

准备

代码

分析代码肯定是必要的,github上有postgresql的Mirro,所以我就fork了一份代码,方便以后进行自我学习、注释;为了代码的稳定性,我选择了一个稳定的分支来进行分析,目前使用的是REL_10_1。

资料

一上来就看代码肯定是不可能的,必要的参考资料是必不可少的。

postgresql安装

最直接的学习当然就是从使用开始,所以我们需要安装postgresql,现在我也不从源码编译安装了,我用的是Macos,因此我直接用brew安装。

# 安装
brew install postgres
# 作为服务启动
brew services start postgresql
# 如果不想作为服务在后台启动,那么就直接运行下面的命令
pg_ctl -D /usr/local/var/postgres start

开始的时候越简单越好,我就直接作为服务启动了。

用户创建

Mac下面安装好了以后只有一个默认的当前用户,参照这里的资料我知道了如何简单地创建用户。

命令简介

postgresql跟很多数据库一样都是使用客户机/服务器(C/S)的模式提供服务,postgresql提供了很多有用的命令行工具供我们使用,先简单地做个总结,后面去一个个敲就能很快熟悉了。

命令 描述
clusterdb 对一个数据库中先前已经建过簇的表进行建簇
createdb 创建一个 PostgreSQL 数据库
createlang 安装一个过程语言进PostgreSQL数据库
createuser 创建一个新的PostgreSQL用户
dropdb 删除一个PostgreSQL数据库
droplang 从数据库中删除一个过程语言
dropuser 删除一个PostgreSQL用户
ecpg 用于C语言程序的PostgreSQL嵌入式SQL预处理
initdb 初始化一个PostgreSQL数据库簇
oid2name helps examining the file structureused by PostgreSQL
postgresql PostgreSQL服务器
pg_archivecleanup
psql PostgreSQL 的交互式客户端工具
pg_dump 把一个数据库转储为纯文本文件或者是其它格式
pg_resetwal
pg_test_timing
pg_basebackup
pg_dumpall 抽取一个PostgreSQL数据库簇进一个SQL脚本文件
pg_restore 从一个归档中恢复一个由 pg_dump 创建的 PostgreSQL 数据库
pg_upgrade upgrades a PostgreSQL cluster toa different major version
pg_config 提供PostgreSQL的安装信息
pg_isready
pg_rewind
pg_waldump
pg_controldata 显示PostgreSQL数据库簇控制信息
pg_receivewal
pg_standby allows PostgreSQL warm standbyservers to be configured
pgbench a benchmarking tool forPostgreSQL
pg_ctl 用于初始化、启动、停止或控制PostgreSQL服务器的工具
pg_recvlogical receives PostgreSQLstreaming transaction logs
pg_regress regression test driver
pg_regress_ecpg regression test driver
pg_resetxlog 重置 PostgreSQL 事务日志
pg_test_fsync
pg_isolation_regress regression test driver
reindexdb 对一个PostgreSQL数据库重新创建索引
vacuumdb 清理并且优化一个PostgreSQL数据库
vacuumlo removes unreferenced large objectsfrom databases
zic

逛论坛

知者行之始,行者知之成。学东西还是需要实际运用到才好,所以要知行合一,这是最快学习的路径。那就找个postgresql论坛,去尝试回答别人的问题,这样会学习得更快。不过说实话国内相关的资源还是真少啊。

更新历史

2018/10/07

  • 初稿