PostgreSQL系列一:PostgreSQL简介与安装

一、PostgreSQL简介

    1.1 PostgreSQL概述
            PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等,它还支持使用C语言写自定义函数、触发器,也支持使用流行的语言写自定义函数,比如其中的PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python、PL/Tcl,等等。
    1.2 PostgreSQL的优势
      PostgreSQL有以下优势:
  • PostgreSQL数据库是目前功能最强大的开源数据库,它是最接近工业标准SQL92的查询语言,并且正在实现新的功能以兼容最新的SQL标准:SQL2003
  • 稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。
  • 开源省钱:PostgreSQL数据库是开源的、免费的,而且是BSD协议,在使用和二次开发上基本没有限制。
  • 支持广泛:PostgreSQL数据库支持大量的主流开发语言,包括C、C++、Perl、Python、Java、Tcl,以及PHP等。
  • PostgreSQL社区活跃:PostgreSQL基本上每三个月推出一个补丁版本,这意味着已知的BUG很快会被修复,有应用场景的需求也会及时得到响应。  

 1.3 PostgreSQL应用现状和发展趋势

        PostgreSQL目前在国外很流行,特别是最近几年使用PostgreSQL数据库的公司越来越多。比如,日本电信(NTT)大量使用PostgreSQL替代Oracle数据库,并且在PostgreSQL之上二次开发了Postgres-XC。网络电话公司Skype也大量使用PostgreSQL,并贡献了一些与PostgreSQL数据库配套的开源软件:PL/Proxy、pgQ、Londiste。全球最大的CRM软件服务提供商Salesforce也开始使用PostgreSQL。
        在国内,越来越多的公司开始使用PostgreSQL,如斯凯网络的后台数据库基本使用的都是PostgreSQL数据库,去哪网也大量使用了PostgreSQL数据库。主流的云服务提供商如亚马逊、阿里云的RDS同样提供了PostgreSQL的支持。
        更多的使用情况可以见PostgreSQL官方网站:http://www.postgresql.org/about/users/
 
  1.4 PostgreSQL与MySQL的对比
        既然有了MySQL数据库了,为什么还要使用PostgreSQL呢?这是因为在一些应用场景中,使用MySQL有以下几个缺点:
  • 功能不够强大:MySQL的多表连接查询方式只支持“Nest Loop”,不支持“hash join”和“sort merge join”。不仅如此,还有很多SQL语法也不支持,子查询性能比较低。
  • 性能优化工具和度量信息不足:MySQL在运行过程中如果出现问题,只产生很少的性能数据,很难让维护人员准确定位问题产生的原因。MySQL的复制是异步的,无法通过Master/Slave做到数据零丢失。一些第三方公司也有改造MySQL源代码实现同步复制,但这些方案要么是没有开源,要么开源却又不是很稳定,所以,对于普通大众来说,如何实现同步复制成了一个令人头疼的问题。
  • 在线操作功能较弱:如果在MySQL表中加列,基本上是新建一个表,而且建索引时也会锁定整张表,即在建索引的过程中,表不能做任何操作。一些大的互联网公司或者是修改MySQL源码来实现在线DDL的功能,或者是通过上层架构来解决这个问题,如现在slave数据库上把DDL做完,然后把应用从master库切换到slave,再把原先的master上把DDL做完。第一种方法,需要公司有很强的MySQL研发能力,第二种方法需要公司有较强的开发能力,能设计出较强的应用架构。这对于一些中小公司来说不太容易实现。
        相对这些MySQL的弱点,PostgreSQL有以下优点:
  • PostgreSQL功能强大:支持所有主流的多表连接查询的方法(如:“Nest Loop”、“hash join”、“sort merge join”);支持绝大多数的SQL语法(如:with语句)。
  • 性能优化工具与度量信息丰富:PostgreSQL数据库中有大量的性能视图,可方便地定位问题(比如:可看到正在执行的SQL,可通过锁视图看到谁在等待、哪条记录被锁定等)。PostgreSQL中设计了专门的架构和进程用于收集性能数据,既有物理I/O方面的统计,也有表扫描方面的性能数据。
  • 在线操作功能好:PostgreSQL增加空值的列时,本质上只是在系统表上把列定义上,无须对物理结构做更新,这就让PostgreSQL在加列时可以做到瞬间完成。PostgreSQL还支持在线建索引的功能,建索引的过程可以不锁更新操作。
  • PostgreSQL9.1开始,支持同步复制功能,通过master和slave之间的复制可以实现零数据丢失的高可用方案。
    另外,由于MySQL对SQL语法支持的功能较弱,基本上不适合做数据仓库。而PostgreSQL不仅支持复杂的SQL,还支持大量的分析函数,非常适合做数据仓库。
    PostgreSQL数据库中还有一些支持移动互联网的新功能,如空间索引。PostGIS是最著名的一个开源GIS系统,它是PostgreSQL中的一个插件,通过它可以很方便地解决LBS中一些位置计算问题。
    综上所述,PostgreSQL数据库市一个功能强大,又带有移动互联网特征的开源数据库。如果你仅仅是想把数据库作为一个简单的存储功能使用(如一些大的互联网公司),一些较复杂的功能都想放在应用中来实现,那么选择MySQL或一些NoSQL产品都是合适的;如果你应用的数据访问很简单(如大多数的blog系统),那么后端使用MySQL也是很合适的。但如果你的应用不像blog系统那么简单,而你又不想消耗太多的开发资源,那么PostgreSQL是一个明智的选择。最有说服力的例子就是图片分享公司instagram,在使用python+PostgreSQL架构后,只是十几个人就支持起了整个公司的业务。在数据库中使用PostgreSQL的感觉,就像在开发语言中使用python,会让你的工作变得简洁和高效。
 
二、PostgreSQL安装
 2.1 Linux上的安装:
          源码安装方式:
         1、从PostgreSQL官方网站下载源码:www.postgresql.com,目前最新版本是9.5
PostgreSQL系列一:PostgreSQL简介与安装_第1张图片
  2、点击“Download”标签,选择合适的源码压缩包,我这里选择Redhat平台的postgresql9.5.0.tar.gz压缩包
PostgreSQL系列一:PostgreSQL简介与安装_第2张图片
 3、环境准备:操作系统为CentOS6.5_x86 64位
1 [root@masterdb ~]#yum install -y zlib zlib-devle readline readline-devel python python-devel perl perl-devel bison flex  perl-ExtUtils-Embed

可选软件包(lrzsz,sysstat,e4fsprogs,openssl ,openssl-devel ,pam-devel,libxml2-devel,libxslt-devel,tcl-devel,gcc,make,smartmontools,OpenIPMI-tools, systemtap-sdt-devel)

4、安装步骤:

 1 [root@masterdb ~]# groupadd postgres
 2 [root@masterdb ~]# passwd postgres
 3 Changing password for user postgres.
 4 New password: 
 5 BAD PASSWORD: it is too simplistic/systematic
 6 BAD PASSWORD: is too simple
 7 Retype new password: 
 8 passwd: all authentication tokens updated successfully.
 9 [root@masterdb ~]# tar xf postgresql-9.5.0.tar.gz -C /usr/local/
10 [root@masterdb ~]# cd /usr/local/postgresql-9.5.0/
11 [root@masterdb postgresql-9.5.0]#  ./configure --prefix=/usr/local/pgsql9.4.5 --with-perl --with-python
12 [root@masterdb postgresql-9.5.0]# make
13 [root@masterdb postgresql-9.5.0]# make install
14 [root@masterdb postgresql-9.5.0]# cd contrib/   #安装额外的管理工具,以便后续管理使用
15 [root@masterdb contrib]# make install
16 [root@masterdb ~]# chown -R postgres.postgres /data/postgredata/
17 [root@masterdb ~]# chown -R root.postgres /usr/local/pgsql9.4.5

5、配置环境变量:

 

1 [root@masterdb ~]# vim /etc/profile.d/pgsql.sh
2 export PATH=$PATH:/usr/local/pgsql9.4.5/bin
3 export LD_LIBRARY_PATH=/usr/local/pgsql9.4.5/lib
4 export PGDATA=/data/pgdata
5 [root@masterdb ~]# source /etc/profile.d/pgsql.sh

 

6、初始化数据库:

 1 [root@masterdb ~]# su - postgres
 2 [postgres@masterdb ~]$ pg_ctl initdb
 3 setting privileges on built-in objects ... ok
 4 creating information schema ... ok
 5 loading PL/pgSQL server-side language ... ok
 6 vacuuming database template1 ... ok
 7 copying template1 to template0 ... ok
 8 copying template1 to postgres ... ok
 9 syncing data to disk ... ok
10 WARNING: enabling "trust" authentication for local connections
11 You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.Success. You can now start the database server using: /usr/local/pgsql9.4.5/bin/pg_ctl -D /data/postgredata -l logfile start
12 [postgres@masterdb ~]$ pg_ctl -D /data/postgredata/ start
13 server starting
14 [postgres@masterdb ~]$ LOG:  database system was shut down at 2016-02-01 14:02:16 CST
15 LOG:  MultiXact member wraparound protections are now enabled
16 LOG:  database system is ready to accept connections
17 LOG:  autovacuum launcher started

如果以上没有报错,说明已安装成功。

2.2 Windows上的安装

1、从官网下载PostgreSQL的windows版本:http://www.enterprisedb.com/products-services-training/pgdownload#windows
     我这里以window6位的postgresql9.5为例演示图形化安装
 

2、双击下载的postgresql-9.5.0-1-windows-x64.exe文件开始安装

 

3、单击“Next”继续,选择PostgreSQL软件安装目录,这里我选择安装在D:\Program Files\PostgreSQL\9.5

 

 
4、单击"Next"继续,选择数据存放目录,我选择D:\Program Files\PostgreSQL\9.5\data,也即是在软件安装目录下的data目录,生产环境下要按实际需求合理规划数据存放目录。
5、单击“Next”继续,为postgresql的超级用户设置一个强密码,默认超级用户为postgres
6、单击“Next”继续,设置监听端口,默认为5432,你也可以自定义端口,我这里选择默认
7、单击“Next”继续,设置高级选项,主要是集群方面的设置,这里暂时用不到集群,选择默认即可
8、单击“Next”继续
9、继续单击“Next”后开始安装,等待安装完成,如下图:
10、单击“Finished”完成安装
12、单击“添加一个服务器连接”图标,连接我们刚刚安装好的postgresql服务器,输入主机、端口、用户名和密码等信息后,点击“确定” ,即可连接进去。
 
 
 
 
 
 

你可能感兴趣的:(PostgreSQL系列一:PostgreSQL简介与安装)