《EdgeDB 易经》 ·

EdgeDB 和《EdgeDB 易经》

欢迎来到《EdgeDB 易经》!这是一本交互式插图教科书,旨在为学习 EdgeDB 提供一站式服务。

2019 年春季,EdgeDB 发布了第一个 alpha 版本,在那之后的不久,我就开始了本书的编写。那也是第一次完成并发布了我们思考了很久的功能版本:一个由 PostgreSQL 提供支持的开源数据库,它结合了关系数据库的严格性、ORM 的声明性模式和 GraphQL 的无痛深度查询,同时没有牺牲功能(power)、一致性(consistency)和性能(performance)。

到目前为止,我们的大部分学习和介绍性的资料都可以在 文档, 交互式教程, and 博客文章 中找到,但这一次我们想一个更身临其境的体验放到一本完整的教科书中,它就是本书《Edge 易经》:一本足够全面(也足够有趣)的书,它可以引导对 EdgeDB 感兴趣的初学者了解到所有基本和中级的 EdgeDB 概念。

《Edge 易经》是一本有些独特的书籍。以下则是它与你眼中其他同类型书籍的不同之处:

本书共有 20 个章节,我们会全程假设我们正在为一款游戏创建一个数据库。游戏背景是布莱姆·斯托克(Bram Stoker)于 1897 年出版的《德古拉》(Dracula)一书中的场景与地点。我们的任务是考虑如何为这个单独构建的角色扮演类游戏创建数据库并在其中表现出书中的人物、事件、地点和日期等内容。换句话说,就像是在前端使用 Python/JavaScript/Go,并用 EdgeDB 作为数据库来打造这款游戏。(为什么选择 Python、JavaScript 和 Go?因为 EdgeDB 已具有这三种语言的客户端库。)

选择布莱姆·斯托克(Bram Stoker)笔下的德古拉(Dracula)作为这本教科书故事线的原因如下:

  • 它是一本有趣的读物。我们很高兴看到有人尝试使用 EdgeDB,并希望使介绍尽可能轻松和身临其境。我们认为任何在 EdgeDB 上花了一个小时左右的人都会对它的可能性感到兴奋,但要实现这一点,我们的工作就是让体验变得愉快。布莱姆·斯托克(Bram Stoker)的小说真的帮到了不少。

  • 它是所谓的 书信体小说:通过主要人物写的信件、日记和通信写成的小说。这意味着每个信息都有一个日期和一个作者,这使得它非常适合数据库设计与存储。

  • 它是无版权的。我们的书只是基于这本小说的内容对其游戏的数据库进行了简单的设计,但都不好说,万一有读者喜欢它,并想进一步深入,让它变成一个真实的游戏呢?如果真是这样,那么一个基于完全无版权的书籍的开源数据库软件将会是最好的开始。

我们希望让尽可能多的人有机会坐下来尝试 EdgeDB,因此我们选择了简单明了的写作风格。不是指婴儿语,而是指简单的英语。在这里,我们考虑了三种类型的读者:

  • 不熟悉如何构建数据库,但如果以直接的方式解释这些概念,已经准备好学习和理解其工作原理的人,

  • 熟悉数据库但可能没有心情为他们以前从未见过的产品费时费力的人,

  • 英语是其第二(或第三、第四……)语言,则更倾向阅读简单英文的人。

因为本教科书以小说中的事件为背景,我们需要一个数据库来将所有内容联系在一起。它需要显示人物、地点、日期等之间的联系。它开始于一个简单的架构(结构,schema),然后进一步搭建,并随着故事的推演而变化。这个想法是模拟 EdgeDB 新手的心理过程,他们的任务是将所有这些信息放到一起。包括修改架构、创建新类型、删除未使用的类型以及你在现实生活中可能会看到的所有修修补补。

通过本书,我们将学习如何使用越来越复杂的查询。每一章节都会提供截止到该章节所建立的架构和插入的数据,以及一个供你测试的 REPL(read-eval-print loop,读取-求值-输出循环)。除此之外,每个章节都充满了挑战,需要你一同去解决各式各样的问题。

据我们所知,没有规则要求数据库软件的文本必须枯燥无图像。因此,为了感受原著的美感(添加了蒸汽朋克风格的氛围以达到最佳效果),我们与 Damian Dideńko(didiusz 的 Instagram)进行了合作,他是一位来自波兰卡托维兹、拥有 10 年插画经验的插画师,他为我们制作了一些精美的插图,将《德古拉》一书中的氛围与每一章节中最重要的架构和查询概念进行了结合。你很快就会一睹他的插图,这里是他对于插图的描述以及灵感来源的阐述:

我试图从我所接触过的所有事物中汲取灵感。在我的作品中,我喜欢构建略微超现实、低调/不为人知的故事,给观看者留有自己的解释空间。作品本身是一种松散的思想流,在创作过程中产生意义,有时出现在最后,有时可能根本没有意义——因为不是每件事都必须有意义。我的作品通常从一个很小想法开始,然后发展成为一个更大的构图。我喜欢创作细节丰富的作品,有时我会在其中隐藏灵感。对于细心的观察者来说,它们有点像复活节的小彩蛋。

我们很高兴与 Damian 合作,完成了对这本书最后的润色,该书以一种我们希望的形式融合了新旧事物。我们希望当你逐渐熟悉了 EdgeDB 并发现它着实可以为你提供些什么时,你会将本书继续翻阅下去。

现在就让我们开始吧——进入第一章!

We use ChatGPT with additional context from our documentation to answer your questions. Not all answers will be accurate. Please join our Discord if you need more help.