ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 141
Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 49
Abonament PDF

SAP HANA ca Platformă

Bogdan Bucur
SAP ABAP Developer @ Siemens



PROGRAMARE

În ultimul număr am vorbit despre inovații, hardware și software, care au dus la apariția noului produs al firmei din Walldorf, și anume SAP HANA. În acest număr vom analiza modul cum toate aceste inovații, în combinație cu SAP HANA Studio, un IDE (Integrated Development Enviroment) nou de la SAP, ajută la reducerea timpilor de implementare a proiectelor și desigur la reducerea timpilor de execuție a aplicațiilor bazate pe HANA.

Code Pushdown

Pentru ca aplicațiile să profite de puterea de procesare oferită de HANA, cel puțin o parte din logica aplicației, ideal toată logica, să fie executată la nivelul bazei de date. Acest lucru este important pentru calcule complexe ( SUM, AVG, COUNT, etc. ) cu un volum mare de date, care de obicei durează mult. În acest fel, nu suntem obligați să transferăm volume mari de date, fapt ce reduce performanța în mod considerabil. Acest proces de "transfer" al codului din application layer în database layer se numește Code Pushdown, sau principiul Code-to-data. Cu alte cuvinte, nu transferăm datele din baza de date către aplicație, pentru a fi procesate, ci transferăm logica aplicației în baza de date.

Până acum, aplicațiile SAP foloseau principiul Data-to-code, dar aplicațiie optimizate sau dezvoltate special pentru HANA folosesc principiul Code-to-data. Cu acest nou principiu, code-to-data, volumul de date transferat este menținut la un nivel minim. Vezi figura 1.

Fig. 1. Code-to-data și data-to-code

Database ca White Box

Sistemele ERP SAP ( Enterprise Resource Planning ) pot rula pe mai multe baze de date de la producători diferiți, ca IBM DB2, Oracle, Sybase ASE, etc. . Datorită arhitecturii sistemului, programatorii nu trebuie să țină cont de baza de date pe care rulează aplicațiile, deoarece există o componentă software, numită Database Iterface, care "traduce" instrucțiunile CRUD ( Create, Read, Update și Delete) din aplicații, în instrucțiuni specifice fiecărei baze de date. Aceasta înseamnă că baza de date este privită ca un Black Box , detalii despre baza de date nu sunt cunoscute de către programatori și că toate aplicațiile rulează pe sisteme SAP indiferent de baza de date.

Cu toate acestea, dacă vrem ca o parte din logica aplicației să fie executată în baza de date, în cazul nostru HANA, asemenea detalii trebuie cunoscute. Dacă vrem să beneficiem de SAP HANA și să atingem performanțe ridicate, baza de date trebuie să devină un White Box, adică trebuie să știm ce se întâmplă în interior.

Un nou IDE

În trecut, ca programatori ABAP, foloseam ABAP Workbench, bazat pe SAP GUI, pentru dezvoltarea, modificarea și testarea programelor. Din nevoia de a integra mai multe limbaje de programare ca ABAP, SQLScript( folosit pentru HANA ), HTML, CSS, JavaScript (ultimele 3 fiind folosite pentru SAP UI5) cei de la SAP au creat un nou IDE, și anume SAP HANA Studio, bazat pe Eclipse 3.8. HANA Studio este folosit și pentru administrarea bazei de date.

În HANA Studio, administratorii sau programatorii se pot conecta simultan la mai multe servere, cu utilizatori diferiți. Acest lucru este benefic în cazul în care lucrăm la proiecte diferite pentru clienți diferiți. În figura de mai jos putem vedea cum, din HANA Studio ne putem conecta, la mai multe Sisteme HANA (SID - System ID) folosing diferiți User-i(SYSTEM, SAP_SUPPORT, HANADB, etc.).

Fig. 2. Mai multe Sisteme cu diferiți utilizatori în HANA Studio

AMDP

ABAP Managed Database Procedure - este o nouă caracteristică în AS ABAP( Application Server ABAP) care ne permite să scriem proceduri de stocare direct în ABAP. Aceste proceduri pot fi private ca funcții stocate și executate în baza de date. Limbajul folosit pentru ele este SQL Script. Mai exact codul SQL Script este scris în metodele claselor și executat în HANA.

O condiție ca într-o clasă să putem implementa AMDP-uri este ca clasa respectivă să conțină interfața IF_AMDP_MARKER_HDB. Vezi Figura 3.

Fig.3. Definiția clasei

Mai jos am creat o procedură stocată pentru SAP HANA ( FOR HDB - HANA Database) folosind limbajul SQLScript.

Fig. 4. Implementarea clasei

AMDP-urile au fost introduse pentru a ajuta programatorii la urmarea principiului Code Pushdown sau Code-to-Data.

CDS

Core Data Services este o colecție de domain-specific languages (DSLs) și servicii pentru definirea și consumarea modelelor de date. Vezi Figura 5.

