iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
佛心分享-SideProject30

Mongory:打造跨語言、高效能的萬用查詢引擎 系列

Mongory, let you query everywhere!
這是一個從 Ruby JSON 過濾器開始,逐步演進為跨語言支援、擁有 C 核心的通用查詢引擎的 side project。
在這 30 天內,我會完整分享 Mongory 的開發過程:從 AST 設計、matcher 實作、效能瓶頸,到 C 擴充、multi-platform gem 打包,以及 Go/Python/JS 的橋接規劃。
喜歡從「解決痛點」出發、一路打怪成長的你,不妨一起來看這趟技術旅程。

參賽天數 28 天 | 共 29 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 10

Day 10:Memory pool 設計:chunk 倍增與 O(log n) 擴容

筆者在 C 的世界第一站,選擇先把地基打好:memory pool因為在 C 裡要 hash 沒有、陣列也無法自動擴容要物件需要自己 malloc/free,一...

2025-09-08 ‧ 由 法蘭克 分享
DAY 11

Day 11:Value wrapper 與 function pointer dispatch

在 C 裡面動態帶進來一個 void*,根本不知道他是什麼型別要嘛一路 cast,要嘛寫一堆 if/else 判斷,邏輯又醜又慢筆者直接把「值的世界」統一起來:...

2025-09-09 ‧ 由 法蘭克 分享
DAY 12

Day 12:動態 Array 設計:Ruby 風格 API 與介面設計

這一篇承接 Day 11 的 mongory_value,筆者帶讀者走一遍 C core 裡的動態陣列 mongory_array:為什麼長這樣、怎麼用、有哪些...

2025-09-10 ‧ 由 法蘭克 分享
DAY 13

Day 13:Hash Table(Table):bucket/雜湊/衝突策略取捨

Day 13:Hash Table(Table):bucket/雜湊/衝突策略取捨 延續 Day 12 的 mongory_array,筆者今天帶讀者把 mon...

2025-09-11 ‧ 由 法蘭克 分享
DAY 14

Day 14:Matchers 架構總覽與 Adapter 邊界

今天把 Mongory 的 Matchers 架構一次講透:骨架(base/composite/explainable/traversable)、建構 → 匹配...

2025-09-12 ‧ 由 法蘭克 分享
DAY 15

Day 15:Ruby C 擴充與 submodule

今天會接著講 Ruby <-> C 的橋接在 Clang 不知道經歷了多少次 segmentation fault經過了無數次的通靈,mongory...

2025-09-13 ‧ 由 法蘭克 分享
DAY 16

Day 16:VALUE↔C value 轉換策略

本篇聚焦 Mongory 在跨語言邊界的資料轉換:Ruby 的高階物件,如何在 C Core 中以 mongory_value 表示;又如何在匹配完成後安全地「...

2025-09-14 ‧ 由 法蘭克 分享
DAY 17

Day 17:GC × memory pool 生命週期管理

本篇聚焦 Ruby bridge 與 C Core 之間的生命週期協作:memory pool 如何與 Ruby GC 配合,extern_ctx 如何穩定保存...

2025-09-15 ‧ 由 法蘭克 分享
DAY 18

Day 18:Benchmark shock:為什麼還是比 plain Ruby 慢?

這一天,是筆者在 Mongory C 擴充完成後的第一波震撼教育:既然都進了 C,為什麼還是比 plain Ruby 慢?數據擺在眼前,在初版 bridge 完...

2025-09-16 ‧ 由 法蘭克 分享
DAY 19

Day 19:關鍵優化 1:pool reset、key cache map 的成效

承接 Day 18 的震撼:初版 C bridge 大約比 plain Ruby 慢 3 倍。今天聚焦兩個「小改動、大成效」的優化:pool->reset...

2025-09-17 ‧ 由 法蘭克 分享