【PostgreSQL】PostgreSQL詳細介紹

PostgreSQL詳細介紹

  • 一、什么是PostgreSQL?
  • 二、為什么要使用PostgreSQL?
  • 三、PostgreSQL功能列表
    • 3.1 數據類型
    • 3.2 數據完整性
    • 3.3 并發,性能
    • 3.4 可靠性、災難恢復
    • 3.5 安全
    • 3.6 可擴展性
    • 3.7 國際化,文本搜索
  • 四、參考資料

關于PostgreSQL安裝詳細步驟請參考:【PostgreSQL】Windows安裝PostgreSQL數據庫圖文詳細教程

一、什么是PostgreSQL?

PostgreSQL是一個強大的開源對象關系數據庫系統,它使用并擴展了SQL語言,并結合了許多功能,可以安全地存儲和擴展最復雜的數據工作負載。PostgreSQL的起源可以追溯到1986年,是加州大學伯克利分校POSTGRES項目的一部分,在核心平臺上有超過35年的積極開發。

PostgreSQL以其經驗證的體系結構、可靠性、數據完整性、強大的功能集、可擴展性以及軟件背后的開源社區致力于始終如一地提供高性能和創新的解決方案而贏得了良好的聲譽。PostgreSQL運行在所有主要的操作系統上,自2001年以來一直與ACID兼容,并具有強大的附加組件,如流行的PostGIS地理空間數據庫擴展程序。毫不奇怪,PostgreSQL已經成為許多人和組織選擇的開源關系數據庫。

開始使用PostgreSQL從來沒有這么容易過——選擇一個你想要構建的項目,讓PostgreSQL安全可靠地存儲你的數據。

二、為什么要使用PostgreSQL?

PostgreSQL提供了許多功能,旨在幫助開發人員構建應用程序,管理員保護數據完整性和構建容錯環境,并幫助您管理數據,無論數據集大小。除了免費和開源之外,PostgreSQL還具有高度的可擴展性。例如,您可以定義自己的數據類型,構建自定義函數,甚至不用重新編譯數據庫就可以用不同的編程語言編寫代碼!

PostgreSQL試圖遵循SQL標準,在這種標準中,這種一致性不會與傳統功能相矛盾,也不會導致糟糕的體系結構決策。支持SQL標準所需的許多功能,盡管有時語法或功能略有不同。隨著時間的推移,可能會朝著一致性的方向進一步發展。截至2023年9月發布的第16版,PostgreSQL至少符合SQL的179個強制性特性中的170個:2023核心一致性。截至本文撰寫之時,沒有一個關系數據庫完全符合此標準。

三、PostgreSQL功能列表

以下是PostgreSQL中各種功能的詳盡列表,每個主要版本都會添加更多功能:

3.1 數據類型

  • 基本類型: Integer, Numeric, String, Boolean
  • 結構化: Date/Time, Array, Range / Multirange, UUID
  • 文檔: JSON/JSONB, XML, Key-value (Hstore)
  • 幾何體:Point, Line, Circle, Polygon
  • 自定義:Composite, Custom Types

3.2 數據完整性

  • 唯一,不為NULL
  • 主鍵
  • 外鍵
  • 排除限制
  • 顯式鎖、咨詢鎖

3.3 并發,性能

  • 索引:B-樹、多列、表達式、分部
  • 高級索引:GiST,SP GiST,KNN GiST,GIN,BRIN,覆蓋索引,Bloom過濾器
  • 復雜的查詢規劃器/優化器、僅索引掃描、多列統計信息
  • 事務,嵌套事務(通過保存點)
  • 多版本并發控制(MVCC)
  • 讀取查詢的并行化與B樹索引的構建
  • 表分割
  • SQL標準中定義的所有事務隔離級別,包括Serializable
  • 表達式的實時(JIT)編譯

3.4 可靠性、災難恢復

  • 預寫日志記錄(WAL)
  • 復制:異步、同步、邏輯
  • 時間點恢復(PITR),活動備用
  • 表空間

3.5 安全

  • 身份驗證:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、證書等
  • 堅固訪問控制系統
  • 列和行級別的安全性
  • 使用證書的多因素身份驗證和一種附加方法

