IRIS 中支持的四种方式:
SQL、Objects、REST 和 GraphQL
卡济米尔·马列维奇,《运动员》(1932)
>
> “你当然无法理解! 习惯了坐马车旅行的人怎么可能理解乘坐火车或者飞机旅行的人的感受和印象?”
>
> >
> 卡济米尔·马列维奇 (1916)
>
## 引言
我们已经讨论过为什么在主题领域建模使用对象类型优于使用 SQL。 当时得出的结论和总结的事实如今依然适用。 那么,我们为什么要退后到对象和类型之前的时代,讨论将对象的操作拖回到使用global的技术? 我们又为什么要鼓励面条式代码?难道是为了用它难以跟踪的错误考验开发者的技能熟练度?
目前有几种观点支持通过基于 SQL/REST/GraphQL 的 API 传输数据,而不是将其表示为类型/对象:
- 这些技术经过深入研究,相当易于部署。
- 知名度非常高,已在便捷的开源软件中广泛实现。
- 您通常别无选择,只能使用这些技术,尤其是在网络和数据库中。
- 最重要的是,API 仍然使用对象,因为它们提供了在代码中实现 API 的最适途径。
在讨论实现 API 之前,我们先来看一下底层的抽象层。 下图显示了数据在永久存储位置与处理并向应用程序用户呈现的位置之间的移动方式。
如今,数据存储在旋转硬盘驱动器 (HDD) 上,或者使用更现代的技术存储在 SSD 的闪存芯片中。 再使用由 HDD/SSD 上独立存储块组成的流完成数据的读取和写入。
分块并不是随机的, 而是由数据存储介质的物理学、力学和电子学特性决定。 在 HDD 中,这是旋转磁盘上的磁道/扇区。 在 SSD 中,这是可写硅芯片中的内存段。
它们本质上都是信息块,只有找到这些信息块并将其组合才能检索出需要的数据。 数据必须装配成将我们的数据模型/类型与查询时间对应值相匹配的结构。 数据的装配和检索过程由与操作系统中的文件子系统捆绑的 DBMS 负责。
我们可以直接寻址文件系统甚至 HDD/SSD,绕过 DBMS。 但这样一来就失去了两个极其重要的数据桥梁:存储块和文件流之间的桥梁,以及文件和数据库模型中的有序结构之间的桥梁。 换句话说,我们要负责开发所有处理块、文件和模型的代码,包括所有的优化、精细调试和长期可靠性测试。DBMS 使用可理解的模型和表示形式,给我们提供了以高级语言处理数据的绝好机会。 这也是这些系统的一大优势。 DBMS 和数据平台(如 InterSystems IRIS)提供了更多功能:能够以多种方式同时访问有序数据。 而在您的项目中,使用哪一种则取决于您自己。
DBMS 使用可理解的模型和表示形式,给我们提供了以高级语言处理数据的绝好机会。 这也是这些系统的一大优势。 DBMS 和数据平台(如
利用 IRIS 提供的各种工具, 我们可以让代码更美观、更简洁。 我们将直接通过 ObjectScript 面向对象的语言来利用和开发 API。 也就是说,例如,我们会直接从 ObjectScript 软件内部调用 SQL 代码。 对于其他 API,我们将使用现成的库和内置的 ObjectScript 工具。
我们将以 SQLZoo Internet 项目为例,该项目提供了 SQL 的学习资源。 我们将在其他 API 示例中使用相同的数据。
如果您想了解 API 设计的各种方法并利用现成的解决方案,这里有一个有趣又实用的公共 API 集合,汇集到 GitHub 上的一个项目中。
SQL
最自然的方法莫过于从 SQL 开始。 这里没人对它不熟悉吧?
SQL 的教程和书籍浩如烟海。 我们选择的是 SQLZoo。 这是一门很好的 SQL 入门课程,其中有示例,有操作步骤详解,也有语言引用。
我们将一些任务从 SQLZoo 带到 IRIS 平台,并使用各种方法解决。
您可以用多快的速度在您的电脑上访问 InterSystems IRIS? 最快的选择之一是在 Docker 中从现成的 InterSystems IRIS Community Edition 镜像部署容器。
InterSystems IRIS Community Edition 是 InterSystems IRIS Data Platform 的免费开发者版本。
其他方式:在学习门户中访问 InterSystems IRIS Community Edition
将数据从 SQLZoo 转移到我们自己的 IRIS 实例存储中。
需要执行以下操作:
- 打开管理门户(以我的为例,http://localhost:52773/csp/sys/UtilHome.csp)。
- 切换到 USER 命名空间 - 在 Namespace %SYS 中,点击“Switch”链接,选择 USER
- 转到 System > SQL - 依次打开 System Explorer、SQL,然后点击“Go”按钮。
- 右侧将打开“Execute query”标签页,带有“Execute”按钮,这就是我们需要的。
要详细了解如何通过管理门户网站使用 SQL,请参阅此文档。
在 Data 部分的描述中查看用于部署数据库和 SQLZoo 测试数据集的现成脚本。
这里有 world 表的几个直接链接:
- 用于创建 world 数据库的脚本
- 进入该表的数据
创建数据库的脚本可以在 IRIS 管理门户的 Query Exe