[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-rust-enums-first-class-database-primitive-zh":3,"article-related-rust-enums-first-class-database-primitive-zh":30,"series-industry-eafdefae-f390-4185-8f58-8ef65e556103":75},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":23,"views":27,"created_at":28,"published_at":29,"topic_cluster_id":11},"eafdefae-f390-4185-8f58-8ef65e556103","rust-enums-first-class-database-primitive-zh","Rust 應把 enum 當成資料庫一等公民","\u003Cp data-speakable=\"summary\">32\u002F\u003Ca href=\"\u002Fnews\u002Fai-weekly-2026-w32-zh\">2026\u003C\u002Fa> 顯示，\u003Ca href=\"\u002Ftag\u002Frust\">Rust\u003C\u002Fa> 團隊正在重建資料庫型別，因為傳統 SQL 仍缺少真正的 enum 模型。\u003C\u002Fp>\u003Cp>我主張：Rust 應把 enum 視為資料庫的一等公民，而不是把它當成應用層的補丁。當資料一旦超出平面欄位與字串，資料庫就成了整個型別故事裡最弱的一環。近期論壇裡，一位正在做資料庫軟體的開發者已經直接規劃 tuples、structs、enums、lists、maps、sets，這不是炫技，而是現實需求。\u003C\u002Fp>\u003Ch2>第一個論點：SQL 的型別模型太薄，撐不住現代應用資料\u003C\u002Fh2>\u003Cp>第一個理由很直接：現代應用資料早就不是單純的 scalar columns，但 SQL 的遺產型設計仍逼人把一切壓扁。那位資料庫作者提出的不是抽象理想，而是要把 Rust 的真實資料形狀保留下來。只要資料有巢狀結構、帶標籤的聯合型別、或集合，開發者就得回頭用 join table、JSON blob，或自訂編碼規則硬湊。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785803562771-lqfv.png\" alt=\"Rust 應把 enum 當成資料庫一等公民\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這不是品味問題，是正確性問題。Rust enum 可以精準描述狀態分支與不同 payload；SQL 的 enum 多半只是受限字串。兩者差距很大，因為資料庫本來就應該承載不變式。如果儲存層無法清楚表達領域模型，每個讀取它的服務都得重寫驗證邏輯，migration 也會變成一次賭博。\u003C\u002Fp>\u003Ch2>第二個論點：Rust 會持續把儲存層推向更豐富的 primitive\u003C\u002Fh2>\u003Cp>第二個理由是 Rust 生態正在把壓力往資料庫端推。Rust 開發者習慣讓型別系統延伸到編譯器之外，直到 persistence 也能保有同樣的嚴格度。論壇裡那位資料庫作者不是孤例；另有參與者談到把 spectrogram pipeline 搬到 \u003Ca href=\"\u002Ftag\u002Fgpu\">GPU\u003C\u002Fa>，並以 Vulkan、slang、ring buffers 朝商用推進。這類系統工作依賴精準資料布局與可預測轉換，資料庫若還只提供原始欄位與臨時序列化，就跟不上。\u003C\u002Fp>\u003Cp>更現實的是，Rust 讓非法狀態難以在記憶體中出現，開發者不會想在持久化\u003Ca href=\"\u002Fnews\u002Fanthropic-breach-proves-ai-agents-need-hard-security-limits-zh\">邊界\u003C\u002Fa>把這個好處丟掉。若服務在程式內用 struct、enum、Option 建模，到了資料庫卻被迫繞回字串或 JSON，錯誤就會在邊界上反覆出現。這會形成一種分裂架構：Rust 程式很嚴謹，資料庫卻很寬鬆。順序反了，儲存層才應該是整條堆疊最嚴格的地方。\u003C\u002Fp>\u003Ch2>反方可能怎麼說\u003C\u002Fh2>\u003Cp>最強的反對意見是：SQL 的簡單正是它的力量。關聯式資料庫之所以能活這麼久，是因為它們偏向可攜性、成熟工具鏈與可預測的查詢規劃，而不是追求豐富值型別。對很多系統來說，基本的 enum 欄位已經夠用；更複雜的情況可以用正規化表或 JSON 處理。從這個角度看，要求資料庫理解 Rust 式 enum，像是把程式語言的型別代數硬塞進儲存系統。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785803561768-11xz.png\" alt=\"Rust 應把 enum 當成資料庫一等公民\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個批評有一半是對的。不是每個 schema 都需要帶 payload 的 variant，也不是每個團隊都想承擔更表達性的儲存引擎\u003Ca href=\"\u002Fnews\u002Fgpt-56-sol-gpu-kernel-cost-down-20-percent-zh\">成本\u003C\u002Fa>。但反駁也很清楚：現有替代方案並沒有消除複雜度，只是把它藏進應用程式、migration、序列化層。若領域本來就有結構化的 variants，把它編成字串或 JSON 不會讓系統更簡單，只會讓資料庫失去替你守住不變式的能力。\u003C\u002Fp>\u003Ch2>你能做什麼\u003C\u002Fh2>\u003Cp>如果你是工程師、PM 或創辦人，正在做 Rust-backed 系統，別再把 rich data types 當成純應用層問題。先把領域模型畫清楚，再選能保留這個模型、不必扁平化的儲存方案。優先使用明確的 schema 邊界，挑選能自然表達結構化值的資料庫或 extension，拒絕把 enums、tuples、巢狀 records 全塞進 stringly typed 欄位。目標不是讓 SQL 長得像 Rust，而是讓不變式從記憶體一路活到磁碟。\u003C\u002Fp>","Rust 團隊一再在資料庫裡重建型別系統，因為傳統 SQL 仍缺少真正能承載 enum 的模型。","users.rust-lang.org","https:\u002F\u002Fusers.rust-lang.org\u002Ft\u002Fwhats-everyone-working-on-this-week-32-2026\u002F141638",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785803562771-lqfv.png","industry","zh","e354e301-200e-4739-87c6-52aabcfae261",[17,18,19,20,21,22],"Rust","enum","SQL","資料庫型別","不變式","持久化",[24,25,26],"SQL 的 legacy 型別模型無法自然承載 Rust 的 enum 與巢狀資料。","把型別壓扁成字串或 JSON，只是把複雜度轉移，沒有真正消除。","對 Rust 系統來說，資料庫應該成為最嚴格的型別邊界。",0,"2026-08-04T00:32:19.533411+00:00","2026-08-04T00:32:19.491+00:00",{"tags":31,"relatedLang":34,"relatedPosts":38},[32],{"name":17,"slug":33},"rust",{"id":15,"slug":35,"title":36,"language":37},"rust-enums-first-class-database-primitive-en","Rust should treat enums as a first-class database primitive","en",[39,45,51,57,63,69],{"id":40,"slug":41,"title":42,"cover_image":43,"image_url":43,"created_at":44,"category":13},"f84aefd0-9634-470b-ac81-9ec45c498840","ai-jiedan-zuo-tushengtu-fuye-shizhan-liucheng-zh","AI圖生圖接單交付流程","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785807183621-vlnj.png","2026-08-04T01:32:37.159361+00:00",{"id":46,"slug":47,"title":48,"cover_image":49,"image_url":49,"created_at":50,"category":13},"f889d18d-866c-4bb9-828b-51e3920cae43","deepseek-after-coding-plan-pay-as-you-go-wins-zh","后 Coding Plan 时代，DeepSeek 的按量付费已经赢了","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785783774743-r55j.png","2026-08-03T19:02:26.139206+00:00",{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":13},"d6d381e3-d184-4dd4-b8ef-f3657ac5e3a2","cloudflare-ai-search-pilot-stock-catalyst-zh","Cloudflare 的 AI 搜尋催化劑，投資人正在看什麼","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785781968027-976n.png","2026-08-03T18:32:17.969818+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":13},"e90c712a-4532-416a-8e07-05c01b39196b","ai-weekly-2026-w32-zh","AI 週報：2026-07-27 ~ 2026-08-03","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785730829878-x71s.png","2026-08-03T04:00:40.032678+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":13},"6e506134-abee-4415-b7d7-0b455f9a5dbc","kimi-k3-report-test-time-scaling-4-directions-zh","Kimi K3 點出測試時擴展的4條路","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785718973968-9lhh.png","2026-08-03T01:02:29.540197+00:00",{"id":70,"slug":71,"title":72,"cover_image":73,"image_url":73,"created_at":74,"category":13},"ae5612fc-67e3-4975-bfd4-a9e6ef1ef578","ai-gain-stock-liquidation-salp-postmortem-zh","SALP強平復盤：AI概念股崩盤鏈條","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785717178112-t1ep.png","2026-08-03T00:32:32.816008+00:00",[76,81,86,91,96,101,106,111,116,121],{"id":77,"slug":78,"title":79,"created_at":80},"ee073da7-28b3-4752-a319-5a501459fb87","ai-in-2026-what-actually-matters-now-zh","2026 AI 真正重要的事","2026-03-26T07:09:12.008134+00:00",{"id":82,"slug":83,"title":84,"created_at":85},"83bd1795-8548-44c9-9a7e-de50a0923f71","trump-ai-framework-power-speech-state-preemption-zh","川普 AI 框架瞄準電力、言論與州權","2026-03-26T07:12:18.695466+00:00",{"id":87,"slug":88,"title":89,"created_at":90},"ea6be18b-c903-4e54-97b7-5f7447a612e0","nvidia-gtc-2026-big-ai-announcements-zh","NVIDIA GTC 2026 重點拆解","2026-03-26T07:14:26.62638+00:00",{"id":92,"slug":93,"title":94,"created_at":95},"4bcec76f-4c36-4daa-909f-54cd702f7c93","claude-users-spreading-out-and-getting-better-zh","Claude 用戶更分散，也更會用","2026-03-26T07:22:52.325888+00:00",{"id":97,"slug":98,"title":99,"created_at":100},"bd903b15-2473-4178-9789-b7557816e535","openclaw-raises-hard-question-for-ai-models-zh","OpenClaw 逼問 AI 模型價值","2026-03-26T07:24:54.707486+00:00",{"id":102,"slug":103,"title":104,"created_at":105},"eeac6b9e-ad9d-4831-8eec-8bba3f9bca6a","gap-google-gemini-checkout-fashion-search-zh","Gap 把結帳搬進 Gemini","2026-03-26T07:28:23.937768+00:00",{"id":107,"slug":108,"title":109,"created_at":110},"0740e53f-605d-4d57-8601-c10beb126f3c","google-pushes-gemini-transition-to-march-2026-zh","Google 把 Gemini 轉換延到 2026 年 3…","2026-03-26T07:30:12.825269+00:00",{"id":112,"slug":113,"title":114,"created_at":115},"e660d801-2421-4529-8fa9-86b82b066990","metas-llama-4-benchmark-scandal-gets-worse-zh","Meta Llama 4 分數風波又擴大","2026-03-26T07:34:21.156421+00:00",{"id":117,"slug":118,"title":119,"created_at":120},"183f9e7c-e143-40bb-a6d5-67ba84a3a8bc","accenture-mistral-ai-sovereign-enterprise-deal-zh","Accenture 攜手 Mistral AI 賣主權 AI","2026-03-26T07:38:14.818906+00:00",{"id":122,"slug":123,"title":124,"created_at":125},"191d9b1b-768a-478c-978c-dd7431a38149","mistral-ai-faces-its-hardest-year-yet-zh","Mistral AI 迎來最硬的一年","2026-03-26T07:40:23.716374+00:00"]