Google 推出新編程語(yǔ)言 Mangle:可能徹底改變數(shù)據(jù)庫(kù)工作方式

Google 傳來(lái)重磅消息:他們剛剛推出了一種全新的編程語(yǔ)言------Mangle,一個(gè)很可能徹底改變開(kāi)發(fā)者與數(shù)據(jù)庫(kù)交互的方式的新編程語(yǔ)言。
本文將為你全面拆解 Mangle:它究竟是什么、有哪些獨(dú)特的強(qiáng)大功能、與其他編程語(yǔ)言的區(qū)別,以及為何它對(duì)所有數(shù)據(jù)領(lǐng)域或技術(shù)領(lǐng)域的從業(yè)者都至關(guān)重要。請(qǐng)耐心讀完,你將明白為什么所有人都在討論 Mangle,以及它為何能成為"游戲規(guī)則改變者"。
以下是 Google Mangle 倉(cāng)庫(kù)的官方鏈接:https://github.com/google/mangle
Google 官方介紹:
Mangle 是一種用于演繹數(shù)據(jù)庫(kù)編程的編程語(yǔ)言。它是 Datalog 語(yǔ)言的擴(kuò)展版本,增加了聚合操作、函數(shù)調(diào)用及可選類型檢查等多種擴(kuò)展功能。
演繹數(shù)據(jù)庫(kù)編程能通過(guò)統(tǒng)一的方式呈現(xiàn)和查詢數(shù)據(jù),對(duì)于整合多數(shù)據(jù)源非常實(shí)用。該技術(shù)還可用于構(gòu)建領(lǐng)域知識(shí)模型,其作用類似于機(jī)器可讀的本體論,但不受二元謂詞的限制。
Datalog 是一種富有表現(xiàn)力的聲明式語(yǔ)言,其特性類似于關(guān)系演算(可類比 SQL 和關(guān)系視圖)。與關(guān)系演算不同的是,它直接支持遞歸規(guī)則和程序結(jié)構(gòu)化構(gòu)建。
Mangle 完整繼承了 Datalog 的核心架構(gòu),并通過(guò)功能擴(kuò)展提升了其實(shí)用性。但需要注意的是,在使用這些擴(kuò)展功能時(shí),會(huì)喪失某些優(yōu)良特性(如執(zhí)行終止的確定性保障)。
作為開(kāi)源項(xiàng)目,Mangle 旨在以開(kāi)發(fā)者易于理解的方式傳遞概念,并支持便捷的實(shí)驗(yàn)探索。本代碼庫(kù)提供了基于 Go 語(yǔ)言實(shí)現(xiàn)的 Mangle 庫(kù),可輕松嵌入各類應(yīng)用程序中使用。
一、什么是 Mangle?
首先,我們來(lái)搞清楚 Mangle 的本質(zhì)。簡(jiǎn)單來(lái)說(shuō),Mangle 是 Google 專為數(shù)據(jù)庫(kù)操作設(shè)計(jì)的編程語(yǔ)言,但它絕非普通的數(shù)據(jù)庫(kù)語(yǔ)言------它針對(duì)"演繹式數(shù)據(jù)庫(kù)編程"(deductive database programming)場(chǎng)景構(gòu)建。別擔(dān)心,這個(gè)概念并不復(fù)雜:它擅長(zhǎng)通過(guò)逐步推理的方式,從復(fù)雜數(shù)據(jù)中挖掘答案,就像人一步步分析問(wèn)題那樣。
Mangle 基于著名的邏輯編程語(yǔ)言 Datalog 構(gòu)建,但 Google 為其增加了諸多功能,使其能更輕松地處理大規(guī)模、高復(fù)雜度的數(shù)據(jù)集。需要說(shuō)明的是,Google 于 2025 年 8 月 22 日正式發(fā)布了 Mangle。
Mangle 的核心目標(biāo)是什么?Google 希望讓開(kāi)發(fā)者無(wú)需編寫(xiě)大量復(fù)雜代碼,就能更輕松、更快速地對(duì)復(fù)雜數(shù)據(jù)集進(jìn)行"提問(wèn)"、分析和推理。本質(zhì)上,它就是為了讓數(shù)據(jù)處理更智能、更簡(jiǎn)單。
二、Mangle 的核心優(yōu)勢(shì):為何如此強(qiáng)大?
Mangle 的基礎(chǔ)是 Datalog------這種語(yǔ)言本就擅長(zhǎng)邏輯查詢和數(shù)據(jù)庫(kù)操作,但面對(duì)大規(guī)模或高復(fù)雜度數(shù)據(jù)集時(shí),Datalog 存在明顯局限。而 Mangle 在這一基礎(chǔ)上進(jìn)行了強(qiáng)化,新增的功能能幫助開(kāi)發(fā)者解決更復(fù)雜的問(wèn)題,同時(shí)避免編寫(xiě)冗長(zhǎng)代碼。具體來(lái)看,它的核心優(yōu)勢(shì)體現(xiàn)在以下幾點(diǎn):
1. 聚合支持(Aggregation Support)
這是 Mangle 最亮眼的功能之一:你可以在查詢中直接計(jì)算求和、平均值、計(jì)數(shù)等聚合結(jié)果。例如,某企業(yè)的用戶數(shù)據(jù)分散在多個(gè)數(shù)據(jù)庫(kù)中,若要統(tǒng)計(jì)用戶總數(shù),Mangle 只需一條查詢語(yǔ)句就能完成,無(wú)需手動(dòng)合并數(shù)據(jù)------既節(jié)省時(shí)間,又大幅提升效率。
# We gradually build up a database of people and topics
# they might be in an expert in (/knows) or enjoy doing (/likes).
# observed(Subject, Verb, Topic, Weight, Description).
# We add a weight to each edge positive or negative evidence.
# This is very crude, but may still be more insightful to
# expose and critique the reasoning than feeding an AI chatbot
# with textual descriptions.
observed(/john, /knows, /cooking, 1, "Has lots of books").
observed(/john, /likes, /cooking, -1, "Has not been reading them.").
observed(/ahmed, /knows, /cooking, 1, "Is cooking regularly.").
observed(/ahmed, /knows, /cooking, -1, "He does not try out any new things.").
observed(/ahmed, /likes, /cooking, 1, "He invites friends over to cook together.").
observed(/mia, /knows, /management, -1, "Does not have a lot of experience.").
observed(/mia, /knows, /management, -1, "She rarely presents her team's work.").
observed(/mia, /likes, /management, 1, "She enjoys helping her people grow.").
# Now, let's add all the weights.
aggregated(Subject, Verb, Topic, Sum)
:- observed(Subject, Verb, Topic, Weight, _)
|> do fn:group_by(Subject, Verb, Topic), let Sum = fn:sum(Weight).
filtered(Subject, Verb, Topic)
:- aggregated(Subject, Verb, Topic, Sum), Sum >= 1.
2. 查詢內(nèi)函數(shù)調(diào)用(Function Calls Inside Queries)
另一個(gè)關(guān)鍵功能是支持在查詢中嵌入函數(shù)調(diào)用。這意味著開(kāi)發(fā)者在獲取數(shù)據(jù)的同時(shí),就能直接運(yùn)行自定義計(jì)算或邏輯。比如需要轉(zhuǎn)換數(shù)據(jù)格式、應(yīng)用業(yè)務(wù)規(guī)則等特殊操作時(shí),Mangle 能無(wú)縫處理,無(wú)需將查詢與計(jì)算拆分成多步。
3. 可選類型檢查(Optional Type Checking)
Mangle 提供可選的類型檢查功能,相當(dāng)于為數(shù)據(jù)一致性加了一層"安全網(wǎng)"。如果需要確保數(shù)字、日期、文本等數(shù)據(jù)格式正確,Mangle 可自動(dòng)校驗(yàn);若追求更高靈活性,也可跳過(guò)該步驟,由開(kāi)發(fā)者自主控制校驗(yàn)嚴(yán)格程度。
4. 遞歸規(guī)則(Recursive Rules)
這是 Mangle 最強(qiáng)大的特性之一:支持查詢語(yǔ)句"自我引用"。這在處理網(wǎng)絡(luò)路徑追蹤、組織架構(gòu)分析、社交關(guān)系圖譜等層級(jí)化或關(guān)聯(lián)化任務(wù)時(shí)格外實(shí)用。
5. 跨數(shù)據(jù)庫(kù)兼容(Working Across Different Databases)
結(jié)合"一致查詢多數(shù)據(jù)庫(kù)"的能力,Mangle 能輕松對(duì)接不同數(shù)據(jù)源,無(wú)需擔(dān)心兼容性問(wèn)題。
6. 復(fù)雜分析與推理(Complex Analysis and Reasoning)
Mangle 專為復(fù)雜分析與推理設(shè)計(jì),可處理諸如"理解復(fù)雜知識(shí)系統(tǒng)(即本體)中的關(guān)系""融合多類型數(shù)據(jù)進(jìn)行深度分析"等高級(jí)任務(wù)。這讓它成為一款通用工具,能解決那些原本需要多程序協(xié)作或復(fù)雜代碼才能搞定的問(wèn)題。
三、Mangle 與其他語(yǔ)言的對(duì)比
了解了 Mangle 的功能后,我們?cè)賮?lái)看它與開(kāi)發(fā)者熟悉的其他編程/查詢語(yǔ)言相比,究竟有何過(guò)人之處。
以 SQL 為例:SQL 在數(shù)據(jù)庫(kù)查詢中表現(xiàn)出色,但面對(duì)復(fù)雜推理任務(wù)或大規(guī)模互聯(lián)數(shù)據(jù)集時(shí),不僅難以維護(hù),表達(dá)能力也會(huì)受限。
再看 Python:開(kāi)發(fā)者常借助 Python 庫(kù)處理高級(jí)數(shù)據(jù)任務(wù),它靈活且強(qiáng)大,但并非"聲明式語(yǔ)言"------這意味著你需要寫(xiě)大量代碼告訴程序"怎么做",而不是直接說(shuō)"要什么"。
Mangle 則將"聲明式、遞歸性、高靈活性"集于一身:既能用簡(jiǎn)潔的語(yǔ)法表達(dá)復(fù)雜查詢,又支持遞歸邏輯,還能直接在語(yǔ)言內(nèi)實(shí)現(xiàn)聚合;同時(shí)無(wú)需額外工作,就能無(wú)縫集成不同數(shù)據(jù)集。
本質(zhì)上,Mangle 讓開(kāi)發(fā)者無(wú)需陷入復(fù)雜代碼,就能完成高級(jí)數(shù)據(jù)推理------這是一種更智能、更高效的復(fù)雜數(shù)據(jù)處理方式。
四、Mangle 的實(shí)際應(yīng)用場(chǎng)景
明白 Mangle 的優(yōu)勢(shì)后,我們來(lái)看看它在真實(shí)業(yè)務(wù)中能發(fā)揮什么作用。了解這些應(yīng)用場(chǎng)景,你就能理解它為何對(duì)開(kāi)發(fā)者和數(shù)據(jù)專家如此重要:
- 數(shù)據(jù)集成:許多企業(yè)的數(shù)據(jù)分散在多個(gè)數(shù)據(jù)庫(kù)或系統(tǒng)中,整合分析往往十分繁瑣。Mangle 支持以一致、簡(jiǎn)潔的方式查詢多數(shù)據(jù)源,輕松解決這一痛點(diǎn)。
- 圖分析:圖數(shù)據(jù)庫(kù)用于存儲(chǔ)關(guān)系型數(shù)據(jù)(如社交網(wǎng)絡(luò)、組織架構(gòu)),借助 Mangle 的遞歸規(guī)則,可高效查詢這類復(fù)雜的關(guān)聯(lián)數(shù)據(jù)。
- 本體推理:用于理解復(fù)雜知識(shí)系統(tǒng)中的關(guān)系,在 AI 和數(shù)據(jù)建模領(lǐng)域尤為實(shí)用------比如推理不同信息間的關(guān)聯(lián)邏輯。
- 復(fù)雜數(shù)據(jù)分析:聚合能力、查詢內(nèi)函數(shù)調(diào)用、多源數(shù)據(jù)處理等特性,讓 Mangle 完美適配金融、科技、科研、AI 等領(lǐng)域------這些領(lǐng)域的數(shù)據(jù)集往往規(guī)模大、類型多且相互關(guān)聯(lián)。
簡(jiǎn)言之,Mangle 為開(kāi)發(fā)者提供了智能、靈活的解決方案,讓復(fù)雜數(shù)據(jù)的高級(jí)分析變得更簡(jiǎn)單、更快、更可靠。
五、如何入門(mén) Mangle?
看完 Mangle 的功能和應(yīng)用,你可能會(huì)問(wèn):"我該如何開(kāi)始使用它?"其實(shí)很簡(jiǎn)單:
Mangle 是 Google 開(kāi)源的項(xiàng)目,托管在 GitHub 上,任何人都可以免費(fèi)獲取。
倉(cāng)庫(kù)中包含了入門(mén)所需的全部資源:
- 源代碼(可查看 Mangle 的底層實(shí)現(xiàn))
- 示例代碼(演示如何編寫(xiě)查詢)
- 詳細(xì)文檔(提供分步指導(dǎo))
對(duì)于初學(xué)者,建議從實(shí)驗(yàn)示例查詢開(kāi)始:先用小數(shù)據(jù)集練習(xí)"提問(wèn)",嘗試使用聚合函數(shù),或結(jié)合多源數(shù)據(jù)觀察 Mangle 的處理效果;熟悉后再逐步過(guò)渡到復(fù)雜數(shù)據(jù)集和高級(jí)查詢。
六、總結(jié)
通過(guò) Mangle,Google 為開(kāi)發(fā)者提供了一種處理復(fù)雜數(shù)據(jù)的強(qiáng)大新工具------現(xiàn)在就開(kāi)始探索它,或許能讓你的編碼和數(shù)據(jù)項(xiàng)目搶占先機(jī)。
不妨動(dòng)手測(cè)試、實(shí)驗(yàn)一番,看看 Google Mangle 能為你帶來(lái)什么。
浙公網(wǎng)安備 33010602011771號(hào)