Cds, Sap hana nın sağladığı değişimlerden, avantajlardan biridir. Cds, veri modellerinin uygulama düzeyi yerine veri tabanı düzeyinde kullanılmasını ve tanımlanmasını sağlayarak performansı artırmayı amaçlar.
Veri modelleri, veri tanımlama dili [DDL] ve veri kontrol dili[DCL] ne dayalıdır.
Hananın en önemli getirisi veri işleme açısından, işlemeyi daha hızlı hale getirmek için veri tabanına direk erişim sağlaması ve ağ sebebiyle gelişebilecek gecikmeleri ortadan kaldırmasıdır. Yoğun veri içeren işlemler code to data paradigmasını kullanarak veri tabanı katmanının kendisinde gerçekleştirilir. Bu kodun işlenmek üzere aşağıya itilmesi anlamına gelir yani code push down denilmektedir. Böyle isimlendirmesinin sebebi ise, veriye ulaşma ve onu hazır etme işlemlerini uygulama sunucusu üzerinde yapmaktansa, veri tabanı seviyesine indirgemesi ve yükü veri tabanına vermesidir.
Code pushdown, tüm verileri uygulama katmanına almak yerine kodu veri tabanı katmanına iten ve gerekli sonuç kümesini alan ve gerekli çıktıyı almak için kodu uygulama katmanına yazan bir paradigmadır.
CDS Viewler sanal veri modelleri olduğundan bir proje veya bir nesne için oluşturulan CDS View'ler başka bir proje veya nesne içinde kullanma ihtiyacı oluşacaktır. Örneğin SPFLI Tablosunun 5 alanını kullanarak bir CDS View oluşturduğumuzu ve başka bir proje için yine SPFLI Tablosunsun 3 alanına daha ihtiyaç duyduğumuzu varsayalım, bu durumda baştan CDS View oluşturmak yerine 'Extend View' seçeneği ile sahip olduğumuz CDS View'e ihtiyaç duyduğumuz alanları dahil edebiliriz. Extend View'lere sadece alan eklenebilir ve 'WHERE' yan tümcesini kullanılamaz.
Cds view lerde de kullanabileceğimiz bazı fonksiyonlar mevcut. Bunlar abap kodlarken kullandıklarırmızdan farklı değildir. Numeric ve string fonksiyonlar gibi birçok fonksiyonlardır. En sık kullandıklarımız concat, replace, substring gibidir.
Cds de farklı olan fonksiyonlardan biri ise CURRENCY_CONVERSION. Elimizdeki tabloda para birimleri farklı olsa bile verdiğimiz parametredeki para birimine dönüşür.
Bunlara ek alarak sql in sağladığı case when yapılarını ve aggregate fonksiyonları da kullanabilir. Bunlar max min avg sum count dır.
CDS View' lerde veri fitrelemek için 'WHERE' yan tümcesini kullanabiliriz. 'Parameters' özelliği ile veri fitrelemesi yapmak mümkündür.
CDS View'ler bir SQL geliştirmesi olup, projelerde verileri anlamlı bir bilgiye dönüştürmek için birden fazla tabloyu birleştirmemiz gerekebilir. CDS view ler de kullandığımız join türleri:
-Inner Join -Left Outer Join -Right Outer Join
Associationlarda aynı joinler gibi veriyi birleştirmemize yarar. Fakat bu kullanım performans dostu bir yaklaşım değildir. Bu performans sorunun üstesinden gelmek için associations kavramı geliştirildi. . Association'lar ile veriler yalnızca kullanıcı onu görmek istediğinde alınır, kullanıcı görmek istemiyorsa veriye erişim olmaz. Kullanılmayan tablolar varsa bu tablolardan veri çekilmez ve tabloya gidilmez. İki çeşit Association türü vardı. Bunlar Ad-Hoc ve Exposed Association olarak adlandırılır. Ad-Hoc Assocation normal Join gibi ikinci tablonun herhangi bir alanını kullanmak üzerine geliştirilen Assocation'lardır.
1)Ad-Hoc Association
4 Farklı kural ile kullanıyoruz. Bunlar cardinality ile gelen farklılıklardır. Cardinality association nın hangi join kısaca hangi kural ile veri çekeceğini söyler. [ .. ] görünümündedir.
max değeri 0 min değeri ise * alamaz!
-[1..1] inner join gibi çalışır
-[1] | [0..1] bulursa 1 tane bulamazsa getirmez
-[0..*] left outer join gibi çalışır 0 veya tüm girişler
-[1..*] left outer join gibi çalışır
-
Exposed Association
Exposed Association ise ilgili View için bir alan olarak görünmez ancak başka bir View aracılığıyla erişim sağlandığı zaman ya da abap programından direk olarak kullanılabilir.
2 farklı tablodaki alanları select çekmek istediğimizde kullanıyoruz. Fakat tablodan çekeceğimiz alanların aynı alanları olması zorunludur. Union sorgularında varsayılan mod Union Distinct'dir ve ikinci sorgudaki yinelenen kayıtları ortadan kaldırır.
Union All da her iki tabloda ortak olan kayıtlar tolere edilmezler. Tekrar eden kayıtlar sorgu çıktısına dahil edilir. Veri duplicate çekilmiş olur.
Ek açıklamalar anlamına gelen annotiation lar cds kullanımımızı zenginleştirir. Bunlar @ ile başlayıp yorum satırı gibi gözükse de cds view e özellikler katar.
@AbapCatalog.compiler.compareFilter: true: Verileri filtreleme davranışını tanımlar, yani önce filtre koşullarını karşılaştırır ve eğer eşleşirlerse veriler getirilir.
Bunu 'false' olarak ayarlarsak 'KEY' kelimesini alanın önüne eklemenize bakılmaksızın, DB tablosu KEY alanları CDS View'ler için de KEY alanlar olarak tanımlanacaktır.
@AbapCatalog.preserveKey: true: DB tablolarında tanımlanmış birden fazla KEY alan olabilir ve bu KEY alanların oluşturduğumuz CSD View'lerin KEY alanları olmasını isteyebiliriz.
@AccessControl.authorizationCheck: #NOT_REQUIRED: CDS View'lere 'Güvenlik' parçası eklemek için kullanılır.
@EndUserText.label: ‘CDS View type #BASIC’: CDS View'ler üzerindeki 'Açıklama' kısmının tayini için kullanılır.
ABAP Annotations:
AccessControl Annotations Analytics Annotations
ClientDependent Annotations AnalyticsDetails Annotations
DataAging Annotations Consumption Annotations
EndUserText Annotations Hierarchy Annotations
Environment Annotations OData Annotations
Search Annotations