PostgreSQL 是什么

Fanly 问答 2019-05-24 14:40:46 阅读(...)

PostgreSQL是自由的对象关系型数据库服务器,在其他开放源代码数据库系统和专有系统之外,为用户提供了又一种选择。 PostgreSQL这个单字的拼法让有些人觉得很难念,特别是把SQL念作"sequel"的人。

PostgreSQL 是自由的对象关系型数据库服务器,在灵活的 BSD 许可证下发行。它在其他开放源代码数据库系统,和专有系统之外,为用户提供了又一种选择。 PostgreSQL 这个单字的拼法让有些人觉得很难念,特别是那些把 SQL 念作”sequel”的人。

PostgreSQL LOGO

历史

PostgreSQL 经历了长时间的演变。该项目最初开始于在加利福尼亚大学伯克利分校的 Ingres 计划。这个计划的领导者迈克尔·斯通布雷克在 1982 年离开加利福尼亚大学伯克利分校去推进 Ingres 的商业化,但最后还是返回了学术界。在 1985 年返回伯克利之后,斯通布雷克开始了 post-Ingres 计划,致力于解决在 1980 年代早期所出现一些数据库系统存在的问题。Postgres 和 Ingres 的代码库开始(并保持)完全分离。

新项目 Postgres 的目的是通过增加最少的功能来完全支持所需要的类型。这些功能包括类型定义和完整描述数据关系的能力。完整描述数据关系的能力之前虽广为使用但却需要由用户来维护。Postgres 的数据库能够”理解”关系,并可以使用一定的规则以自然方式在相关的表中检索信息。

描述

如果很粗略地观察 PostgreSQL,会觉得这个数据库系统和其它数据库很类似。因为 PostgreSQL 使用 SQL 语言来在执行资料的查询。这些资料通过外键联系在一起,以一系列表格的形式存在。PostgreSQL 相对于竞争者的主要优势为可编程性:对于使用数据库资料的实际应用,PostgreSQL 让开发与使用变得更简单。

SQL 数据在”平面表格”中存储简单的数据类型,需要用户使用查询把有关的信息收集在一起。这与应用和用户利用数据自身的方式相对立:典型的使用带有丰富数据类型的高级语言,在其中所有有关的数据作为它自己的一个完整单元来操作。典型的称呼为记录或对象(依据各自语言)。

转换来自 SQL 世界的信息到面向对象编程世界体现得很困难,因为两者有非常不同的数据组织的模型。工业界把这个问题称为对象关系不匹配:从一个模型映射到另一个要花费项目开发者 40%的时间。一些映射解决方案,典型的称为对象关系映射,致力于这个问题,但是它们花费很多并有自身的问题,导致糟糕的性能或强制所有的数据访问通过映射所支持的一种语言来进行。

PostgreSQL 可以直接在数据库中解决很多这类问题。PostgreSQL 允许用户定义基于正规的 SQL 类型的新类型,允许数据库自身理解复杂数据。例如,你可以定义一个 address 来组合一些事物如街道编号、城市和国度的字符串。从这一点上你可以轻易的创建把保存地址的所需要的所有字段包含在一个单一行列中的表。

PostgreSQL 还允许类型包括继承,这是在面向对象编程中的主要概念。例如,你可以定义 post_code 类型,并接着基于它创建 us_zip_code 和 canadian_postal_code。在数据库中的 address 就可以采用 us_address 或者 canadian_address 形式,而特定的规则可以在各自情况下验证数据。在 PostgreSQL 的早期版本中,实现新类型需要写 C 扩展并把它们编译到数据库服务器中;在版本 7.4 中,通过 CREATE DOMAIN 创建和使用定制类型变得很容易了。

数据库自身的编程可以从使用函数上获得巨大的利益。多数 SQL 系统允许用户写存储过程,它是其他 SQL 语句可以调用的一块 SQL 代码。但是 SQL 自身仍旧不适合作为编程语言,而且 SQL 用户在构造复杂逻辑时要经历巨大的困难。更糟糕的是,SQL 自身不支持很多的编程语言中最基本的操作,比如分支和循环。每个厂商都转而写它们自己对 SQL 语言的扩展来增加这些特征,而这种扩展不是必须跨越数据库平台操作。