3.6 可擴展性

  • 存儲的函數和過程
  • 過程語言:PL/pgSQL、Perl、Python和Tcl。通過擴展還可以使用其他語言,例如Java、JavaScript(V8)、R、Lua和Rust
  • SQL/JON-構造函數和路徑表達式
  • 外部數據包裝器:使用標準SQL接口連接到其他數據庫或流
  • 可自定義的表格存儲界面
  • 許多提供附加功能的擴展,包括PostGIS

3.7 國際化,文本搜索

  • 支持國際字符集,例如通過ICU排序
  • 不區分大小寫和不區分重音的排序規則
  • 全文搜索

當然你也可以在PostgreSQL文檔中發現更多功能。此外,PostgreSQL具有高度的可擴展性:許多功能,如索引,都定義了API,因此您可以使用PostgreSQL進行構建以解決您的挑戰。

PostgreSQL已經被證明是高度可擴展的,無論是在它可以管理的數據數量上,還是在它可以容納的并發用戶數量上。生產環境中有活動的PostgreSQL集群,可以管理許多TB的數據,也有專門的系統,可以管理PB的數據。

四、參考資料

PostgreSQL官網:https://www.postgresql.org/

本文完結!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697377.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用MongoDB數據庫和Mongoose庫在Node.js中進行數據存儲

在Node.js中使用MongoDB數據庫和Mongoose庫進行數據存儲是前端開發中常用的技術之一。MongoDB是一種非關系型數據庫,具有高性能、易擴展等優點;而Mongoose是在Node.js中對MongoDB進行操作的框架,簡化了數據庫操作,并提供了豐富的功…

音視頻技術-雙聲道立體聲與卡儂平衡線的“糾葛”

目錄 一、新問題 二、問題排查 三、故障總結 四、原理分析 五、解決方案 1、救急 2、轉接線1 3、轉接線2

Js的 Promise的 then catch 筆記240222

Js的 Promise的 then catch 筆記240222 基本用法 new Promise(f>{setTimeout(ev>{f("一秒后輸出控制臺");},1000); }).then(f的參數>{console.log(f的參數); }); // 控制臺輸出: 一秒后輸出控制臺上面代碼中, f 的標準名叫做 resolve , 所以應該寫成 new …

知識圖譜數據處理流程是什么

在當今信息時代,數據已經成為企業決策和業務發展的重要驅動力。然而,隨著數據量的不斷增加,傳統的數據處理方法已經難以滿足需求。知識圖譜作為一種新興的技術,正逐漸成為處理大規模數據的關鍵工具。本文將深入探討知識圖譜的數據…

寫代碼中的一些“小技巧”

目錄 前言 1.不注重代碼格式 1.1 空格 1.2 換行 2.隨意的命名 2.1 有意義的參數名 2.2 見名知意 2.3 參數名風格一致 3.出現大量重復代碼 4.從不寫注釋 5.方法過長 6.參數過多 7.代碼層級太深 8.判斷條件太多 9.硬編碼 10.事務過大 11.在循環中遠程調用 11.1 …

CSS 面試題匯總

CSS 面試題匯總 1. 介紹下 BFC 及其應 參考答案: 參考答案: 所謂 BFC,指的是一個獨立的布局環境,BFC 內部的元素布局與外部互不影響。 觸發 BFC 的方式有很多,常見的有: 設置浮動overflow 設置為 auto、scr…

Swift基礎知識:20.Swift方法

