从代码到数据库运行时,深入理解 SAP HANA Cloud HDI 的容器化部署体系
在 SAP Business Application Studio 里开发一个基于 SAP HANA Cloud 的数据库项目时,我们经常会遇到一个看起来很简单的操作。项目中创建了.hdbtable、.hdbview、.hdbprocedure或 Calculation View,点击部署按钮,几秒之后打开 SAP HANA Database Explorer,相应的表、视图、存储过程已经出现在数据库中了。
这段过程看起来像是 IDE 帮我们执行了一批 SQL,但如果真的这样理解,就低估了 SAP HANA Deployment Infrastructure,也就是 HDI。
HDI 并不是简单的 SQL 执行器。它位于数据库开发源代码和 SAP HANA 运行时对象之间,负责把设计阶段描述出来的数据库对象转换成真正可以运行的 Catalog Object,并通过容器实现隔离、权限控制以及应用与数据库持久化层之间的绑定。
SAP 官方对 HDI 的定义很明确,HDI 提供了一套服务,可以把数据库开发工件部署到所谓的 HDI Container 中。各种设计时工件描述 SAP HANA 数据库对象最终应该处于什么状态,常见对象包括 Table、View、Procedure 等。这些内容会经历 Modeling、Staging、Building 和 Deployment,最终进入 SAP HANA 数据库运行时。当前 SAP HANA Cloud 的 HDI Reference 仍然沿用这套核心模型。
理解这句话,关键并不在 Container 这个词,而在于设计时状态与运行时状态之间的转换。
传统数据库开发里,
