EdgeDB - 下一代对象关系型数据库

查看原文

这个工具旨在解决的问题应该是将原先软件层的逻辑挪到数据库层面来,数据库不再是行列关系,而是对象驱动的数据,这让我们也许在实现业务逻辑时可以用更少代码解决问题。它内建 GraphQL 支持,这个文档对于尝鲜的人来说非常容易理解。

这篇 Quick Start 简述了实现简单的 PullRequest 业务。

  • Migration 是个好玩的设计,鉴于大部分数据库框架都让程序员可以用 xyz-framework run migrations 这种方法建表,删表,改表,EdgeDB 直接提供了 Migration 来做任何表模式的变更,在数据库层面帮我们解决表模式的迁移,体验蛮好的。使用时,感受到了运行一次 Migration 耗时比较长,应该是有锁库,可能现在还处于早期试验阶段,实现还不完善。
  • INSERT 的同时可以带上 SELECT, FILTER ,这个跟 SQL 能做的事情没有差太多。
  • SELECT 使用 GraphQL 的语法来查数据。

翻看 源码, 它的实现使用 Python。基于 PostgreSQL 数据库做底层存储,使用 Click 做命令行交互。这些炫酷的 Query 是自己写了一套语法解析,切分 Token,构建语法树,编译成 PG SQL 执行。 有趣的是这个程序使用了大量 asyncio,看代码写的人可能写的挺痛苦的。

衍生思考:这个库有点跳出 Box 思考问题的感觉,从一个很另类的角度去尝试减轻业务层的逻辑和代码。后面也得看是否会有开发者买账这么做,也许很多人会更喜欢把逻辑用代码写,而不是交给数据库去做。