PostgreSQL从菜鸟到专家 什么是PostgreSQL数据库

红薯 发布于 2012/04/26 23:32
阅读 2K+
收藏 11

什么是PostgreSQL数据库?

现在是时候告诉你到底PostgreSQL是什么了。它是一个包含关系模型和支持SQL标准查询语言的DBMS(数据库管理系统)。

PostgreSQL也非常先进和可靠,并且性能非常高。它基本上可以在任何UNIX平台上运行,包含类UNIX系统,比如FreeBSD、 Linux和Mac OS X。它也可以在Microsoft Windows NT/2000/2003服务器版本上运行,甚至可以在Windows XP上进行开发。并且,就像本章开始提及的,它免费且开源。

PostgreSQL可以与其他DBMS媲美。它基本上包含其他所有商业的或开源的数据库中你能找到的功能,甚至一些你找不到的功能。

PostgreSQL 包含以下功能(在PostgreSQL FAQ里面列出的):

l   事务

l   子查询

l   视图

l   外键参照完整性

l   复杂的锁

l   用户自定义类型

l   继承

l   规则

l   多版本并发控制

从版本6.5开始,PostgreSQL就非常的稳定,这通过针对每个发布版本都通过大量的回归测试得以保证。7.x发布版比以前版本更接近SQL92标准,并去掉了令人讨厌的行数限制。

本书中使用的PostgreSQL,8.x版本,增加了以下新功能:

l   Microsoft Windows原生支持

l   表空间

l   可以修改列类型

l   时间点恢复

PostgreSQL被证实在使用中非常可靠。每次发布都被严格控制,BETA都经过至少一个月的测试。通过庞大的用户社区和普及的源码访问,BUGs很快就被修复了。

PostgreSQL的性能在每次发布都有提升,最新的基准测试显示在某些条件下,它可以同商业产品相媲美。一些非全功能的数据库系统性能会比它高出一些,因为这些数据库在没有全功能带来的性能损耗。当然,对于足够简单的应用,可以使用扁平文件的数据库系!

PostgreSQL历史简介

PostgreSQL可以回溯它的家族树到1977年的加州大学伯克利分校(University of California at Berkeley,UCB)。一个叫做Ingres的关系数据库由UCB在1977到1985年开发。Ingres是一个著名的UCB产出,在很多学院和 研究团体的UNIX计算机上崭露头角。为了服务于商业市场,Ingres的源码由Relational Technologies/Ingres公司加以改良并成为第一个商用RDBMS。

注:今天,Ingres已经变成了CA-INGRES II,一个Computer Associates公司的产品。它最近也变成了开源产品。

同时,在UCB,从1986到1994年,一个名叫Postgres的关系数据库服务器被继续开发。同样,这份代码被Illustra公司拿去发展 成一个商业化的产品(Illustra 公司后来被 Informix 公司并购,程序则整合到 Informix的 Universal Server 去了)。在1994年,Postgres被添加了SQL功能,且被易名为Postgres95。

到1996年,Postgres开始变得非常流行,开发人员决定开放它的开发到一个邮件列表,成功的实现了志愿者驱动的Postgres发展。这时 候,Postgres经历了它的最后一次更名,替换“95”标记为更恰当的“SQL”,反映出它现在支持的查询语言标准。PostgreSQL诞生了。

现在,一个因特网上的开发团队使用其他开源软件像Perl,Apache和PHP的同样的方法开发着PostgreSQL。用户可以访问源码并贡献修复代码、增强功能和建议新功能。PostgreSQL的官方发布网站为http://www.postgresql.org

已经有很多公司提供商业支持了。例如EnterpriseDB公司,期网站地址为:http://www.enterprisedb.com

PostgreSQL架构

PostgreSQL强壮的一个原因源于它的架构。和商业数据库一样,PostgreSQL可以用于C/S(客户/服务器)环境。这对于用户和开发人员有很多好处。

PostgreSQL安装核心是数据库服务端进程。它允许在一个独立服务器上。需要访问存储在数据库中的数据的应用程序必须通过数据库进程。这些客户端程序无法直接访问数据,即使它们和服务程序在同一台机器上。

注:PostgreSQL还不具有一些企业级商业数据库的负载均衡和提供扩展的可伸缩性和可恢复性的HA(High- Availability,高可用性)功能。在http://gborg.postgresql.org有一些PostgreSQL认可的项目针对增加这 些功能在进行中,同时也有一些商业解决方案存在。

这种分开为客户端和服务器端的方式可以让应用程序分布式允许。你可以使用网络来分隔你的客户端和服务端,使开发的客户端程序适合用户的使用环境。例 如,你可以在UNIX上实现数据库并建立运行在在Microsoft Windows上的客户端程序。图1-3显示一个典型的分布式PostgreSQL应用。

