Giter Site home page Giter Site logo

cds_view's Introduction

CDS(Core Data Services) View

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.

image

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 View Extension

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.

image

image image

Fonksiyonlar

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.

image

Se16n Görünümü

image

Cds Görünümü

image

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 Parameters

CDS View' lerde veri fitrelemek için 'WHERE' yan tümcesini kullanabiliriz. 'Parameters' özelliği ile veri fitrelemesi yapmak mümkündür.

image

CDS View Join

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

image

image

CDS View Associations

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

[1..] image

image

image

  1. 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.

image

image

Union & Union All

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.

Annotiation

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:

AbapCatalog Annotations ### Component Annotations

AccessControl Annotations                       Analytics Annotations
ClientDependent Annotations                     AnalyticsDetails Annotations
DataAging Annotations                           Consumption Annotations
EndUserText Annotations                         Hierarchy Annotations
Environment Annotations                         OData Annotations
                                                Search Annotations

cds_view's People

Contributors

feyzgit avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.