在 PostgreSQL 中程序员可以用一组可观的支持语言中任何一种来写这种逻辑。

  • 类似于 Oracle 的过程语言 PL/SQL 的叫做 PL/PgSQL 的内置语言,在处理查询密集的过程时提供了独特的优势。
  • 流行脚本语言比如 Perl,Python,Tcl,和 Ruby 的包装器,允许利用它们在字符串处理和连接到广阔的外部函数库的力量。
  • 需要把复杂逻辑编译到机器代码所能提供的高性能的过程可以利用 C 或 C++。
  • 在更加深奥的方面,R 统计语言的处理器允许数据库查询利用它的一组丰富的统计函数。

程序员可以把代码作为函数插入服务器中,它是使代码类似于存储过程的一个小包装器。以这种方式 SQL 代码可以调用(比如)C 代码或反之。

  • 性能增进,因为数据库引擎在一个时间一个地方调用所有的逻辑,减少了在客户和服务器之间的来回往返的次数。
  • 可靠性增进,因为数据验证代码集中到一个地方,就在服务器上,而不用依赖在多个客户应用中的同步逻辑,它们甚至可能以多种编程语言写成。
  • 通过向服务器增加有用的抽象,客户代码可以变得更短小和简单。

这些优势合起来可以证实 PostgreSQL 从编程角度是最高级的数据库系统。使用 PostgreSQL 可以显著的减少很多项目的整体编程时间,这种优势随着项目复杂而增长。

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • ETC

    ETC黑名单是什么意思

    ETC黑名单是指办理ETC卡车主因拖欠费用使得银行扣费失败、办理信息异常或用卡不当等原因,导致被高速公路管理方,列入黑名单处理,从而ETC卡无法正常使用,根据最高法相关规定,ETC黑名单严重者,会被纳入“失信被执行人名单”。
  • camera lens 相机镜头

    相机的牛头和狗头指的是什么

    牛头就是很好的镜头,这类镜头一般都是单独购买或者买高端相机配送的镜头,比较沉或变焦大光圈,或是恒定大光圈,镜头的前片镜片尺寸都非常大;狗头镜头的前片镜片尺寸都不怎么大,最大光圈也比较小,重量也比较轻,镜头组中的镜片也比较少,成像一般都比较差。
  • camera lens 照相机镜头

    人像头是什么

    人像头指的是人像摄影镜头,一般是指在镜头1.5m—2m的距离上照人的镜头,也就是70mm-135mm的镜头,按照一般的美学观点,在1.5至2米外看一个人的五官是最漂亮的,人像头都是定焦镜头,相比变焦镜头光圈能做得更大,光学素质也更高。
  • Standard lens 标准镜头

    标头是什么

    标头一般指标准镜头,标准镜头是视角为50度左右的镜头之总称,标准镜头通常是指焦距在40至55毫米之间的摄影镜头,标准镜头所表现的景物的透视与目视比较接近,它是所有镜头中最基本的一种摄影镜头,其视角与人眼的视角比较类似。
  • Large zoom automatic lens 大变焦自动镜头

    旅游头是什么

    旅游头一般指大变焦自动镜头,可以从广角覆盖到长焦,优点就是方便,既能拍风景,也能拍人像,有的镜头还带有微距功能,远近通吃,所以非常适合旅游使用,有时也称为“一镜走天下”,这类镜头通常是为旅游设计的,携带的时候不会成为一种负担。
  • Twitter Blue 推特

    Twitter Blue是什么

    Twitter Blue(推特蓝)是推特的一项付费订阅服务,提供一系列高级功能,用户可以收藏自己喜欢的推文,并分类标记。收藏夹的颜色、名称可以由用户自定义,并且支持同一个内容加入多个收藏夹,十分便捷。