数据库服务器_新木乃伊百度云网盘_测评

企业应用 虚拟云 浏览

小编:本博客是SAP HANA SPS 09中所有新开发人员功能的大型系列文章的一部分: 核心数据服务(CDS)是SAP HANA中定义和使用语义丰富的数据模型的基础设施。使用数据定义语言(DDL)、查询语

数据库服务器_新木乃伊百度云网盘_测评

本博客是SAP HANA SPS 09中所有新开发人员功能的大型系列文章的一部分:

核心数据服务(CDS)是SAP HANA中定义和使用语义丰富的数据模型的基础设施。使用数据定义语言(DDL)、查询语言(QL)和表达式语言(EL),CDS被设想为包含写入操作、事务语义、约束等。

CDS最终愿景的第一步是在SPS 06中引入hdbdd开发对象。这个新的开发对象使用CDS的数据定义语言来定义表和结构。因此,在SPS 09中,我们可以考虑替换一个HDBTABLE和HDBStudio。我们继续建立在CDS和HDBDD开发工件的基础上。我们引入了重要的新语法以及对这些开发对象的生命周期管理的显著增强。CDS/HDBDD是为了提高生命周期管理功能。在SPS 09之前,云服务器优势,如果对包含数据的表的实体定义进行了大部分更改,则会收到激活错误。开发人员负责将数据从现有表中迁移出来,删除数据,用新结构重新创建数据,然后再将数据迁移回来。这个过程不仅繁琐且容易出错,轻云服务器,而且几乎不可能将这些更改自动传输到下游系统。

在SPS 09中,我们添加了一个自动迁移过程来激活HDBDD工件。这支持多种情况。

在这些情况下,数据被透明地移动到一个影子表中,然后删除/调整源表并迁移回数据。这允许在过去需要大量开发人员工作来保存数据的结构更改。更好的是,此过程在激活时自动发生,因此通过交付单元传输内容将自动触发迁移。

另一个非常常见的请求是多文件支持在HDBDD中。在sps09之前,云端数据库,如果您想在实体或视图之间共享关联或类型定义,您常常被迫使用非常大的单片HDBDD工件。这也意味着无法定义可在整个系统中重用的全局类型。

SPS 09通过添加从一个或多个现有HDBDD文件导入的功能,解决了所有这些问题。所有实体定义、类型,etc然后对目标HDBDD工件可见。

可以引用另一个HDBDD文件中定义的工件("外部"工件)。必须通过using声明显式地使每个外部工件可访问。using声明引入了一个本地名称作为外部工件的别名,该别名由完全限定名标识。外部工件可以是单个对象(类型、实体、视图)或上下文。using声明位于名称空间声明和顶级工件开始之间的文件头中。

例如,您可以在中央HDBDD中创建一些可重用类型:

然后您可以在单独的HDBDD工件中导入和引用这些类型。

SPS 09中的另一个新语法功能是枚举的介绍。这是一种声明多个可能值或域的类型。但是枚举只能在注释中使用。注释的定义与类型定义非常相似。注释定义可以位于上下文中,或者注释定义可以是CDS文件中的单个顶级工件。但是注释不会生成目录工件。

其他常见请求之一是CDS语法支持所有HANA数据类型。通过SPS 09,我们扩展了支持的类型,包括地理空间类型。请注意,对地理空间类型ST\u POINT和ST\u GEOMETRY的支持仍然有限。这些类型只能用于定义类型和实体中的元素。无法定义从CDS实体中选择此类元素的CDS视图。

视图语法接收到几个新的例如,我们现在可以在视图定义中指定OrderBy子句:

我们还可以在视图定义中使用CASE语法:

通常,关联是CDS语法最强大的功能之一。它们将关系定义从视图/连接移到源实体定义中,以便更好地重用/维护和简化总体语法。

非托管关联基于源实体和目标实体的现有元素。未生成任何字段。在ON条件下,只能使用源实体或目标实体的元素;不可能使用其他关联。ON条件可以包含任何类型的表达式—视图中支持的所有表达式也应在非托管关联的ON条件下工作。ON条件中的名称在源实体的范围内解析。目标实体的元素是通过关联本身访问的。

非托管关联也使一些以前不支持的功能成为可能。例如反向链接。CDS规范定义了反向链接关联。这种关联尚不受支持。但是,您可以(稍加努力)通过使用非托管关联来实现相同的效果。

根据CDS规范,可以这样定义标题/项目关系:

同样,也可以使用非托管关联简化多对多关系。CDS定义中介的m-to-n关联,可以使用"via entity"关键字来定义。HDBDD还不直接支持这些类型的关联。但是使用非托管关联,有一个解决方法。

示例:雇员和项目的模型,雇员可以被分配到任意数量的项目。链接表必须明确建模。

最后但并非最不重要的是,我们现在有语法来定义CD/HDBDD工件中的全文索引。

伟大的内容托马斯

嗨托马斯,

关联的确切意图是什么?例如,我可以将记录插入到CDS实体中,尽管这些实体违反了定义的关联(例如:我可以创建城市代码尚未存储在关联城市表中的客户等)。相反,数据云存储,我必须使用显式的SQLscript过程来验证这些数据条目,然后在我的OData服务中引用它们—从而复制整个关联概念。有没有一种更简单的方法来隐式地使用odata服务中的关联,而不需要重复验证?

谢谢,

Trond

文章来源:www.vmchk.com

 
你可能喜欢的: