YC S23 投了一個新項(xiàng)目ParadeDB[1], 非常有意思。他們的 Slogan 是 “Postgres for Search & Analytics —— Modern Elasticsearch Alternative built on Postgres”。就是用于搜索和分析的 PostgreSQL,旨在成為 Elasticsearch 的替代。
PostgreSQL 的生態(tài)確實(shí)越來越繁榮了,在基于 PG 的擴(kuò)展與衍生中,我們已經(jīng)有了基于 MongoDB 開源替代 —— FerretDB,SQL Server 開源替代 Babelfish,F(xiàn)irebase 開源替代 Supabase,AirTable 開源替代 NocoDB,等等等等,現(xiàn)在又多了 ElasticSearch 開源替代 —— ParadeDB。
《PGSQL x Pigsty: 數(shù)據(jù)庫全能王來了》
ParadeDB 實(shí)際上是由三個 PostgreSQL 擴(kuò)展組成:pg_bm25,pg_analytics,以及pg_sparse。這三個擴(kuò)展都可以獨(dú)立使用了。應(yīng) ParadeDB 創(chuàng)始人所托,我已經(jīng)將這幾個擴(kuò)展打好包(v0.5.6),并將會在 Pigsty 的下個 Release v2.6 中默認(rèn)收錄,讓用戶能夠開箱即用。
我翻譯了 ParadeDB 的官網(wǎng)介紹與四篇博客文章,為您介紹這個 PostgreSQL 生態(tài)的新星。今天是第一篇 —— ParadeDB 概覽
ParadeDB
我們榮幸地向您介紹 ParadeDB:針對搜索場景優(yōu)化的 PostgreSQL 數(shù)據(jù)庫。ParadeDB是第一個旨在成為 Elasticsearch 替代的 Postgres 數(shù)據(jù)庫構(gòu)建,被設(shè)計(jì)為可以在PG表上進(jìn)行閃電般快速的全文檢索、語義檢索、以及混合檢索。
ParadeDB解決什么問題?
對于許多組織而言,搜索依然是一個未解問題 —— 盡管有像 Elasticsearch 這樣的巨頭存在,但大多數(shù)與其打過交道的開發(fā)者都知道,運(yùn)行、調(diào)優(yōu)和管理 Elasticsearch 是多么蛋疼。雖然也有其他的搜索引擎服務(wù),但在現(xiàn)有數(shù)據(jù)庫上粘連對接這些外部服務(wù),會引入更多重建索引和數(shù)據(jù)復(fù)制的復(fù)雜難題與成本。
那些追求統(tǒng)一權(quán)威數(shù)據(jù)源與搜索引擎的開發(fā)者轉(zhuǎn)向了 PostgreSQL,PG 已經(jīng)通過tsvector提供了基本的全文檢索能力,也通過pgvector提供了向量語義檢索能力。這些工具也許對于簡單用例和中等大小的數(shù)據(jù)集來說很好使,但當(dāng)表變大或查詢變得復(fù)雜時就有些不夠用了:
1.大表上的排序和關(guān)鍵詞搜索非常緩慢2.不支持 BM25 計(jì)算3.沒有混合檢索支持,將向量搜索與全文搜索的技術(shù)4.沒有實(shí)時搜索 — 數(shù)據(jù)必須手動重新索引或重新嵌入5.對復(fù)雜查詢?nèi)绶置婊蛳嚓P(guān)性調(diào)優(yōu)的支持有限
到目前為止,我們已經(jīng)目睹了許多工程團(tuán)隊(duì)用很勉強(qiáng)的方式在 Postgres 上疊加了一套 Elasticsearch,隨即因?yàn)楹笳咛^于臃腫、昂貴或復(fù)雜,而最終放棄。我們在想:如果 Postgres 本身就帶有 ElasticSearch 水平的搜索會發(fā)生什么?那么開發(fā)者就不會有這種兩難選擇了 —— 統(tǒng)一使用 PostgreSQL 但搜索能力受限,還是使用事實(shí)源和搜索引擎兩種獨(dú)立的服務(wù)?
ParadeDB適用于誰?
Elasticsearch 擁有廣泛的應(yīng)用場景,但我們并不企圖一蹴而就地覆蓋所有場景——至少現(xiàn)階段不是。我們更傾向于專注于一些核心場景 —— 專為那些希望在 PostgreSQL 上進(jìn)行搜索的用戶服務(wù)。對于以下情況,ParadeDB 會是您的理想選擇:
?希望使用單一 Postgres 作為事實(shí)來源,厭惡在多個服務(wù)之間搬運(yùn)復(fù)制數(shù)據(jù)。?希望在不損害性能與可伸縮性的前提下,對存儲在 Postgres 中的海量文檔進(jìn)行全文搜索。?希望 ANN/相似度搜索與全文搜索相結(jié)合,從而獲得更精準(zhǔn)的語義匹配效果
譯者注:在 Clickbench 中,ParadeDB 的分析性能表現(xiàn)相當(dāng)不錯,目前在 PG 生態(tài)的分析類插件中拔得頭籌。
ParadeDB產(chǎn)品介紹
ParadeDB 是一個完全托管的 Postgres 數(shù)據(jù)庫,目前任何其他 PG 供應(yīng)商都還沒有提供此類全文索引和搜索 PG 表的能力:
與 AWS RDS 等托管服務(wù)不同,ParadeDB 是一個 PostgreSQL 擴(kuò)展插件,不需要任何設(shè)置,可以與整個 PG 生態(tài)集成,并完全可定制。ParadeDB 是開源的(AGPLv3),并提供了一個簡單的 Docker Compose 模板以滿足需要自建/定制的開發(fā)者的需求。
ParadeDB 的構(gòu)建方式
ParadeDB 的核心是一個帶有自定義擴(kuò)展的標(biāo)準(zhǔn) Postgres 數(shù)據(jù)庫,這些擴(kuò)展使用 Rust 編寫,引入了增強(qiáng)的搜索能力。
ParadeDB 的搜索引擎基于 Tantivy 構(gòu)建,Tantivy 是受 Apache Lucene 啟發(fā)的開源 Rust 搜索庫。其索引作為原生的 PG 索引存儲在PG中,從而避免了繁瑣的數(shù)據(jù)復(fù)制/ETL工作,并同時可以確保事務(wù) ACID。
ParadeDB 為 Postgres 生態(tài)提供了一個新擴(kuò)展:pg_bm25。pg_bm25使用 BM25 評分算法在 Postgres 中實(shí)現(xiàn)了基于 Rust 的全文搜索。ParadeDB 會預(yù)裝這個擴(kuò)展插件。
下一步是什么?
ParadeDB 的托管云版本目前處于 PrivateBeta 階段。我們的目標(biāo)是在 2024 年初推出一個自助服務(wù)的云平臺。如果你想在此期間訪問 PrivateBeta 版本,歡迎加入我們的等待名單[2]。
我們核心團(tuán)隊(duì)的重點(diǎn)是開發(fā) ParadeDB 的開源版本,將在 2023 年冬季推出。
我們 Build in Public,并很高興能與整個社區(qū)分享 ParadeDB。歡迎關(guān)注我們,在未來的博文中我們會進(jìn)一步詳細(xì)介紹 ParadeDB 背后的有趣技術(shù)挑戰(zhàn)。
審核編輯:黃飛
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3763瀏覽量
64274 -
SQL Server
+關(guān)注
關(guān)注
0文章
20瀏覽量
13419
原文標(biāo)題:ParadeDB:首個基于Postgres的Elasticsearch開源替代、采用Rust編寫
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論