在 Swift 中,方法是與特定類型相關聯的函數。方法可以用于實例類型(實例方法)或類型本身(類型方法)。方法允許類型的實例執行特定的任務,也可以修改實例本身或實例的屬性。 實例方法(Instance …

【力扣hot100】刷題筆記Day10

前言 一鼓作氣把鏈表給刷完!!中等題困難題沖沖沖啊啊啊! 25. K 個一組翻轉鏈表 - 力扣(LeetCode) 模擬 class Solution:def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:# 翻轉…

題記(46)--兩個多項式的和

目錄 一、題目內容 二、輸入描述 三、輸出描述 四、輸入輸出示例 五、完整C語言代碼 一、題目內容 輸入兩個多項式,計算它們的和。 每個多項式有若干對整數表示,每組整數中,第一個整數表示系數(非0),第…

#LLM入門|Prompt#1.7_文本拓展_Expanding

輸入簡短文本,生成更加豐富的長文。 “溫度”(temperature):控制文本生成的多樣性。 一、定制客戶郵件 根據客戶的評價和其中的情感傾向,使用大語言模型針對性地生成回復郵件。將大大提升客戶滿意度。 # 我們可以在…

云原生 - K8s命令合集

我是南城余!阿里云開發者平臺專家博士證書獲得者! 歡迎關注我的博客!一同成長! 一名從事運維開發的worker,記錄分享學習。 專注于AI,運維開發,windows Linux 系統領域的分享! 知…

兩種動態代理(可以看到代理類的樣子,方便理解)

這里寫目錄標題 jdk動態代理例子CGlib動態代理例子手寫spring中的事務部分自定義注解版aop實現方式 Spring的兩大重點,IOC和AOP,今天我們就來學AOP,眾所周知AOP的底層是動態代理,讓我們看一下這兩種動態代理的區別。 例子&#x…

tvm交叉編譯android可執行參考資料整理

主要參考這個: TVM部署神經網絡模型到android端_tvm android-CSDN博客 其他相關鏈接: TVM部署神經網絡模型到android端 - 代碼先鋒網 Ubuntu交叉編譯 arm板子上的TVM_tvm arm-CSDN博客 TVM部署神經網絡模型到android端 - 代碼先鋒網 tvm部署c神經網…

【Spring連載】使用Spring Data訪問 MongoDB(五)----生命周期事件

【Spring連載】使用Spring Data訪問 MongoDB(五)----生命周期事件Lifecycle Events 一、實體回調Entity Callbacks1.1 實現實體回調1.2 注冊實體回調 二、特定存儲的實體回調 一、實體回調Entity Callbacks 1.1 實現實體回調 1.2 注冊實體回調 二、特…

【結合OpenAI官方文檔】解決Chatgpt的API接口請求速率限制

OpenAI API接口請求速率限制 速率限制以五種方式衡量:RPM(每分鐘請求數)、RPD(每天請求數)、TPM(每分鐘令牌數)、TPD(每天令牌數)和IPM(每分鐘圖像數&#x…

BUUCTF第二十四、二十五題解題思路

目錄 第二十四題CrackRTF 第二十五題[2019紅帽杯]easyRE1 第二十四題CrackRTF 查殼 無殼,32位,用32位IDA打開,打開后的main函數很短,可以找到一句“jmz _main_0”——跳轉到 _main_0,說明真正的主函數是_main_0&am…

React 模態框的設計(二)

自定義組件是每個前端開發者必備的技能。我們在使用現有框架時難免有一些超乎框架以處的特別的需求,比如關于彈窗,每個應用都會用到,但是有時我們使用的框架中提供的彈窗功能也是功能有限,無法滿足我們的應用需求,今天…

【linux】使用 acme.sh 實現了 acme 協議生成免費的SSL 證書

acme.sh 實現了 acme 協議, 可以從 letsencrypt 生成免費的證書. 主要步驟: 安裝 acme.sh生成證書copy 證書到 nginx/apache 或者其他服務更新證書更新 acme.sh出錯怎么辦, 如何調試 下面詳細介紹. 1. 安裝 acme.sh 安裝很簡單, 一個命令: curl https://get.acme.sh | sh…

隱藏餓了么el-select組件的el-select-dropdown部分,只使用el-select的顯示框

隱藏餓了么el-select組件的el-select-dropdown部分,只使用el-select的顯示框 問題: 由于el-select組件的el-select-dropdown部分是自動插入在最外層Body上的,所以在當前組件的scoped中讓el-select-dropdown組件display:none不會生效所以需要: :popper-…

Java架構師之路六、高并發與性能優化:高并發編程、性能調優、線程池、NIO、Netty、高性能數據庫等。

目錄 高并發編程: 性能調優: 線程池: NIO: Netty: 高性能數據庫: 上篇:Java架構師之路五、微服務:微服務架構、服務注冊與發現、服務治理、服務監控、容器化等。-CSDN博客 下篇…