图1-3 PostgreSQL 架构

在途1-3中,你可以看到几个客户端通过网络连接到服务器。对于PostgreSQL,这需要是一个TCP/IP网络——一个局域网(local area network,LAN)或者甚至是因特网。客户端连接到数据库主进程(在图1-3中叫做postmaster),主进程为这个客户端的访问请求专门建立 一个新的服务端进程提供服务。

服务器专注于数据处理,而不是尝试控制很多客户端访问服务器上共享目录中存储的数据,这让PostgreSQL高效的管理数据的完整性,即使在存在大量的用户的情况下。

客户端程序使用专有协议连接到PostgreSQL。然而,通过在客户端安装软件而为应用程序提供一个标准的接口是可能的,例如开放式数据库连接 (ODBC,Open Database Connectivity)标准或者Java程序的Java数据库连接(JDBC)标准。ODBC驱动的存在运行很现存的应用程序使用 PostgreSQL作为一个数据库,包括的微软的Office产品例如Excel和Access。你将在第三、第五和第十三到十八章了解不同的 PostgreSQL连接方法。

PostgreSQL的C/S架构允许任务分工。非常适合于存储和访问大量数据的服务器主机可以用作安全的数据储存库。可以为客户端开发复杂的图形 界面程序。另外,基于网页的前端可以通过建立网页模式的结果集到浏览器访问数据,而不需要另外的客户端软件。我们将在第五章和十五章回头讨论这些想法。

通过PostgreSQL访问数据

通过PostgreSQL,你可以通过好几种方法访问你的数据:

l   通过命令行程序执行SQL。本书自始至终都会用到这种方法。

l   直接嵌入SQL到你的应用程序(使用嵌入式SQL)。我们将在14章讨论怎样在C程序中使用它。

l   大量不同的程序语言使用功能调用(APIs)准备和执行SQL,扫描结果集以及执行更新。13章将覆盖PostgreSQL的C语言API。

l   通过ODBC(参考第3章)或者JDBC(参考17章)标准的驱动间接访问PostgreSQL数据库,或者使用标准库,例如Perl的DBI库(参考16章)。

什么是开源?

21世纪开始的时候,开源软件提供了大量的东西,PostgreSQL就是一个很好的例子。但是开源到底意味着什么呢?开源的条款在施加到软件上时 有非常明确的意义。这意味着软件在提供的时候,同时提供了源码。这并不意味着没有其他条件被施加到软件的使用上。在某些情况下使用(开源)软件,一样需要 得到许可。

开源许可赋予你使用、修改和重新发布它而不需要付许可费用的权力。这意味着你可以在你的机构中觉得合适的地方使用PostgreSQL。

如果你的开源软件有一些问题,因为你有源码,你既可以自己修复它,也可以将代码交给别人来帮忙修复。有很多商业公司提供对开源软件的支持,所以如果你选择使用开源产品,你不必感到被忽视。

有很多种开源许可的变种,一些比其他的更自由。但所有的都支持提供源码和允许重新发布。

最自由的是BSD软件许可(Berkeley Software Distribution),它提供“随便你怎么处置这个软件。”