Aceste limbaje sunt:

Fig. 5. Core Data Services

Cu alte cuvinte, Core Data Services este o îmbunătățire adusă limbajului SQL pentru definirea, manipularea și utilizarea modelelor de date în aplicații HANA.

View-uri CDS sunt definite în fișiere sursă DDL

(R3TR DDLS) folosind instrucțiunea "DEFINE VIEW".

View-urile SQL sunt reprezentări ale entităților View în baza de date.

Aceste CDS Views pot fi create doar cu ajutorul Tool-urilor pentru ABAP Development în SAP HANA Studio.

Un exemplu

Să presupunem că firma Siemens AG are o companie fiică Siemens Logistics care are ca activitate livrarea de colete între companiile Siemens. Atunci, în baza de date a sistemului ERP, ar exista o tabelă cu informații despre pachetele livrate în anul fiscal 2015. Pentru simplitate, am ales ca tabela noastră să conțină doar cinci câmpuri. Vezi Figura 6.

Datele pentru câmpuri au fost generate, pe cât posibil aleatoriu. Astfel pentru câmpul Package Weight(PACK_WEIGHT) avem valori generate în intervalul 1 - 100. Câmpul Weight Unit(WEIGHT_UNIT) ia doar 3 valori, și anume Kilogram(KG), Uncie(OZ) și Livră(LB). Pentru Delivery Price(DELIVERY_PRICE) am generat valori între 1 și 10,000 iar pentru Price Currency avem următoarele valori: USD(Dolar American), EUR(Euro), JPY(Yen Japonez), GBP(Liră Sterlină), RON(Leu Românesc), CAD(Dolar Canadian), AUD(Dolar Australian) și CHF(Franc Elvețian). În total, am generat 2 milioane de înregistrări.

Fig.6. Tabela cu coletele livrate

La sfârșitul anului fiscal, noi ca programatori, avem de conceput și implementat un program care să returneze suma, în USD, a prețurilor de livrare a tuturor coletelor. Acest lucru implică selectarea tuturor datelor din baza de date, parcurgerea lor, conversia în USD și calcularea sumei totale. Folosind un sistem SAP, cu o bază de date Oracle, executare programului a durat 14,42 secunde.

Pe un sistem SAP , având o bază de date HANA, avem posibilitatea de a defini un CDS View și prin acest View putem să urmărim principiul Code-to-Data, astfel reducând considerabil timpul de execuție.

Codul sursă a View-ului CDS arată în felul următor:

@AbapCatalog.sqlViewName: 'ZCDS_USD_V'
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Package delivery costs in USD'

define view Zcds_Pack_Usd as select 
      from zcj_siemens_pack
{
key pack_oid,
@Semantics.currencyCode
 price_curr,

@Semantics.amount.currencyCode: 'price_curr'
 delivery_price,

case price_curr
when 'EUR' then cast(delivery_price as abap.fltp ) * 1.1375
when 'JPY' then cast(delivery_price as abap.fltp ) * 0.009
when 'RON' then cast(delivery_price as abap.fltp ) * 0.25
when 'CAD' then cast(delivery_price as abap.fltp ) * 0.77
when 'GBP' then cast(delivery_price as abap.fltp ) * 1.44
when 'AUD' then cast(delivery_price as abap.fltp ) * 0.76
when 'CHF' then cast(delivery_price as abap.fltp ) * 1.03
else delivery_price
end as delivery_price_usd
}

group by
price_curr,
delivery_price,
pack_oid

După activarea codului sursă, avem un View, cu următoarele câmpuri:

Fig.7. View-ul cu prețurile de livrare convertite

Având un câmp cu prețul în USD, pentru a calcula suma totală, putem scrie următoarea interogare: "SELECT SUM(DELIVERY_PRICE_USD) …".

Folosind un sistem SAP, cu o bază de date HANA, executarea programului a durat 0,04 secunde. Calculând raportul dintre cei 2 timpi de execuție obținem un factor de 360,5. Această performanță am obținut-o deoarece calcularea prețurilor, în USD, a fost făcută la nivelul bazei de date, nefiind nevoiți să transferăm acele 2 milioane de înregistrări în application layer, dar transferând în schimb logica de convertire în baza de date, urmând principiul Code-to-Data.

După cum remarcăm, doar schimbarea bazei de date cu o bază de date HANA nu implică neapărat la o performanță ridicată. Este nevoie și de o convertire a aplicațiilor cu probleme, legate de timpii de execuție. Pe lângă toate acestea, trebuie avut în vedere și prețul migrării unui sistem vechi pe o bază de date HANA, căci după cum știm toate tehnologiile noi costă.

LANSAREA NUMĂRULUI 141

Analiza de business (BA)

miercuri, 27 martie, ora 18:00

sediul Accesa

Facebook Meetup StreamEvent YouTube

NUMĂRUL 140 - Generative AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • Yardi
  • Colors in projects

INTERVIURI VIDEO