(Translated by https://www.hiragana.jp/)
PostgreSQL - 维基百科,自由的百科全书

PostgreSQL

自由じゆう開放かいほう原始げんし碼的關聯かんれんしき資料しりょう管理かんり系統けいとう

PostgreSQLいち開源かいげんてき物件ぶっけん-關聯かんれんしき資料しりょう管理かんりけいざい類似るいじBSD授權あずかMIT授權てきPostgreSQL授權发行。[4]

PostgreSQL
開發かいはつしゃPostgreSQL Global Development Group
くび发布1996ねん7がつ8にち,​28ねんまえ​(1996-07-08[1]
とうぜん版本はんぽん
  • 16.4 (2024ねん8がつ8にち;穩定版本はんぽん)[2]
  • 17 beta 3 (2024ねん8がつ8にち;测试版本はんぽん)[2]
編輯維基數據鏈接
みなもとだい码库 編輯維基數據鏈接
编程语言C语言
操作そうさけいLinux, Windows, FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX, Solaris ひとし[3]
平台ひらだいx86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, ARM, MIPS, MIPSEL, PA-RISC ひとし[3]
语言えい
类型關聯かんれんしき資料しりょう
许可协议PostgreSQL授權[4]
网站www.postgresql.org 编辑维基数据

历史

编辑

PostgreSQL经历りょう长时间的えんじ变。该项最初さいしょ开始于在ぶくあま亚大がくはく克利かつとし分校ぶんこうてきIngres计划。这个计划てき领导しゃ迈克尔·斯通ぬのかみなりかつざい1982ねん离开ぶくあま亚大がくはく克利かつとし分校ぶんこう推进Ingresてきしょう业化,ただしさいきさき还是かえしかいりょうがく术界。ざい1985ねんかえしかいはく克利かつとしきさき斯通ぬのかみなりかつ开始りょうpost-Ingres计划,致力于解决在1980年代ねんだい早期そうき所出しょしゅつ现一些数据库系统存在的问题。PostgresIngresてきだい码库开始(并保持ほじ完全かんぜんぶん离。

しん项目Postgresてき目的もくてきどおり增加ぞうか最少さいしょうてきこうのうらい完全かんぜん支持しじしょ需要じゅようてき类型。这些こうのう包括ほうかつ类型てい义和かんせい描述すうすえ关系てき能力のうりょくかんせい描述すうすえ关系てき能力のうりょくぜん虽广为使用しようただし却需ようよしよう户来维护。Postgresてきすうすえ库能够"理解りかい"关系,并可以使用しよう一定的规则以自然方式在相关的表中检索信息。

从1986ねん开始,该项组发ひょうりょう一些描述这一系统基本原理的论文,并在1988ねん实现并运ぎょうりょういち个Demo版本はんぽん。项目组在1989ねん六月向少数用户发行了版本1.0,ずいきさきざい1990ねん6がつ发行りょう带有ぜんしん规则けい统的版本はんぽん2.0。1991ねんてき版本はんぽん3.0さいつぎじゅううつしりょう规则けい统,并增加ぞうかりょう对多个存储管理かんりてき支持しじあずかあらため进的查询引擎。Postgresざい1993ねん开始拥有大量たいりょうよう户,这些よう提供ていきょうりょう大量たいりょうてきこうのうあずか优化けん议。ただしざい发行りょうさく为细节修正しゅうせいてき版本はんぽん4.0これきさき,Postgres计划就终とめりょう

つきかんPostgres计划正式せいしきてき终止りょうBSD许可证(Postgres遵守じゅんしゅBSD许可证发ぎょう)却使开发しゃ们得以获取げんだい码并进一步开发系统。1994ねん,两个ぶくあま亚大がくはく克利かつとし分校ぶんこうてき研究生けんきゅうせい Andrew YuJolly Chen 增加ぞうかりょういちSQL语言かい释器らいがえだいはやさきてきもと于IngresてきQUELけい统,建立こんりゅうりょうPostgres95。だい码随きさき发布いた互联网上きょうぜん世界せかい使用しよう。Postgres95ざい1996ねんじゅう命名めいめい为PostgreSQL以便突出とっしゅつ该数すえ库全しんてきSQL查询语言

PostgreSQLくび发行そく选择6.0さく为其版本はんぽんごう由来ゆらい世界せかい各地かくちてきすうすえ库开发者和志かずしすなおしゃ们,つう互联网进行软件てき维护。ざい2005ねん1がつ19にち,PostgreSQL发行りょう版本はんぽん8.0。版本はんぽん8.0これきさき,PostgreSQLとく以借じょ原生げんせい方式ほうしき运行于Windowsけい统之

つきかん许可证允许PostgreSQLよう于商业用途ようと,PostgreSQL却并ぼつゆうぞうIngres样快そくてきしょう业化。ざい2005ねん1がつ,PostgreSQLざいおさむいたりょう它来すうすえ库厂しょうてきだいいち援助えんじょPervasive Software[5]宣布せんぷりょう对PostgreSQLてきしょう支持しじしゃ参与さんよ

ただし其实ざい此之まえ,就已经有一些公司开始对PostgreSQLしん援手。2000ねんまえRed Hat投資とうししゃ籌組りょういちあいだめいためGreat Bridgeてき公司こうしらい商業しょうぎょうPostgreSQL,あずか其他商用しょうよう資料しりょうしょうしょうてん开競そうGreat BridgeすけりょうこういくPostgreSQL開發かいはつしゃなみ貢獻こうけんりょう許多きょた資源しげんきゅうしゃしか而到りょう2001ねんまつGreat Bridge終止しゅうしりょう營運,一部分原因在于PostgreSQLざいしょう业化きさき,其市場いちば狀況じょうきょう并不理想りそう

2001ねんCommand Prompt, Inc.发布りょうMammoth PostgreSQL,这是さいろうぱいてきPostgreSQL商業しょうぎょう软件。們通过對開發かいはつしゃてき贊助さんじょかず开发PL/PerlPL/phpとうPostgreSQLざいかく语言ちゅうてき实现,以及維護PostgreSQL Build Farmとう方式ほうしきらい支援しえんPostgreSQLしゃぐん

2005ねん1がつ,PostgreSQLせっいたりょうらい另一間数据库廠商Pervasive Softwareてき支持しじ,该公司こうし常見つねみNovell NetWare平台ひらだいてきBtrieve產品さんぴん而聞めい宣布せんぷりょう進行しんこう商業しょうぎょう支援しえんたいしゃぐんてき參與さんよただしざい成功せいこうしょう业化PostgreSQLいちだん時間じかんてき2006ねん7がつPervasive SoftwareはなれひらきりょうPostgreSQLてき支援しえん市場いちば

ざい2005ねんちゅうりょうあいだ其他てき公司こうしせん佈商ぎょうPostgreSQL,分別ふんべつ進入しんにゅう不同ふどうてきもと市場いちばEnterpriseDB宣布せんぷはたせんちゅう於讓使用しようOracleてき應用おうようほど式能しきのうさら容易よういてきざいPostgreSQLじょう運行うんこうGreenplumのりせんちゅう貢獻こうけんざい資料しりょうくらもうか商業しょうぎょう智慧ちえてき應用おうようほどしきゆう其以BizGresせんあんちょしょう

2005ねん10がつのぼりようてき軟體部門ぶもん執行しっこうふく總裁そうさいJohn Loiacono談論だんろんいた:"わが們不かいOEMほろ軟的產品さんぴんわが們正せきちゅうちゃくPostgreSQL",儘管當時とうじなみぼつゆうにんなん規格きかくしゃくいずるいたりょう2005ねん11月,のぼりよう宣布せんぷはた支援しえんPostgreSQL。2006ねん6がつSolaris 10包含ほうがんPostgreSQLいちおこりはつ佈。

いたり於PostgreSQLせんあん本身ほんみ繼續けいぞく每年まいとし一個主要版本發佈,以及ようてきじょ版本はんぽんはつ佈,这些发布ぜん遵守じゅんしゅBSD授權。

描述

编辑

如果很粗りゃく观察PostgreSQL,かい觉得这个すうすえ库系统和其它すうすえ库很类似。よし为PostgreSQL使用しようSQL语言らい执行资料てき查询。这些资料どおりそと联系ざい一起かずき,以一系列表格的形式存在。PostgreSQLしょう对于竞争しゃてき主要しゅよう优势为编程せい:对于使用しようすうすえ库资りょうてき实际应用,PostgreSQL让开发与使用しよう变得さら简单。

SQLすうすえざい平面へいめんひょうかくちゅうそん储简单的すうすえ类型,需要じゅようよう使用しよう查询ゆう关的しんいき收集しゅうしゅうざいいちおこり。这与应用よう利用りようすうすえ自身じしんてき方式ほうしきしょう对立:典型てんけいてき使用しよう带有丰富すうすえ类型てきだか级语ごとざい其中所有しょゆうゆう关的すうすえさく为它自己じこてき一个完整单元来操作。典型てんけいてき称呼しょうこ记录ある对象すえ各自かくじ语言)。

转换SQL世界せかいてきしんいきいためんこう对象编程世界せかいたい现得很困难,いん为两しゃゆう非常ひじょう不同ふどうてきすうすえ组织てき模型もけいこう业界这个问题しょう对象关系ひきはいえいObject-relational_impedance_mismatch:从一个模型映射到另一个要花费项目开发者40%てき时间。一些映射解决方案,典型てんけいてきしょう对象关系うつ,致力于这个问题,ただし它们はな费很并有自身じしんてき问题,导致かす糕的性能せいのうある强制きょうせい所有しょゆうてきすうすえ访问どおり过映しゃしょ支持しじてき一种语言来进行。

PostgreSQL直接ちょくせつざいすうすえ库中かい决很这类问题。PostgreSQLまこと许用户定义基于正规的SQL类型てきしん类型,まこと许数すえ自身じしん理解りかい复杂すうすえれい如,你可以定义一个addressらい组合一些事物如街道编号、城市じょうし和国わこくてきくし。从这いちてんじょう你可以轻えき建立こんりゅう保存ほぞんしょ需要じゅようてき所有しょゆうだん包含ほうがんざいいち个单いち行列ぎょうれつちゅうてきひょう

PostgreSQL还允许类がた包括ほうかつ继承,这是ざいめんこう对象编程なかてき主要しゅよう概念がいねんれい如,你可以定义post_code类型,并接着せっちゃくもと于它建立こんりゅうus_zip_codecanadian_postal_codeざいすうすえ库中てきaddress就可以采ようus_addressあるものcanadian_address形式けいしき,而特定とくていてき规则以在各自かくじじょう况下验证すうすえざいPostgreSQLてき早期そうき版本はんぽんちゅう,实现しん类型需要じゅよううつしC扩展并把它们编译到すうすえ库服务器ちゅうざい版本はんぽん7.4ちゅうつうCREATE DOMAIN建立こんりゅう使用しようじょうせい类型变得很容易よういりょう

かずすえ自身じしんてき编程以从使用しよう函数かんすううえ获得巨大きょだいてき利益りえき多数たすうSQLけい统允许用户写そん储过ほど,它是其他SQL语句以调ようてきいち块SQLだい码。ただしSQL自身じしん仍旧合作がっさく为编ほど语言,而且SQLよう户在构造复杂逻辑时要经历巨大きょだいてきこま难。さらかす糕的,SQL自身じしん支持しじ很多てき编程语言ちゅうさい基本きほんてき操作そうさぶんささえ循环まい个厂商都しょうと转而うつし它们自己じこ对SQL语言てき扩展らい增加ぞうか这些とくせい,而这种扩てん必须またがえつすうすえ平台ひらだい操作そうさ

ざいPostgreSQL中程なかほどじょ员可以用一组可观的支持语言中任何一种来写这种逻辑。

  • 类似于Oracleてき过程语言PL/SQLてきさけべ做PgSQL[6]まとないおけ语言,ざい处理查询密集みっしゅうてき过程时提供ていきょうりょう独特どくとくてき优势。
  • 流行りゅうこう脚本きゃくほん语言PerlPythonTclRubyてき包装ほうそうまこと利用りよう它们ざいくし处理连接いた广阔てき外部がいぶ函数かんすう库的力量りきりょう
  • 需要じゅよう复杂逻辑编译到つくえだい码所のう提供ていきょうてき高性能こうせいのうてき过程利用りようCあるC++
  • ざいさら深奥しんおうてき方面ほうめんR统计语言てき处理まこと许数すえ库查询利用りよう它的一组丰富的统计函数。

ほどじょ员可以把だい码作为函すう插入そうにゅうふく务器ちゅう,它是使だい码类于存储过ほどてきいち个小包装ほうそう。以这种方しきSQLだい码可以调よう如)Cだい码或はんこれ

  • 性能せいのうぞう进,いん为数すえ库引擎在一个时间一个地方调用所有的逻辑,减少りょうざいきゃく户和ふく务器间的らいかい往返てき次数じすう
  • もたれせいぞう进,いん为数すえ验证だい码集ちゅういたいち地方ちほう,就在ふく务器じょう,而不よう赖在个客户应ようちゅうてきどう逻辑,它们甚至可能かのう以多种编ほど语言うつしなり
  • つう过向ふく务器增加ぞうか有用ゆうようてき抽象ちゅうしょうきゃく户代码可以变どくさら短小たんしょう简单。

这些优势あいおこり以证实PostgreSQL从编ほど角度かくど最高さいこう级的すうすえ库系统。使用しようPostgreSQL以显ちょてき减少很多项目的もくてき整体せいたい编程时间,这种优势ずい项目复杂而增长。

とくせい

编辑

函数かんすう

编辑

つう过函すう以在すうすえ库服务器はし执行指令しれいほどじょつきかん这样てき指令しれいほどじょ使用しよう基本きほんてきSQL语句うつしなりただしよし于其缺乏けつぼうりゅうほどひかえせいとうこうのう所以ゆえんざいPostgreSQLちゅう引入りょう使用しよう其它ほどじょ语言编写函数かんすうてき能力のうりょく包括ほうかつ

  • 一个内置的名为pgSQL[7]てき过程语言,类似于OracleてきPL/SQL
  • 包括ほうかつPL/Perl[8],PL/PHP[9],PL/Python[10],PL/Ruby[11],PL/sh[12],PL/Tcl[13]あずかPL/Scheme[14]ざい内的ないてき脚本きゃくほん语言;
  • 编译语言:CC++あるJava(つう过PL/Java[15])。
  • R统计语言PL/R[16]

以上いじょう部分ぶぶんてき语言,甚至以在さわ发器ない执行。PostgreSQL支持しじぎょうかえしかい函数かんすう:它们てき输出一系列行类型数据的集合,以在查询ちゅうとう作表さくひょうらい使用しよう函数かんすう也可以被てい义成以创けんしゃあるもの调用しゃてき份运ぎょうざいぼう些场あいあるもの其他てきすうすえ库产ひんちゅう函数かんすう也会しょう为“そん储过ほど”,ただしわざ术上这两しゃ并未ゆうふと大分おおいた别。

索引さくいん

编辑

ざいPostgreSQLちゅうよう户可以自てい索引さくいん方法ほうほうある使用しようないおけてきB树哈希ひょうあずかGiST索引さくいん。PostgreSQLてき索引さくいんこうのうどう时也具有ぐゆう以下いかこうのう

  • はんこう索引さくいん检索:无须额外てき索引さくいん就能实现类似ORDER BY field DESCてき操作そうさ
  • おもて达式索引さくいん建立こんりゅうもと于表达式值而すう值或れつてき索引さくいん
  • 部分ぶぶん索引さくいん:仅索引さくいんひょうてき部分ぶぶん以通过在CREATE INDEX语句こう添加てんかWHERE从句以创けんさらしょうてき索引さくいん
  • くらい索引さくいん扫描:从8.1はん开始支持しじ此功のう。该功のうはた读取索引さくいん生成せいせい表示ひょうじ它们符合ふごう查询标准てき多元たげん交集まと图。这样かい决了混合こんごう索引さくいんてき问题。ざいいち具有ぐゆう20れつてきひょうちゅう论上のう创建20! 个索引さくいんざい实际应用ちゅうなみ实用。使用しよう图索引扫描后,ざい每次まいじ查询时,它将のう约束条件じょうけんちゅうところわたる及列各自かくじてき索引さくいん进行任意にんいてき排列はいれつ组合。

さわ发器

编辑

さわ发器よしSQL语句查询しょさわ发的事件じけん。如:いち个INSERT语句可能かのうさわ发一个检查数据完整性的触发器。さわ发器通常つうじょうゆかりINSERTあるUPDATE语句さわ发。

ざいPostgreSQLちゅうざいすうすえひょうじょう设置さわ发器ただし无法ざい视图ちゅう设置(对视图的UPDATEあるものINSERT操作そうさ使用しよう规则(RULE)てい义)。个触发器すえ字母じぼ顺序执行。此外,じょりょう使用しようないはまてきPL/PgSQL语言そとさわ发器てき函数かんすう也可以用PL/Perl,PL/Pythonとう语言编写。

版本はんぽん并发ひかえせい

编辑

PostgreSQL使用しよう版本はんぽん并发ひかえせい(MVCC,Multiversion concurrency control)けい统进ぎょう并发ひかえせい,该系统向ごと个用户提供ていきょうりょう一个数据库的“かいあきら”,よう户在ごと务内所作しょさてきまい个修あらため,对于其他てきよう户都不可ふか见,ちょくいた该事务成功せいこうひさげ交。这从很大程度ていどじょう减少りょう对读取锁的赖,どう时保证了すうすえ库高こう符合ふごうACIDはら则。

规则

编辑

规则(RULE)まこと许一个查询能被重写,つう常用じょうようらい实现对视图(VIEW)てき操作そうさ,如插入そうにゅう(INSERT)、更新こうしん(UPDATE)、删除(DELETE)。

かずすえ类型

编辑

PostgreSQLないおけ丰富てきすうすえ类型,包括ほうかつ

此外,よう户可以创けんてい义数すえ类型,通常つうじょうどおり过PostgreSQLてきGiSTつくえせい,它们也能很好とく索引さくいんPostGIS地理ちりしんいきけいまとすうすえ类型。

よう户定义对ぞう

编辑

よう户可以为すうすえ库内几乎所有しょゆうてき对象てい义新てき类型,包括ほうかつ

继承

编辑

かずすえひょうてき结构及属せい从一个“ちちひょうちゅう继承,すうすえはたざい两者间共とおる。对子ひょうちゅうすうすえてき插入そうにゅうあるもの删除也将ざいちちひょうちゅうからだ现,どう样,对父ひょう作出さくしゅつてきおさむあらため添加てんかれつとう操作そうさ也会导致ひょう产生しょう应的あらため动。该功のうなお完全かんぜん实现,实际じょうひょうてき约束ひさし不能ふのう继承。如,ざい一张外联参考了父表idだんてきひょうちゅう插入そうにゅう一条具有子表中某条记录idすうすえてき记录かい导致しつ败,いん为PostgreSQLざい对父ひょうてきそと键约たば检查ちゅうかい检查ひょうてき内容ないよう

其他こうのう

编辑

資料しりょう管理かんり開發かいはつ工具こうぐ

编辑
  • phpPgAdmin[22]もと于php语言うつしてきよう管理かんりPostgreSQLすうすえ库的ほどじょ
  • PgAdmin[23]另外一个用于管理PostgreSQLすうすえ库的软件

扩展

编辑
  • 地理ちりすうすえ对象:PostGIS GPL
  • 全文ぜんぶん检索つう过Tsearch2[24]GPLあるOpenFTSはたざい8.3はん本中ほんなかないはまTsearch2
  • 种异ぬし/从复せい方案ほうあん包括ほうかつSlony-I[25](BSD授权),Mammoth Replicator[26]
  • XML/XSLT支持しじcontrib软件つつみちゅうてきXPath扩展[27]GPL
  • つくえがく习:MADlib[28]ASF,ゆかりApache基金ききんかいてき支持しじてき顶级开源项目;集成しゅうせい大量たいりょう传统数学すうがく分析ぶんせき统计、图计さん以及一些常见的机器学习的算法

知名ちめいきゃく

编辑

版本はんぽん

编辑

PostgreSQL - Red Hat Edition[33]ゆかりRed Hat製作せいさくてきぶんささえ版本はんぽんまたたたえRed Hat Database。

参考さんこう文献ぶんけん

编辑
  1. ^ HAPPY BIRTHDAY, POSTGRESQL!. PostgreSQL Website. [2018-09-19]. (原始げんし内容ないようそん于2018-07-30). 
  2. ^ 2.0 2.1 2.2 PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20, and 17 Beta 3 Released!. 2024ねん8がつ8にち. 
  3. ^ 3.0 3.1 The PostgreSQL Global Development Group. Supported Platforms. PostgreSQL Documentation. [2018-09-19]. (原始げんし内容ないようそん于2018-10-12). 
  4. ^ 4.0 4.1 License. [2019-10-01]. (原始げんし内容ないようそん于2019-09-05) えい语). 
  5. ^ [1]页面そん档备份そん互联网档あん
  6. ^ PL/PgSQL页面そん档备份そん互联网档あん
  7. ^ PL/pgSQL页面そん档备份そん互联网档あん
  8. ^ PL/Perl页面そん档备份そん互联网档あん
  9. ^ PL/PHP
  10. ^ PL/Python页面そん档备份そん互联网档あん
  11. ^ PL/Ruby
  12. ^ PL/sh
  13. ^ PL/Tcl页面そん档备份そん互联网档あん
  14. ^ PL/Scheme
  15. ^ PL/Java
  16. ^ PL/R
  17. ^ [2]页面そん档备份そん互联网档あん
  18. ^ 支持しじ部分ぶぶん页面そん档备份そん互联网档あん
  19. ^ 未来みらい版本はんぽんてき支持しじじょう页面そん档备份そん互联网档あん
  20. ^ やめゆうばん本手ほんてさつ页面そん档备份そん互联网档あん
  21. ^ [3]页面そん档备份そん互联网档あん
  22. ^ phpPgAdmin页面そん档备份そん互联网档あん
  23. ^ PgAdmin页面そん档备份そん互联网档あん
  24. ^ Tsearch2页面そん档备份そん互联网档あん
  25. ^ Slony-I页面そん档备份そん互联网档あん
  26. ^ Mammoth Replicator
  27. ^ contrib软件つつみちゅうてきXPath扩展
  28. ^ MADlibかん. [2023-11-13]. (原始げんし内容ないようそん于2023-11-09). 
  29. ^ [4]页面そん档备份そん互联网档あん
  30. ^ [5]页面そん档备份そん互联网档あん
  31. ^ [6]页面そん档备份そん互联网档あん
  32. ^ [7]页面そん档备份そん互联网档あん
  33. ^ PostgreSQL - Red Hat Edition Project. [2010-06-24]. (原始げんし内容ないようそん于2010-05-13). 

まいり

编辑

外部がいぶ链接

编辑