最宽容的许可是伯克利软件分发(BSD,Berkeley Software Distribution)许可,它实际上说“用这个软件做任何你想做的。但不提供任何担保”。PostreSQL使用的软件许可(http://www.postgresql.org/about/licence)响应BSD软件许可的精神并套用它的说法,“允许以任何目的使用、拷贝、修改和重新发布这套软件以及文档,不需要任何费用,不需要签订任何书面协议,提供以上的版权通告以及这段和以下两个段落的文字在所有的拷贝中”。紧接着的段落时免责声明和保证书。

相关资源

有很多关于数据库的以及关于PostgreSQL的进一步信息的印刷的和在线资源。

对于更对的关于数据库的理论,可以查看位于http://www.frick-cpa.com/ss7/default.htm的David Frick的网站的数据库理论的章节。

PostgreSQL的官方网站位于http://www.postgreSQL.org,在这里你可以找到更多的关于PostgreSQL的历史,下载PostgreSQL的拷贝,浏览官方文档以及更多的东西(包括学习怎样发布PostgreSQL)。

PostgreSQL也是Red Hat Database的基础,也就是PostgreSQL- Red Hat版。你可以在在Red Hat的网站的http://sources.redhat.com/找到更多的关于PostgreSQL以及Red Hat为它开发的工具。

文/mysqlops

加载中
0
宏哥
宏哥

Ingres是RDBMS的开山鼻祖.在整个OS领域,除了Linux,唯一值得称道的就是postgres.

尽管和商业RDBMS还有很大差距,但是,it's good enough!!!

是值得你信赖,值得你将辛苦的工作投入,转花为能卖钱的产品的东西!是让你远离表损坏,导入导出,读写分离,在程序当中计算集合操作庞杂而没有价值的工作的东西!它是唯一的OS选择!

我大中华曾经做过RDBMS方面的尝试,用的就是Ingres买来的代码,Postgres是正宗嫡传!

如果不是有人逼你,远离mysql,它不是RDBMS(数据库),如果有人逼你,那么,

这就是生活!改变它,像一个男人一样改变它!!!--- 宏哥语录

宏哥
宏哥
回复 @bastetwang : @mark35 , 彼此都节约时间,其实我认同 @bastetwang 关于我,已经我的评价的所有评价. 而且我希望他能坚持下去,不要动摇.如果是一个男人的话,就应该坚持下去,不要改变.
宏哥
宏哥
回复 @bastetwang : 鼓励你坚持自己的看法.坚持自己做的事情.祝你成功.
bastetwang
bastetwang
回复 @mark35 : 你这不就贴标签吗?就跟我说你说的不值一提差不多。
mark35
mark35
回复 @bastetwang : “为啥不能部分模仿”? 只说一句:画虎不成反类犬
bastetwang
bastetwang
简单的说,你只能证明这个东东的必要性,但不能证明充分性。
下一页
0
彭博
彭博
这个需要加一个站内软件链吧?
0
醪糟儿蛋
醪糟儿蛋
o(︶︿︶)o 唉, postgres的市场份额太少,我曾向公司建议过用 pgsql,但人家说没听说过,还是义无反顾的用mysql
bastetwang
bastetwang
用的人少,这样万一出了什么问题基本上都要自己解决,大部分运维也不熟悉postresql
0
bastetwang
bastetwang
postresql现在还没有支持upsert(就是insert or update,或者是replace)这个怎么宏哥就不讲了呢?
0
泡不烂的凉粉
泡不烂的凉粉
哎呦~, 这个数据库又拿来说事啊。 就不怕挑起2战出来?

0
泡不烂的凉粉
泡不烂的凉粉
当前, 学校的时候发觉 foxbase+很奇特很有效率。 利于语言能写个小的应用。
狠命的读语句,学数据组织。数据结构,查找效率以及查找方法。
其结果是。 离开学校连Foxbase+下载都找不到。 DOS 界面已经非常过时了。
后来知道了 MSSQL, 结果发现他的支持公司贼吝啬。 设置这么多版本,限制又多。回复又麻烦,比如你系统重装。最要紧的是,咱这小院子受不了它那么大的胃口。 机器配置低,内存小。
遇见MYSQL,被他的简单给吸引了。 一搜索。发现夸的人还真多。不过最让我着迷的是他的文档。
我觉得MYSQL早起的文档是我见过文档中,最严禁的。 没有之一。
用了之后发现这也没有。那也没有。 很是郁闷啊。不过到了4.1以后我就不再抱怨了。
优势很明显。 MYSQL  一直存活这少说也快10年了。  优势绝对有。 其他数据库很难媲美。缺点也不是一般的多。跟其他数据库也不是一个档次。
PostgreSQL 没这正的使用过。 只能算玩过。 要用它部署,还真不是一般情况下能玩转的。 认为没有MYSQL 简单。 
0
用户已屏蔽
用户已屏蔽
例如EnterpriseDB公司,期网站地址 @红薯
0
宏哥
宏哥

引用来自“bastetwang”的答案

postresql现在还没有支持upsert(就是insert or update,或者是replace)这个怎么宏哥就不讲了呢?

你坚持什么,用什么,别人不在意,宏哥更不在意,宏哥说的,是给像宏哥一样无知的人听的东西.

重要的是 --- 像一个男人一样去生活,去面对,去战斗,不需要太多借口

更不需要浪费时间在像我一样无知的人身上.

宏哥
宏哥
@bastetwang Good Luck!
bastetwang
bastetwang
我走自己的路,一般也不会对其他人做的指手划脚,也没有什么瞧不起其他人做的。
bastetwang
bastetwang
一边在瞧不起,一边在鼓励,谢谢你了。
宏哥
宏哥
回复 @bastetwang : 我不敢回答.你应该坚持走自己的路,像一个男人一样,不要在意别人说什么.
bastetwang
bastetwang
回复 @宏哥 : 谢谢你的鼓励,我也会经常向你不耻下问的。
下一页
返回顶部
顶部