关于HDI容器机制的说明

2020-09-22 20:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

我正在了解使用HDI容器构建数据库对象的过程。 以下是我要澄清我的理解是否正确的几点,以及关于我不知道的几个问题。 要求您分享您的想法。

很抱歉在下面列出许多要点,但是我认为所有这些要点都与同一概念相关,因此试图将它们合并在一个地方。

说明:-

一个项目有3个数据库模块[HDB modules],在运行时,每个模式分别有3个容器。

i)同样,对于每个HDB模块,将创建如下三个模式

a)容器

b)容器#DI

c)container#OO

每个容器都有一个技术用户(或)应用程序用户[HDI_USER]和数据库用户[USER]。

_______________________________________________________________________

例如,如果一个项目有一个HDB模块,该模块具有一个容器以及与该容器关联的用户。 如果我们试图从该容器的表部分中查询数据,则涉及该容器的技术用户[HDI_USER]从该容器的表部分中读取数据。

________________________________________________________________________

当我们尝试访问此容器之外的对象时,有以下两种情况

i)从其他HDI容器模式访问表-在这种情况下,我们必须创建.hdbrole作为源容器的一部分,并在目标HDB模块中将此hdbrole引用为具有必需特权的.hdbsynonymgrantor文件的一部分,作为.hdbsynonymgrantor文件的一部分。 目标容器,还请在目标HDB模块的.yaml文件中的所需资源中引用.hdbrole

ii)从复制的架构(或非HDI容器架构)访问表-创建用户提供的服务[CUPS],然后使用.hdbsynonymgrantor文件将其分配给此容器的HDI用户。

________________________________________________________________________

反之亦然,就像在非HDI场景中访问HDI容器的表一样,我们需要为此容器创建.hdbrole并将此角色授予容器#DI模式的数据库用户(或)调用过程部分以授予 非HDI方案的必要授权。

问题:-

  1. 可以更改生成的架构(或)容器名称的任何方式吗?
  2. 容器的数据库用户的作用是什么?
  3. 在为跨容器方案创建.hdbsynonymgrantor时,我遇到了一种语法,其中将源容器的GUID指定为文件的一部分,但是如果我们在质量和生产中部署相同的模块,则ID可能会更改- 如果我的理解是错误的,请纠正我。
  4. 从开发人员团队的角度来看,如果团队中有多个成员,则每个用户都将拥有对象作为自己容器的一部分,但是当我们必须打包解决方案以在质量和生产系统中部署时,这是如何工作的 当我们在团队中工作时,该应用程序仍将具有多个容器,这些容器具有跨容器访问(或其他方式)。 4)另外,据我了解,容器机制是为了支持github而引入的,但无法理解这两者之间是如何关联的(或相互影响的),对此有任何见解会有所帮助。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

我正在了解使用HDI容器构建数据库对象的过程。 以下是我要澄清我的理解是否正确的几点,以及关于我不知道的几个问题。 要求您分享您的想法。

很抱歉在下面列出许多要点,但是我认为所有这些要点都与同一概念相关,因此试图将它们合并在一个地方。

说明:-

一个项目有3个数据库模块[HDB modules],在运行时,每个模式分别有3个容器。

i)同样,对于每个HDB模块,将创建如下三个模式

a)容器

b)容器#DI

c)container#OO

每个容器都有一个技术用户(或)应用程序用户[HDI_USER]和数据库用户[USER]。

_______________________________________________________________________

例如,如果一个项目有一个HDB模块,该模块具有一个容器以及与该容器关联的用户。 如果我们试图从该容器的表部分中查询数据,则涉及该容器的技术用户[HDI_USER]从该容器的表部分中读取数据。

________________________________________________________________________

当我们尝试访问此容器之外的对象时,有以下两种情况

i)从其他HDI容器模式访问表-在这种情况下,我们必须创建.hdbrole作为源容器的一部分,并在目标HDB模块中将此hdbrole引用为具有必需特权的.hdbsynonymgrantor文件的一部分,作为.hdbsynonymgrantor文件的一部分。 目标容器,还请在目标HDB模块的.yaml文件中的所需资源中引用.hdbrole

ii)从复制的架构(或非HDI容器架构)访问表-创建用户提供的服务[CUPS],然后使用.hdbsynonymgrantor文件将其分配给此容器的HDI用户。

________________________________________________________________________

反之亦然,就像在非HDI场景中访问HDI容器的表一样,我们需要为此容器创建.hdbrole并将此角色授予容器#DI模式的数据库用户(或)调用过程部分以授予 非HDI方案的必要授权。

问题:-

  1. 可以更改生成的架构(或)容器名称的任何方式吗?
  2. 容器的数据库用户的作用是什么?
  3. 在为跨容器方案创建.hdbsynonymgrantor时,我遇到了一种语法,其中将源容器的GUID指定为文件的一部分,但是如果我们在质量和生产中部署相同的模块,则ID可能会更改- 如果我的理解是错误的,请纠正我。
  4. 从开发人员团队的角度来看,如果团队中有多个成员,则每个用户都将拥有对象作为自己容器的一部分,但是当我们必须打包解决方案以在质量和生产系统中部署时,这是如何工作的 当我们在团队中工作时,该应用程序仍将具有多个容器,这些容器具有跨容器访问(或其他方式)。 4)另外,据我了解,容器机制是为了支持github而引入的,但无法理解这两者之间是如何关联的(或相互影响的),对此有任何见解会有所帮助。
付费偷看设置
发送
2条回答
1楼 · 2020-09-22 21:04.采纳回答

1。 是的,生成的名称可以在其他系统上的传输/创建时更改。 因此,您不应直接与生成的名称进行交互。

2。 数据库用户是容器架构内任何对象的所有者/创建者。

3。 您应该使用SERVICE_REPLACEMENTS选项来使用别名,而不是对实际的外部容器或用户提供的服务名称进行编码。 请参阅openSAP课程中的示例: https ://github.com/SAP/com.sap.openSAP.hana5.example/blob/master/mta.yaml

4。 为什么会有多个容器? 团队中的每个人都应该真正创建一个单独的容器。 每个人都签出他们的项目,并有一个单独的容器实例,但是当您在Git中将所有源合并回去,然后构建MTA时,应用程序的下游安装将只有一个容器。

绿领巾童鞋
2楼-- · 2020-09-22 21:05

我个人会做类似方法2的事情。我认为您应该在这里将所有基础对象(填充了数据的那些基础对象)和使用量(计算视​​图)分离到单独的容器中。 这样,您可以将基础容器部署到开发空间中,而其他人可以使用不指向开发人员的沙盒化容器临时版本的同义词对其进行测试。

一周热门 更多>