postgresql數(shù)據(jù)庫雙活機制
1、PostgreSQL開源免費企業(yè)級數(shù)據(jù)庫用著比較爽的地方有哪些?
1),PostgreSQL是通用型數(shù)據(jù)庫。PG有著豐富的數(shù)據(jù)類型(數(shù)值、字符、時間、布爾、貨幣、枚舉、網(wǎng)絡(luò)地址、JSONB等等)和索引類型( B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN等 )。可以存儲和計算大多數(shù)場景的業(yè)務(wù)數(shù)據(jù),如 ERP、交易系統(tǒng)、財務(wù)系統(tǒng)涉及資金、客戶等信息,數(shù)據(jù)不能丟失且業(yè)務(wù)邏輯復(fù)雜,選擇 PostgreSQL 作為數(shù)據(jù)底層存儲,一是可以幫助您在數(shù)據(jù)一致性前提下提供高可用性,二是可以用簡單的編程實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯 。適合各種OLTP和部分OLAP場景。
2),PostgreSQL數(shù)據(jù)庫包含許多第三方插件。
如PostGIS等可以直接在數(shù)據(jù)庫里進行地理位置相關(guān)的gis類存儲和運算(LBS地理位置相關(guān)業(yè)務(wù)等O2O場景),其他的插件如Pg_stat_statements、uuid-ossp、pg_trgm、btree-gist插件、 pgcrypto加密等插件 。
3),中小型企業(yè)快速搭建 數(shù)據(jù)倉庫和數(shù)據(jù)分析平臺(TB級別)
PostgreSQL 提供豐富的數(shù)據(jù)類型和強大的計算能力,能夠幫助您更簡單搭建數(shù)據(jù)庫倉庫或大數(shù)據(jù)分析平臺,為企業(yè)運營加分。
4),冷熱分離
針對流水類的大表,PG可以使用分區(qū)表,線上保留熱數(shù)據(jù), 歷史 數(shù)據(jù)存放在分區(qū)表里或者OSS等冷數(shù)據(jù)平臺,冷熱分離。
5),公有云支持度高如阿里云、騰訊云、華為云等公有云都有對應(yīng)的RDS-PG產(chǎn)品,開箱即用,并提供技術(shù)支持。
OLTP:事務(wù)處理是PostgreSQL的本行
OLAP:ANSI SQL兼容,窗口函數(shù),CTE,CUBE等高級分析功能,任意語言寫UDF,citus分布式插件
流處理:PipelineDB擴展,Notify-Listen,物化視圖,規(guī)則系統(tǒng),靈活的存儲過程與函數(shù)編寫
時序數(shù)據(jù):timescaledb時序數(shù)據(jù)庫插件,分區(qū)表,BRIN索引
空間數(shù)據(jù):PostGIS擴展(殺手锏),內(nèi)建的幾何類型支持,GiST索引。
搜索索引:全文搜索索引足以應(yīng)對簡單場景;豐富的索引類型,支持函數(shù)索引,條件索引
NoSQL:JSON,JSONB,XML,HStore原生支持,至NoSQL數(shù)據(jù)庫的外部數(shù)據(jù)包裝器
數(shù)據(jù)倉庫:能平滑遷移至同屬Pg生態(tài)的GreenPlum,DeepGreen,HAWK等,使用FDW進行ETL
2、postgresql是什么數(shù)據(jù)庫?請詳解一下,謝謝
分類: 電腦/網(wǎng)絡(luò) >> 程序設(shè)計 >> 其他編程語言解析:
PostgreSQL 是一種非常復(fù)雜的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS), 也是目前功能最強大,特性最豐富和最復(fù)雜的自由軟件數(shù)據(jù)庫系統(tǒng)。有些特性甚至連商業(yè)數(shù)據(jù)庫都不具備。這個起源于伯克利(BSD)的數(shù)據(jù)庫研究計劃目前已經(jīng)衍生成一項國際開發(fā)項目, 并且有非常廣泛的用戶。
PostgreSQL 可以說是最富特色的自由數(shù)據(jù)庫管理系統(tǒng),甚至我們也可以說是最強大的自由軟件數(shù)據(jù)庫管理系統(tǒng)。事實上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數(shù)據(jù)類型的支持,其中有些數(shù)據(jù)類型可以說連商業(yè)數(shù)據(jù)庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟件數(shù)據(jù)庫,很長時間以來,PostgreSQL 是唯一支持事務(wù)、子查詢、多版本并行控制系統(tǒng)、數(shù)據(jù)完整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫管理系統(tǒng)。直到最近才有 Inprise 的 InterBase 以及 SAP 等廠商將其原先專有軟件開放為自由軟件之后才打破了這個唯一。
3、MySQL與PostgreSQL比較 哪個數(shù)據(jù)庫更好
特性 MySQL PostgreSQL實例 通過執(zhí)行 MySQL 命令(mysqld)啟動實例。一個實例可以管理一個或多個數(shù)據(jù)庫。一臺服務(wù)器可以運行多個 mysqld 實例。一個實例管理器可以監(jiān)視 mysqld 的各個實例。
通過執(zhí)行 Postmaster 進程(pg_ctl)啟動實例。一個實例可以管理一個或多個數(shù)據(jù)庫,這些數(shù)據(jù)庫組成一個集群。集群是磁盤上的一個區(qū)域,這個區(qū)域在安裝時初始化并由一個目錄組成,所有數(shù)據(jù)都存儲在這個目錄中。使用 initdb 創(chuàng)建第一個數(shù)據(jù)庫。一臺機器上可以啟動多個實例。
數(shù)據(jù)庫 數(shù)據(jù)庫是命名的對象集合,是與實例中的其他數(shù)據(jù)庫分離的實體。一個 MySQL 實例中的所有數(shù)據(jù)庫共享同一個系統(tǒng)編目。 數(shù)據(jù)庫是命名的對象集合,每個數(shù)據(jù)庫是與其他數(shù)據(jù)庫分離的實體。每個數(shù)據(jù)庫有自己的系統(tǒng)編目,但是所有數(shù)據(jù)庫共享 pg_databases。
數(shù)據(jù)緩沖區(qū) 通過 innodb_buffer_pool_size 配置參數(shù)設(shè)置數(shù)據(jù)緩沖區(qū)。這個參數(shù)是內(nèi)存緩沖區(qū)的字節(jié)數(shù),InnoDB 使用這個緩沖區(qū)來緩存表的數(shù)據(jù)和索引。在專用的數(shù)據(jù)庫服務(wù)器上,這個參數(shù)最高可以設(shè)置為機器物理內(nèi)存量的 80%。 Shared_buffers 緩存。在默認情況下分配 64 個緩沖區(qū)。默認的塊大小是 8K。可以通過設(shè)置 postgresql.conf 文件中的 shared_buffers 參數(shù)來更新緩沖區(qū)緩存。
數(shù)據(jù)庫連接 客戶機使用 CONNECT 或 USE 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。使用角色管理數(shù)據(jù)庫中的用戶和用戶組。 客戶機使用 connect 語句連接數(shù)據(jù)庫,這時要指定數(shù)據(jù)庫名,還可以指定用戶 id 和密碼。使用角色管理數(shù)據(jù)庫中的用戶和用戶組。
身份驗證 MySQL 在數(shù)據(jù)庫級管理身份驗證。 基本只支持密碼認證。 PostgreSQL 支持豐富的認證方法:信任認證、口令認證、Kerberos 認證、基于 Ident 的認證、LDAP 認證、PAM 認證
加密 可以在表級指定密碼來對數(shù)據(jù)進行加密。還可以使用 AES_ENCRYPT 和 AES_DECRYPT 函數(shù)對列數(shù)據(jù)進行加密和解密。可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。 可以使用 pgcrypto 庫中的函數(shù)對列進行加密/解密。可以通過 SSL 連接實現(xiàn)網(wǎng)絡(luò)加密。
審計 可以對 querylog 執(zhí)行 grep。 可以在表上使用 PL/pgSQL 觸發(fā)器來進行審計。
查詢解釋 使用 EXPLAIN 命令查看查詢的解釋計劃。 使用 EXPLAIN 命令查看查詢的解釋計劃。
備份、恢復(fù)和日志 InnoDB 使用寫前(write-ahead)日志記錄。支持在線和離線完全備份以及崩潰和事務(wù)恢復(fù)。需要第三方軟件才能支持熱備份。 在數(shù)據(jù)目錄的一個子目錄中維護寫前日志。支持在線和離線完全備份以及崩潰、時間點和事務(wù)恢復(fù)。 可以支持熱備份。
JDBC 驅(qū)動程序 可以從 參考資料 下載 JDBC 驅(qū)動程序。 可以從 參考資料 下載 JDBC 驅(qū)動程序。
表類型 取決于存儲引擎。例如,NDB 存儲引擎支持分區(qū)表,內(nèi)存引擎支持內(nèi)存表。 支持臨時表、常規(guī)表以及范圍和列表類型的分區(qū)表。不支持哈希分區(qū)表。 由于PostgreSQL的表分區(qū)是通過表繼承和規(guī)則系統(tǒng)完成了,所以可以實現(xiàn)更復(fù)雜的分區(qū)方式。
索引類型 取決于存儲引擎。MyISAM:BTREE,InnoDB:BTREE。 支持 B-樹、哈希、R-樹和 Gist 索引。
約束 支持主鍵、外鍵、惟一和非空約束。對檢查約束進行解析,但是不強制實施。 支持主鍵、外鍵、惟一、非空和檢查約束。
存儲過程和用戶定義函數(shù) 支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。存儲過程可以用 SQL 和 C++ 編寫。用戶定義函數(shù)可以用 SQL、C 和 C++ 編寫。 沒有單獨的存儲過程,都是通過函數(shù)實現(xiàn)的。用戶定義函數(shù)可以用 PL/pgSQL(專用的過程語言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。
觸發(fā)器 支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器語句用過程語言復(fù)合語句編寫。 支持行前觸發(fā)器、行后觸發(fā)器和語句觸發(fā)器,觸發(fā)器過程用 C 編寫。
系統(tǒng)配置文件 my.conf Postgresql.conf
數(shù)據(jù)庫配置 my.conf Postgresql.conf
客戶機連接文件 my.conf pg_hba.conf
XML 支持 有限的 XML 支持。 有限的 XML 支持。
數(shù)據(jù)訪問和管理服務(wù)器 OPTIMIZE TABLE —— 回收未使用的空間并消除數(shù)據(jù)文件的碎片
myisamchk -analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)(MyISAM 存儲引擎)
mysql —— 命令行工具
MySQL Administrator —— 客戶機 GUI 工具 Vacuum —— 回收未使用的空間
Analyze —— 更新查詢優(yōu)化器所使用的統(tǒng)計數(shù)據(jù)
psql —— 命令行工具
pgAdmin —— 客戶機 GUI 工具
并發(fā)控制 支持表級和行級鎖。InnoDB 存儲引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。使用 SET TRANSACTION ISOLATION LEVEL 語句在事務(wù)級設(shè)置隔離級別。 支持表級和行級鎖。支持的 ANSI 隔離級別是 Read Committed(默認 —— 能看到查詢啟動時數(shù)據(jù)庫的快照)和 Serialization(與 Repeatable Read 相似 —— 只能看到在事務(wù)啟動之前提交的結(jié)果)。使用 SET TRANSACTION 語句在事務(wù)級設(shè)置隔離級別。使用 SET SESSION 在會話級進行設(shè)置。
MySQL相對于PostgreSQL的劣勢:
MySQL
PostgreSQL
最重要的引擎InnoDB很早就由Oracle公司控制。目前整個MySQL數(shù)據(jù)庫都由Oracle控制。
BSD協(xié)議,沒有被大公司壟斷。
對復(fù)雜查詢的處理較弱,查詢優(yōu)化器不夠成熟
很強大的查詢優(yōu)化器,支持很復(fù)雜的查詢處理。
只有一種表連接類型:嵌套循環(huán)連接(nested-loop),不支持排序-合并連接(sort-merge join)與散列連接(hash join)。
都支持
性能優(yōu)化工具與度量信息不足
提供了一些性能視圖,可以方便的看到發(fā)生在一個表和索引上的select、delete、update、insert統(tǒng)計信息,也可以看到cache命中率。網(wǎng)上有一個開源的pgstatspack工具。
InnoDB的表和索引都是按相同的方式存儲。也就是說表都是索引組織表。這一般要求主鍵不能太長而且插入時的主鍵最好是按順序遞增,否則對性能有很大影響。
不存在這個問題。
大部分查詢只能使用表上的單一索引;在某些情況下,會存在使用多個索引的查詢,但是查詢優(yōu)化器通常會低估其成本,它們常常比表掃描還要慢。
不存在這個問題
表增加列,基本上是重建表和索引,會花很長時間。
表增加列,只是在數(shù)據(jù)字典中增加表定義,不會重建表
存儲過程與觸發(fā)器的功能有限。可用來編寫存儲過程、觸發(fā)器、計劃事件以及存儲函數(shù)的語言功能較弱
除支持pl/pgsql寫存儲過程,還支持perl、python、Tcl類型的存儲過程:pl/perl,pl/python,pl/tcl。
也支持用C語言寫存儲過程。
不支持Sequence。
支持
不支持函數(shù)索引,只能在創(chuàng)建基于具體列的索引。
不支持物化視圖。
支持函數(shù)索引,同時還支持部分數(shù)據(jù)索引,通過規(guī)則系統(tǒng)可以實現(xiàn)物化視圖的功能。
執(zhí)行計劃并不是全局共享的, 僅僅在連接內(nèi)部是共享的。
執(zhí)行計劃共享
MySQL支持的SQL語法(ANSI SQL標準)的很小一部分。不支持遞歸查詢、通用表表達式(Oracle的with 語句)或者窗口函數(shù)(分析函數(shù))。
都 支持
不支持用戶自定義類型或域(domain)
支持。
對于時間、日期、間隔等時間類型沒有秒以下級別的存儲類型
可以精確到秒以下。
身份驗證功能是完全內(nèi)置的,不支持操作系統(tǒng)認證、PAM認證,不支持LDAP以及其它類似的外部身份驗證功能。
支持OS認證、Kerberos 認證 、Ident 的認證、LDAP 認證、PAM 認證
不支持database link。有一種叫做Federated的存儲引擎可以作為一個中轉(zhuǎn)將查詢語句傳遞到遠程服務(wù)器的一個表上,不過,它功能很粗糙并且漏洞很多
有dblink,同時還有一個dbi-link的東西,可以連接到oracle和mysql上。
Mysql Cluster可能與你的想象有較大差異。開源的cluster軟件較少。
復(fù)制(Replication)功能是異步的,并且有很大的局限性.例如,它是單線程的(single-threaded),因此一個處理能力更強的Slave的恢復(fù)速度也很難跟上處理能力相對較慢的Master.
有豐富的開源cluster軟件支持。
explain看執(zhí)行計劃的結(jié)果簡單。
explain返回豐富的信息。
類似于ALTER TABLE或CREATE TABLE一類的操作都是非事務(wù)性的.它們會提交未提交的事務(wù),并且不能回滾也不能做災(zāi)難恢復(fù)
DDL也是有事務(wù)的。
PostgreSQL主要優(yōu)勢:
1. PostgreSQL完全免費,而且是BSD協(xié)議,如果你把PostgreSQL改一改,然后再拿去賣錢,也沒有人管你,這一點很重要,這表明了PostgreSQL數(shù)據(jù)庫不會被其它公司控制。oracle數(shù)據(jù)庫不用說了,是商業(yè)數(shù)據(jù)庫,不開放。而MySQL數(shù)據(jù)庫雖然是開源的,但現(xiàn)在隨著SUN被oracle公司收購,現(xiàn)在基本上被oracle公司控制,其實在SUN被收購之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的數(shù)據(jù)都是放在InnoDB引擎中的,反正我們公司都是這樣的。所以如果MySQL的市場范圍與oracle數(shù)據(jù)庫的市場范圍沖突時,oracle公司必定會犧牲MySQL,這是毫無疑問的。
2. 與PostgreSQl配合的開源軟件很多,有很多分布式集群軟件,如pgpool、pgcluster、slony、plploxy等等,很容易做讀寫分離、負載均衡、數(shù)據(jù)水平拆分等方案,而這在MySQL下則比較困難。
3. PostgreSQL源代碼寫的很清晰,易讀性比MySQL強太多了,懷疑MySQL的源代碼被混淆過。所以很多公司都是基本PostgreSQL做二次開發(fā)的。
4. PostgreSQL在很多方面都比MySQL強,如復(fù)雜SQL的執(zhí)行、存儲過程、觸發(fā)器、索引。同時PostgreSQL是多進程的,而MySQL是線程的,雖然并發(fā)不高時,MySQL處理速度快,但當并發(fā)高的時候,對于現(xiàn)在多核的單臺機器上,MySQL的總體處理性能不如PostgreSQL,原因是MySQL的線程無法充分利用CPU的能力。
目前只想到這些,以后想到再添加,歡迎大家拍磚。
PostgreSQL與oracle或InnoDB的多版本實現(xiàn)的差別
PostgreSQL與oracle或InnoDB的多版本實現(xiàn)最大的區(qū)別在于最新版本和歷史版本是否分離存儲,PostgreSQL不分,而oracle和InnoDB分,而innodb也只是分離了數(shù)據(jù),索引本身沒有分開。
PostgreSQL的主要優(yōu)勢在于:
1. PostgreSQL沒有回滾段,而oracle與innodb有回滾段,oracle與Innodb都有回滾段。對于oracle與Innodb來說,回滾段是非常重要的,回滾段損壞,會導(dǎo)致數(shù)據(jù)丟失,甚至數(shù)據(jù)庫無法啟動的嚴重問題。另由于PostgreSQL沒有回滾段,舊數(shù)據(jù)都是記錄在原先的文件中,所以當數(shù)據(jù)庫異常crash后,恢復(fù)時,不會象oracle與Innodb數(shù)據(jù)庫那樣進行那么復(fù)雜的恢復(fù),因為oracle與Innodb恢復(fù)時同步需要redo和undo。所以PostgreSQL數(shù)據(jù)庫在出現(xiàn)異常crash后,數(shù)據(jù)庫起不來的幾率要比oracle和mysql小一些。
2. 由于舊的數(shù)據(jù)是直接記錄在數(shù)據(jù)文件中,而不是回滾段中,所以不會象oracle那樣經(jīng)常報ora-01555錯誤。
3. 回滾可以很快完成,因為回滾并不刪除數(shù)據(jù),而oracle與Innodb,回滾時很復(fù)雜,在事務(wù)回滾時必須清理該事務(wù)所進行的修改,插入的記錄要刪除,更新的記錄要更新回來(見row_undo函數(shù)),同時回滾的過程也會再次產(chǎn)生大量的redo日志。
4. WAL日志要比oracle和Innodb簡單,對于oracle不僅需要記錄數(shù)據(jù)文件的變化,還要記錄回滾段的變化。
PostgreSQL的多版本的主要劣勢在于:
1、最新版本和歷史版本不分離存儲,導(dǎo)致清理老舊版本需要作更多的掃描,代價比較大,但一般的數(shù)據(jù)庫都有高峰期,如果我們合理安排VACUUM,這也不是很大的問題,而且在PostgreSQL9.0中VACUUM進一步被加強了。
2、由于索引中完全沒有版本信息,不能實現(xiàn)Coverage index scan,即查詢只掃描索引,直接從索引中返回所需的屬性,還需要訪問表。而oracle與Innodb則可以;
進程模式與線程模式的對比
PostgreSQL和oracle是進程模式,MySQL是線程模式。
進程模式對多CPU利用率比較高。
進程模式共享數(shù)據(jù)需要用到共享內(nèi)存,而線程模式數(shù)據(jù)本身就是在進程空間內(nèi)都是共享的,不同線程訪問只需要控制好線程之間的同步。
線程模式對資源消耗比較少。
所以MySQL能支持遠比oracle多的更多的連接。
對于PostgreSQL的來說,如果不使用連接池軟件,也存在這個問題,但PostgreSQL中有優(yōu)秀的連接池軟件軟件,如pgbouncer和pgpool,所以通過連接池也可以支持很多的連接。 沒有哪個好哪個不好,,看使用場景決定用哪個
4、看大數(shù)據(jù)最大技術(shù)難關(guān)之模糊檢索,PostgreSQL如何攻克
大數(shù)據(jù)正在向我們奔來。盡管業(yè)務(wù)場景不會完全相同,但在其中一個最典型場景——模糊檢索中,技術(shù)需求卻出奇的一致。比如說:
物聯(lián)網(wǎng),往往會產(chǎn)生大量的數(shù)據(jù),除了數(shù)字數(shù)據(jù),還有字符串類的數(shù)據(jù),例如條形碼,車牌,手機號,郵箱,姓名等。假設(shè)用戶需要在大量的傳感數(shù)據(jù)中進行模糊檢索,甚至規(guī)則表達式匹配,有什么高效的方法呢?
醫(yī)藥,市面上發(fā)現(xiàn)了一批藥品可能有問題,需要對藥品條碼進行規(guī)則表達式查找,找出復(fù)合條件的藥品流向。但怎么才能在如此復(fù)雜的系統(tǒng)中,用高效方法來實現(xiàn)?
公安,偵查行動時,有可能需要線索的檢索。如用戶提供的殘缺的電話號碼,郵箱,車牌,IP地址,QQ號碼,微信號碼等進行交叉搜索,根據(jù)這些信息加上時間的疊加,模糊匹配和關(guān)聯(lián),最終找出罪犯。但這個流程,可有高效方法?
相同的需求還有很多。幾乎每一個模糊匹配的場景下,都需要正則表達式匹配,這和人臉拼圖有點類似,我們已經(jīng)看到強烈的需求已經(jīng)產(chǎn)生。但技術(shù)方面,要怎么做更好?
在我看來:正則匹配和模糊匹配通常是搜索引擎的特長,但是如果你使用的是PostgreSQL數(shù)據(jù)庫照樣能實現(xiàn),并且性能不賴,加上分布式方案
(譬如 plproxy, pg_shard, fdw shard, pg-xc, pg-xl,
greenplum),處理百億以上數(shù)據(jù)量的正則匹配和模糊匹配效果杠杠的,同時還不失數(shù)據(jù)庫固有的功能,絕對是一舉多得。
首先對應(yīng)用場景進行一下分類,以及現(xiàn)有技術(shù)下能使用的優(yōu)化手段。
.1. 帶前綴的模糊查詢,例如 like 'ABC%',在PG中也可以寫成 ~ '^ABC'
可以使用btree索引優(yōu)化,或者拆列用多列索引疊加bit and或bit or進行優(yōu)化(只適合固定長度的端字符串,例如char(8))。
.2. 帶后綴的模糊查詢,例如 like '%ABC',在PG中也可以寫成 ~ 'ABC$'
可以使用reverse函數(shù)btree索引,或者拆列用多列索引疊加bit and或bit or進行優(yōu)化(只適合固定長度的端字符串,例如char(8))。
.3. 不帶前綴和后綴的模糊查詢,例如 like '%AB_C%',在PG中也可以寫成 ~ 'AB.C'
可以使用pg_trgm的gin索引,或者拆列用多列索引疊加bit and或bit or進行優(yōu)化(只適合固定長度的端字符串,例如char(8))。
.4. 正則表達式查詢,例如 ~ '[\d]+def1.?[a|b|0|8]{1,3}'
可以使用pg_trgm的gin索引,或者拆列用多列索引疊加bit and或bit or進行優(yōu)化(只適合固定長度的端字符串,例如char(8))。
PostgreSQL pg_trgm插件自從9.1開始支持模糊查詢使用索引,從9.3開始支持規(guī)則表達式查詢使用索引,大大提高了PostgreSQL在刑偵方面的能力。
代碼見 https://github.com/postgrespro/pg_trgm_pro
pg_trgm插件的原理,將字符串前加2個空格,后加1個空格,組成一個新的字符串,并將這個新的字符串按照每3個相鄰的字符拆分成多個token。
當使用規(guī)則表達式或者模糊查詢進行匹配時,會檢索出他們的近似度,再進行filter。
5、postgresql是什么數(shù)據(jù)庫
postgresql是功能強大的開源數(shù)據(jù)庫。
postgresql數(shù)據(jù)庫是功能強大的開源數(shù)據(jù)庫,它支持豐富的數(shù)據(jù)類型(如JSON和JSONB類型、數(shù)組類型)和自定義類型。
PostgreSQL數(shù)據(jù)庫提供了豐富的接口,可以很方便地擴展它的功能,如可以在GiST框架下實現(xiàn)自己的索引類型,支持使用C語言寫自定義函數(shù)、觸發(fā)器,也支持使用流行的編程語言寫自定義函數(shù)。
PostgreSQL數(shù)據(jù)庫優(yōu)點
1、對超許可數(shù)量軟件使用的天然免疫力
對一些商業(yè)性質(zhì)的數(shù)據(jù)庫銷售商來說,超許可數(shù)量的軟件使用是第一位的問題。而使用PostgreSQL,因為沒有任何授權(quán)的費用是,也就沒有任何人可以起訴您違反授權(quán)協(xié)議違規(guī)使用軟件。
2、比商業(yè)服務(wù)商更好的支持
除了有一般商業(yè)公司的支持外,我們還有由PostgreSQL專業(yè)人員和熱心的愛好者組成的各種社區(qū),用戶可以向他們尋求支持和幫助。
3、員工成本的顯著降低
相對于市場上大型的商業(yè)私有數(shù)據(jù)庫軟件,我們的系統(tǒng)在設(shè)計和開發(fā)時已考慮僅需少量的維護和優(yōu)化,同時仍保持所有功能正常、穩(wěn)定和性能正常。不僅如此,我們的培訓(xùn)過程相對于那些商業(yè)私有數(shù)據(jù)庫供應(yīng)商來說,總體來說有更好的性價比、更容易管理和更接近真實的使用場景。
4、享有盛名的可靠性和穩(wěn)定性
與很多商業(yè)私有數(shù)據(jù)庫不一樣的是,對很多公司特別常見的是,PostgreSQL在幾年的運行過程中幾乎未出現(xiàn)哪怕是一次的宕機情況,即使是一次,它就是這樣穩(wěn)定地工作著。
5、擴展性
所有PostgreSQL的源代碼對所有人都是可以免費獲得的。如果您的公司員工需要定制或是給PostgreSQL增加一些功能,他們只需做很少的改動工作,也沒有額外的成本。全球PostgreSQL社區(qū)的專業(yè)人員和熱心的愛好者也在積極地擴展PostgreSQL的功能。
PostgreSQL是一款高級的企業(yè)開源關(guān)系數(shù)據(jù)庫,支持SQL、JSON查詢,功能健全、可靠性高,MySQL、PostgreSQL等常用數(shù)據(jù)庫國內(nèi)外服務(wù)商都是提供的,用戶可以專注開發(fā)自己的項目,完全不用管數(shù)據(jù)庫關(guān)系操作。以上就是聚名企服的回答,希望對你有所幫助~

轉(zhuǎn)載請帶上網(wǎng)址:http://www.yadikedp.com/posjitwo/92537.html