以「後 SQL 時代的黎明」為主題的 EdgeDB 1.0 線上釋出會剛剛於幾個小時前結束,因為筆者參與了前幾日的演練,所以提前備好了稿,第一時間發出來供大家瞭解。
CEO 的主題演講
「今天是 EdgeDB 一個重要的日子,對整個資料庫社群來說亦是如此。」作為 EdgeDB 聯合創始人和 CEO 的 Yury Selivanov 如是說,「自從關聯式資料庫在上世紀 70 年代問世以來,我們僅看到了 NoSQL 運動在 2010 年的興起,除此之外並沒有出現能改變資料庫格局的創新。而我們相信,EdgeDB 的誕生將創造一個嶄新的資料庫領域,有機會永久地改變我們思考和使用資料的方式。」
Yury 接著回顧道,發明關聯式資料庫和 SQL 的時候,大型主機和打孔卡正大行其道。當時人們雖然創造出了精簡靈活、適配性高的關係模型,但是卻仍然受限於那個時代——SQL 是給銷售人員用英語建立報表用的,更是無法與現代程式語言融合。為了解決這一問題,後來人們發明了關係物件對映(ORM),但這只是將資料模型錯位的問題隱藏得更深,以至於當今的開發者已經習慣了戴著腳鐐起舞。
「EdgeDB 的目標則是從根本上解決這一問題」,Yury 接著說道, 「資料庫本應自然地與整個技術棧融為一體,而不是依賴於各種封裝再封裝。」EdgeDB 以關係模型為基礎,將表結構變成圖結構,引入了 graph-relational 模型的概念,EdgeDB 也自然成為了世界上第一個 graph-relational 資料庫:
- EdgeDB 花費了數年時間開發了一種嶄新的查詢語言——EdgeQL,它的功能十分強大且容易上手;
- 為了適應雲端計算和 serverless 的應用,EdgeDB 還大力優化了傳輸協定和並行支援;
- EdgeDB 從頭設計了使用者端使用體驗,API 十分簡潔、高效並符合目標程式語言的慣例;
- EdgeDB 官方提供超一流的命令列工具
- 自帶開箱即用的 GraphQL 支援
- 內建 schema migration 支援
EdgeDB 是一個開源專案,1.0 的釋出標誌著已經可以投入使用了。但同時,EdgeDB 還有野心將其 graph-relational 模型和 EdgeQL 查詢語言變成一種開放標準,並行起一波造福軟體工程師、改變資料庫現狀的風潮。
CTO 談 EdgeQL 的優勢
EdgeDB 的 CTO 及聯合創始人 Elvis Pranskevichus 從物件與關係的「阻抗失配」問題談起,分析了 ORM 的許多關鍵問題,解釋了 ORM 大行其道的原因,以及 NoSQL 的侷限性。談及解決方案,Elvis 用一個例子生動地對比了 EdgeQL 和 SQL 在語言正交性、緊湊性和一致性上的巨大差距,並又以 Prisma 為例,演示了 ORM 在實際應用到中的種種不足之處。與之相對的,Elvis 展示了 EdgeQL 的查詢構造器的使用,其查詢程式碼可以驚人地用 TypeScript 高度復現 EdgeQL 的語句結構,更說明了 EdgeQL 作為一門查詢語言的表達能力。
Elvis 將 EdgeQL 的優勢歸結為 graph-relational 模型的特點:基於經典關係模型、內建不可變的物件 ID、物件連結以及「一切皆集合」的設計。接著,Elvis 又以一連串簡短的例子,像寫程式碼一樣地編寫查詢語句,充分展現了 EdgeQL 的一致性和拼裝能力。
「我們可以做得比 SQL 更好,而且我們應該如此,就是現在。」Elvis 總結道。
分主題演講
首先,Victor Petrovykh 通過一個完整的迷你入門教學,製作了一個奈飛簡易版,演示了 EdgeQL 建模中常用的型別、連結、連結屬性、型別繼承、約束等概念,以及查詢語句中的結果塑形、連結查詢、條件查詢、計算屬性、反向連結、過濾器等功能。
接著,主持人兼開發者關係主管 Colin McDonnell 現場演示了 EdgeDB 的實際使用體驗,用 TypeScript 製作了一個任務備忘錄,展示了 EdgeDB CLI 和查詢構造器在實戰中的開發效率。
然後就是筆者關於 EdgeDB 架構的介紹,具體內容已經發布在之前的《EdgeDB 架構簡析》一文中了。
隨後 Colin 再次登場,通過對比幾款常見 ORM,展示了 EdgeQL 超越 ORM 的一些功能,比如一致性建模、統一通用定義、複雜計算屬性、多型查詢、高度整合的 migration 等,並現場演示了查詢構造器是如何通過物件導向的介面、靜態型別推斷,替代 ORM 完成日常工作的。
最後,Michael Sullivan 博士繪聲繪色地講解了 EdgeDB 編譯器的工作原理,以及為什麼只有 PostgreSQL 才能成為 EdgeDB 的基石。
結束語
在釋出會的最後,Yury 說,隨著 1.0 的釋出,許多基礎趨於穩定,EdgeDB 將會進入更快的迭代期,將在幾個月後釋出 2.0 版,包括 GROUP BY、ACL 等計劃中的新功能,並歡迎大家在 GitHub 上參與 2.0 的討論。與此同時,託管的 EdgeDB SaaS 服務也將很快釋出,大家可通過各種關注 EdgeDB 的進展。
稍後,筆者會給釋出會視訊配上中文字幕後發到 B 站再轉發至各平臺,並陸續翻譯演講對應的即將釋出的部落格文章,敬請關注我們的、和