Google 傳來重磅消息:他們剛剛推出了一種全新的編程語言------Mangle,一個很可能徹底改變開發者與數據庫交互的方式的新編程語言。
本文將為你全面拆解 Mangle:它究竟是什麼、有哪些獨特的強大功能、與其他編程語言的區別,以及為何它對所有數據領域或技術領域的從業者都至關重要。請耐心讀完,你將明白為什麼所有人都在討論 Mangle,以及它為何能成為"遊戲規則改變者"。
以下是 Google Mangle 倉庫的官方鏈接:https://github.com/google/mangle
Google 官方介紹:
Mangle 是一種用於演繹數據庫編程的編程語言。它是 Datalog 語言的擴展版本,增加了聚合操作、函數調用及可選類型檢查等多種擴展功能。
演繹數據庫編程能通過統一的方式呈現和查詢數據,對於整合多數據源非常實用。該技術還可用於構建領域知識模型,其作用類似於機器可讀的本體論,但不受二元謂詞的限制。
Datalog 是一種富有表現力的聲明式語言,其特性類似於關係演算(可類比 SQL 和關係視圖)。與關係演算不同的是,它直接支持遞歸規則和程序結構化構建。
Mangle 完整繼承了 Datalog 的核心架構,並通過功能擴展提升了其實用性。但需要注意的是,在使用這些擴展功能時,會喪失某些優良特性(如執行終止的確定性保障)。
作為開源項目,Mangle 旨在以開發者易於理解的方式傳遞概念,並支持便捷的實驗探索。本代碼庫提供了基於 Go 語言實現的 Mangle 庫,可輕鬆嵌入各類應用程序中使用。
一、什麼是 Mangle?
首先,我們來搞清楚 Mangle 的本質。簡單來説,Mangle 是 Google 專為數據庫操作設計的編程語言,但它絕非普通的數據庫語言------它針對"演繹式數據庫編程"(deductive database programming)場景構建。別擔心,這個概念並不複雜:它擅長通過逐步推理的方式,從複雜數據中挖掘答案,就像人一步步分析問題那樣。
Mangle 基於著名的邏輯編程語言 Datalog 構建,但 Google 為其增加了諸多功能,使其能更輕鬆地處理大規模、高複雜度的數據集。需要説明的是,Google 於 2025 年 8 月 22 日正式發佈了 Mangle。
Mangle 的核心目標是什麼?Google 希望讓開發者無需編寫大量複雜代碼,就能更輕鬆、更快速地對複雜數據集進行"提問"、分析和推理。本質上,它就是為了讓數據處理更智能、更簡單。
二、Mangle 的核心優勢:為何如此強大?
Mangle 的基礎是 Datalog------這種語言本就擅長邏輯查詢和數據庫操作,但面對大規模或高複雜度數據集時,Datalog 存在明顯侷限。而 Mangle 在這一基礎上進行了強化,新增的功能能幫助開發者解決更復雜的問題,同時避免編寫冗長代碼。具體來看,它的核心優勢體現在以下幾點:
1. 聚合支持(Aggregation Support)
這是 Mangle 最亮眼的功能之一:你可以在查詢中直接計算求和、平均值、計數等聚合結果。例如,某企業的用户數據分散在多個數據庫中,若要統計用户總數,Mangle 只需一條查詢語句就能完成,無需手動合併數據------既節省時間,又大幅提升效率。
# 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. 查詢內函數調用(Function Calls Inside Queries)
另一個關鍵功能是支持在查詢中嵌入函數調用。這意味着開發者在獲取數據的同時,就能直接運行自定義計算或邏輯。比如需要轉換數據格式、應用業務規則等特殊操作時,Mangle 能無縫處理,無需將查詢與計算拆分成多步。
3. 可選類型檢查(Optional Type Checking)
Mangle 提供可選的類型檢查功能,相當於為數據一致性加了一層"安全網"。如果需要確保數字、日期、文本等數據格式正確,Mangle 可自動校驗;若追求更高靈活性,也可跳過該步驟,由開發者自主控制校驗嚴格程度。
4. 遞歸規則(Recursive Rules)
這是 Mangle 最強大的特性之一:支持查詢語句"自我引用"。這在處理網絡路徑追蹤、組織架構分析、社交關係圖譜等層級化或關聯化任務時格外實用。
5. 跨數據庫兼容(Working Across Different Databases)
結合"一致查詢多數據庫"的能力,Mangle 能輕鬆對接不同數據源,無需擔心兼容性問題。
6. 複雜分析與推理(Complex Analysis and Reasoning)
Mangle 專為複雜分析與推理設計,可處理諸如"理解複雜知識系統(即本體)中的關係""融合多類型數據進行深度分析"等高級任務。這讓它成為一款通用工具,能解決那些原本需要多程序協作或複雜代碼才能搞定的問題。
三、Mangle 與其他語言的對比
瞭解了 Mangle 的功能後,我們再來看它與開發者熟悉的其他編程/查詢語言相比,究竟有何過人之處。
以 SQL 為例:SQL 在數據庫查詢中表現出色,但面對複雜推理任務或大規模互聯數據集時,不僅難以維護,表達能力也會受限。
再看 Python:開發者常藉助 Python 庫處理高級數據任務,它靈活且強大,但並非"聲明式語言"------這意味着你需要寫大量代碼告訴程序"怎麼做",而不是直接説"要什麼"。
Mangle 則將"聲明式、遞歸性、高靈活性"集於一身:既能用簡潔的語法表達複雜查詢,又支持遞歸邏輯,還能直接在語言內實現聚合;同時無需額外工作,就能無縫集成不同數據集。
本質上,Mangle 讓開發者無需陷入複雜代碼,就能完成高級數據推理------這是一種更智能、更高效的複雜數據處理方式。
四、Mangle 的實際應用場景
明白 Mangle 的優勢後,我們來看看它在真實業務中能發揮什麼作用。瞭解這些應用場景,你就能理解它為何對開發者和數據專家如此重要:
- 數據集成:許多企業的數據分散在多個數據庫或系統中,整合分析往往十分繁瑣。Mangle 支持以一致、簡潔的方式查詢多數據源,輕鬆解決這一痛點。
- 圖分析:圖數據庫用於存儲關係型數據(如社交網絡、組織架構),藉助 Mangle 的遞歸規則,可高效查詢這類複雜的關聯數據。
- 本體推理:用於理解複雜知識系統中的關係,在 AI 和數據建模領域尤為實用------比如推理不同信息間的關聯邏輯。
- 複雜數據分析:聚合能力、查詢內函數調用、多源數據處理等特性,讓 Mangle 完美適配金融、科技、科研、AI 等領域------這些領域的數據集往往規模大、類型多且相互關聯。
簡言之,Mangle 為開發者提供了智能、靈活的解決方案,讓複雜數據的高級分析變得更簡單、更快、更可靠。
五、如何入門 Mangle?
看完 Mangle 的功能和應用,你可能會問:"我該如何開始使用它?"其實很簡單:
Mangle 是 Google 開源的項目,託管在 GitHub 上,任何人都可以免費獲取。
倉庫中包含了入門所需的全部資源:
- 源代碼(可查看 Mangle 的底層實現)
- 示例代碼(演示如何編寫查詢)
- 詳細文檔(提供分步指導)
對於初學者,建議從實驗示例查詢開始:先用小數據集練習"提問",嘗試使用聚合函數,或結合多源數據觀察 Mangle 的處理效果;熟悉後再逐步過渡到複雜數據集和高級查詢。
六、總結
通過 Mangle,Google 為開發者提供了一種處理複雜數據的強大新工具------現在就開始探索它,或許能讓你的編碼和數據項目搶佔先機。
不妨動手測試、實驗一番,看看 Google Mangle 能為你帶來什麼。