
在 SAP BTP 上部署一个真正要落地业务数据的应用时,经常会碰到一个看起来很简单、实际很容易理解偏的动作,给应用绑定 SAP HANA Cloud。界面上只是点几下,应用似乎立刻就和数据库建立了关系,可真正发生的事情远比一条数据库连接复杂。SAP 官方当前文档给出的模型很明确。应用并不是单纯拿到某个 SAP HANA Cloud 数据库实例的主机名、端口、用户名和密码,再自行管理连接。Cloud Foundry 里的服务通过 Service Binding 暴露给应用,应用绑定的是一个由 Service Broker 管理的 Service Instance,而这个 Service Instance 描述了访问某项服务所需要的配置和凭据。对于 SAP HANA Cloud 来说,应用通常通过SAP HANA Schemas HDI Containers这个服务,在目标数据库中获得一个普通schema,或者获得一个hdi-shared类型的 HDI Container。这层抽象非常关键。数据库实例负责提供 SAP HANA Cloud 的计算、存储、SQL 引擎、事务和持久化能力,Service Broker 负责把这项数据库能力包装成应用能够消费的服务实例,Service Binding 再把对应的访问凭据交给应用。到了应用代码这一层,真正被消费的通常已经不是整个数据库实例,而是数据库内部一个经过隔离和授权的持久化空间。从工程角度看,这种设计比直接把数据库管理员账号塞进应用配置文件安全得多,也更适合 Cloud Foundry、MTA、CAP 和持续交付场景。绑定