動態

詳情 返回 返回

Google 推出新編程語言 Mangle:可能徹底改變數據庫工作方式 - 動態 詳情

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 的優勢後,我們來看看它在真實業務中能發揮什麼作用。瞭解這些應用場景,你就能理解它為何對開發者和數據專家如此重要:

  1. 數據集成:許多企業的數據分散在多個數據庫或系統中,整合分析往往十分繁瑣。Mangle 支持以一致、簡潔的方式查詢多數據源,輕鬆解決這一痛點。
  2. 圖分析:圖數據庫用於存儲關係型數據(如社交網絡、組織架構),藉助 Mangle 的遞歸規則,可高效查詢這類複雜的關聯數據。
  3. 本體推理:用於理解複雜知識系統中的關係,在 AI 和數據建模領域尤為實用------比如推理不同信息間的關聯邏輯。
  4. 複雜數據分析:聚合能力、查詢內函數調用、多源數據處理等特性,讓 Mangle 完美適配金融、科技、科研、AI 等領域------這些領域的數據集往往規模大、類型多且相互關聯。

簡言之,Mangle 為開發者提供了智能、靈活的解決方案,讓複雜數據的高級分析變得更簡單、更快、更可靠。

五、如何入門 Mangle?

看完 Mangle 的功能和應用,你可能會問:"我該如何開始使用它?"其實很簡單:

Mangle 是 Google 開源的項目,託管在 GitHub 上,任何人都可以免費獲取。

倉庫中包含了入門所需的全部資源:

  • 源代碼(可查看 Mangle 的底層實現)
  • 示例代碼(演示如何編寫查詢)
  • 詳細文檔(提供分步指導)

對於初學者,建議從實驗示例查詢開始:先用小數據集練習"提問",嘗試使用聚合函數,或結合多源數據觀察 Mangle 的處理效果;熟悉後再逐步過渡到複雜數據集和高級查詢。

六、總結

通過 Mangle,Google 為開發者提供了一種處理複雜數據的強大新工具------現在就開始探索它,或許能讓你的編碼和數據項目搶佔先機。

不妨動手測試、實驗一番,看看 Google Mangle 能為你帶來什麼。

user avatar Leesz 頭像 guixiangyyds 頭像 baidujiagoushi 頭像 yubaolee 頭像 gushiio 頭像 lewyon 頭像 yunzhihuijishushequ 頭像 fanwenjie 頭像 qianxiaqingkong 頭像 papermoon 頭像 kestrel_task 頭像 chaoqipengbodemogu_eceqzp 頭像
點贊 20 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.