这是因为 FB 没有开源它的 ORM。在 FB 做产品工程师,你永远接触不到关系型数据库和缓存,你直接定义图的节点数据类型和边数据类型。(注意我说的是边,不是外键。边可以多对多,可以有方向和有属性,至少能够描述加权有向循环图。)如果你基于这样的框架来做产品,把同样的图映射为 GraphQL 是非常自然的事情。
但因为 FB 没有开源这套庞大的体系,FB 外所有人都在关系型数据库上折腾 GraphQL,都要先引入 Apollo 之类的 ORM,而且这往往是叠加在例如说 Rails 这样的 ORM 上面,二维的关系型数据表要经过复杂的手工映射才能成为图。这足够折腾死人了。如果你用多个 micro service,你还要让它们先通过 REST API 连起来……FB 可是一个单体的 web 服务啊,一天上万个 commit,每 20 分钟一个 CD 进入生产环境,这无人能比。