前言
文章翻譯自Tushar Sharma的文章,,轉(zhuǎn)載請(qǐng)注明原作者和譯者!
在SAP發(fā)展到SAP HANA版本之后,,SAP內(nèi)部的技術(shù)正在快速地變化,,SAP開發(fā)業(yè)務(wù)應(yīng)用程序的方式已經(jīng)發(fā)生了范式轉(zhuǎn)變(根本性改變)。
但經(jīng)久不變的法則是:盡你可能的去獲取數(shù)據(jù)庫操作的最優(yōu)性能,。
幾個(gè)月前,,當(dāng)我開始了解學(xué)習(xí)ABAP CDS視圖時(shí),,我不得不搜索大量來自不同作者的博客和頁面,駁雜且費(fèi)時(shí)費(fèi)力?,F(xiàn)在,,我想為像我這樣開始學(xué)習(xí)ABAP CDS視圖的初學(xué)者發(fā)布一個(gè)博客系列,幫助他們?nèi)腴T,。
Let's Start !!
介紹
數(shù)據(jù)模型是應(yīng)用程序開發(fā)的基石,。它們?yōu)榭缦到y(tǒng)定義和格式化數(shù)據(jù)庫內(nèi)容提供了一種標(biāo)準(zhǔn)化方法,使不同的應(yīng)用程序能夠共享相同的數(shù)據(jù)——降低開發(fā)成本,,加快上線時(shí)間,,并提高質(zhì)量和性能。
那些熟悉ABAP領(lǐng)域應(yīng)用程序開發(fā)的人對(duì)SAP NetWeaver Application Server AS ABAP中包含的傳統(tǒng)數(shù)據(jù)建模工具應(yīng)該并不陌生——特別是存儲(chǔ)了對(duì)象定義的ABAP數(shù)據(jù)字典(DDIC),,例如abap程序中用到的數(shù)據(jù)庫表和視圖,。而隨后出現(xiàn)了SAP HANA和將數(shù)據(jù)密集型邏輯下推到數(shù)據(jù)庫層的新范式。
虛擬數(shù)據(jù)模型(VDM)的概念是幾年前在HANA Live中引入的,,SAP HANA Live是一個(gè)在套件表之上的虛擬數(shù)據(jù)模型,,它使用被稱為計(jì)算視圖的本地SAP HANA SQL視圖進(jìn)行實(shí)時(shí)操作報(bào)告。
這帶來了一些挑戰(zhàn):
- 它沒有正確地支持層次結(jié)構(gòu),。層次結(jié)構(gòu)幫助企業(yè)通過不同的層以樹形結(jié)構(gòu)分析數(shù)據(jù),,并具有向下鉆取的功能。例如,,時(shí)間層次結(jié)構(gòu)由諸如財(cái)政年度,、財(cái)政季度、財(cái)政月份等級(jí)別組成,。
- 一個(gè)高質(zhì)量的數(shù)據(jù)模型應(yīng)該為數(shù)據(jù)提供單一的定義和格式,。它應(yīng)該是清晰的、明確的,、可重用的,、靈活的,甚至是可擴(kuò)展的數(shù)據(jù)模型,。
- 由于HANA Live虛擬數(shù)據(jù)模型是在HANA數(shù)據(jù)庫層定義的,,這導(dǎo)致用于事務(wù)處理的業(yè)務(wù)套件和用于操作報(bào)告的HANA數(shù)據(jù)庫之間存在安全角色的重復(fù)。
現(xiàn)在我們有一些問題要思考:
1,、如何捕獲數(shù)據(jù)庫中數(shù)據(jù)模型的語義,,以便模型可以被不同的用戶輕松重用,例如OData客戶端和OLAP工具?
2,、你如何擴(kuò)展元模型來服務(wù)你的應(yīng)用程序?
3,、你說的這些不可能。
也許吧,,如果我們沒有核心數(shù)據(jù)服務(wù)(CDS)的話,。
''Core Data Services to build design-time data-persistence models''
“構(gòu)建設(shè)計(jì)階段數(shù)據(jù)持久性模型的核心數(shù)據(jù)服務(wù)(CDS)”
它是一個(gè)基礎(chǔ)結(jié)構(gòu),,數(shù)據(jù)庫開發(fā)人員可以使用它來創(chuàng)建應(yīng)用程序服務(wù)向UI客戶端公開的底層(持久)數(shù)據(jù)模型。[鏈接]
為了利用SAP HANA進(jìn)行應(yīng)用程序開發(fā),,SAP引入了一個(gè)新的基礎(chǔ)數(shù)據(jù)建模,,稱為核心數(shù)據(jù)服務(wù)(CDS)。使用CDS,,數(shù)據(jù)模型是在數(shù)據(jù)庫服務(wù)器上定義和使用的,,而不是在應(yīng)用程序服務(wù)器上。CDS還提供了超越傳統(tǒng)數(shù)據(jù)建模工具的功能,,包括對(duì)概念建模和關(guān)系定義,、內(nèi)置功能和擴(kuò)展的支持。最初,,CDS僅在SAP HANA的設(shè)計(jì)時(shí)和運(yùn)行時(shí)環(huán)境中可用?,F(xiàn)在,CDS概念在SAP NetWeaver中作為ABAP也得到了充分的實(shí)現(xiàn),,使開發(fā)人員能夠在將代碼執(zhí)行下推到數(shù)據(jù)庫的同時(shí),,使用ABAP開發(fā)工具在ABAP層工作。
CDS簡(jiǎn)化和統(tǒng)一了定義和使用數(shù)據(jù)模型的方式,,不管你用的是那種消費(fèi)技術(shù),。從技術(shù)上講,它是對(duì)SQL的增強(qiáng),,為您提供了一種數(shù)據(jù)定義語言(DDL),,用于定義語義豐富的數(shù)據(jù)庫表/視圖(CDS實(shí)體)和數(shù)據(jù)庫中的用戶定義類型。包括:
- 用于數(shù)據(jù)模型中的計(jì)算和查詢的表達(dá)式
- 概念層次上的關(guān)聯(lián),,在查詢中使用簡(jiǎn)單的路徑表達(dá)式代替連接
- 使用附加的(domain specific特殊域)元數(shù)據(jù)來豐富數(shù)據(jù)模型的注釋,。[元數(shù)據(jù)是“描述數(shù)據(jù)的數(shù)據(jù)”。元數(shù)據(jù)可以為數(shù)據(jù)說明其元素或?qū)傩裕Q,、大小、數(shù)據(jù)類型等),,或結(jié)構(gòu)(長(zhǎng)度,、字段、數(shù)據(jù)列),,或其相關(guān)數(shù)據(jù)(位于何處,、如何聯(lián)系、擁有者),。]
ABAP和HANA平臺(tái)都支持CDS !
事實(shí)上,,在我看來CDS是SAP近年來在數(shù)據(jù)建模領(lǐng)域最野心勃勃,最令人興奮的發(fā)展,。你終于可以以相同的方式(語法,、行為等)定義和使用數(shù)據(jù)模型,,不管是在ABAP平臺(tái)還是在HANA平臺(tái)。當(dāng)我想到CDS時(shí),,腦海中總會(huì)出現(xiàn)這樣一句話:“一個(gè)數(shù)據(jù)模型可以統(tǒng)治所有的數(shù)據(jù)”,。
除此之外,Horst Keller的博客描述了兩種不同風(fēng)格的CDS,。
Core Data Services – One Concept, Two Flavors
在瀏覽了上述博客之后,,我們了解到CDS可以以兩種不同的方式編寫,并使用SAP 在NetWeaver AS ABAP 7.4 SP5版本中為了使ABAP開發(fā)人員能夠利用HANA功能而引入的“代碼下推”(Code Pushdown)技術(shù),。在代碼下推技術(shù)中,,所有的計(jì)算都在數(shù)據(jù)庫層而不是應(yīng)用層執(zhí)行,這使得數(shù)據(jù)能夠快速地檢索,,減少應(yīng)用程序的執(zhí)行量,。
架構(gòu)概述
CDS的架構(gòu)如下所示:
- 數(shù)據(jù)庫層——這一層可以配置大多數(shù)流行的數(shù)據(jù)庫,如Oracle, SAP HANA等,。但為了得到最好的效果,,推薦使用SAP HANA。
- 應(yīng)用層——這一層包含ABAP Backend 和 SAP Gateway,,使用RFC調(diào)用進(jìn)行集成,。
- 表示層——這一層包含SAP Fiori用戶界面,用于向最終用戶公開應(yīng)用程序,。
CDS版本
下面是關(guān)于ABAP特定版本的CDS功能變更的概述,。
詳細(xì)可參考-Feature Matrix
更多的變化可以自行查閱官方文檔
SAP平臺(tái)CDS的可用性
- SAP NetWeaver 7.50, SP01, or higher.
- SAP NetWeaver 7.4 SP05
- SAP HANA SPS6
- SAP Business Suite EHP7 (Suite on HANA)
- S/4HANA
- SAP Business Warehouse 7.3
CDS其他的好處
- 語義豐富的數(shù)據(jù)模型:實(shí)體關(guān)系模型,本質(zhì)上是聲明性的,,非常接近概念的概念,。領(lǐng)域特定語言(DDL、QL,、DCL),。陳述性的,接近概念思維的,。
- CDS完全基于SQL:任何“標(biāo)準(zhǔn)SQL”特性都可以直接使用,,比如連接、內(nèi)建函數(shù)等,。
- 完全兼容任何數(shù)據(jù)庫:CDS是Open SQL視圖中生成到管理的,,并集成到SAP HANA層。所有主要數(shù)據(jù)庫都支持這些視圖,。
- 支持注釋:CDS語法支持特定領(lǐng)域的注釋,,可以被其他組件輕松評(píng)估,比如UI,、analytics和OData服務(wù),。
@AnalyticsDetails.aggregrationBehaviour
SUM()
Substring() [SQL functions]
- 關(guān)聯(lián):視圖之上的視圖的簡(jiǎn)化定義,。沿著關(guān)系導(dǎo)航的路徑表達(dá)式。
- 可擴(kuò)展性:我們可以使用將自動(dòng)添加到CDS視圖及其使用層次結(jié)構(gòu)中的字段來擴(kuò)展sap定義的CDS視圖,。
在模型級(jí)別上擴(kuò)展
通過注釋在元模型級(jí)別上
CDS實(shí)體和它們的元數(shù)據(jù)是可擴(kuò)展的,,并且最佳地集成到ABAP數(shù)據(jù)字典和ABAP語言中。
后續(xù)
參考
|