Herkesin merak ettiği SAP HANA mimarisini ele alacağım bu makalede, çoğunlukla kulaktan kulağa ilerleyen bir öğrenme var ve bende konuyu  teknik detaylarıyla birlikte anlatmak istedim. Her SAP danışmanına veya ilgilenenlere faydalı olacak şekilde bahsetmeye çalışacağım.

SAP HANA Mimarisi

SAP HANA mimarisini okumaya başlamadan önce genel süreci canlandırabilmek adına yukarıdaki görseli incelemenizi öneririm. Konuyu kavramanız için oldukça yardımcı olacaktır. En temel Server-Client mimarisi üç adım, veriyi tutma, işleme ve gösterme üzerine kurulmuştur. HANA da yine bu konuyu farklı bir bakış açısıyla ele almıştır.

Index Server

HANA’nın kalbi gibi çalışan bir bileşenimiz var ve adı da “Index Server“. Index server ne yapar? Index server anlık olarak o anki güncel verilerini tutmanızı sağlarken aynı zamanda bu verileri işlemenizi, hesaplar yapmanızı ve filtrelemenize de imkan sağlamaktadır. SQL ve MDX komutlarının çalıştırılması ve yetkilendirmeleri kontrol edip, “Session” yönetimini de yapar. Bir veri işlenmek veya güncellenmek istediğinde ilgili yetkiler, oturumlar dahilinde tüm süreç bu katmanda yönetilmektedir.

Persistance Layer

Bu katman en dip seviyede işlemlerin veritabanı ile ilişkisini yönetir. Veri sorgulama, yazma veya güncellemesi gibi işlemlerin en küçük birim dahilinde kontrolünü ve doğru bir şekilde yürütülmesini sağlar. Teknik olarak “Database Commit and Rollback” sürecini yürütür. Verilerin en son hangi halinin aktif olduğunu, hangi taleplerin hangi sırayla işleneceğine ve bu işlemlerin başarılı bir şekilde tamamlamasından da sorumludur diyebiliriz. Bu noktada gelen işlemler ya tamamen gerçekleştirilir ya da geri alınır. Örneğin, “Persistance Layer” seviyesine gelen bir işlem üç tabloyu etkiliyor olabilir. İşlem sonucunda üç tabloda birden değişikliklerin tamamlanmış olması gerekiyor. Ancak en az bir tabloda bile hata ile karşılaşılırsa, bu durumunda “Persistance Layer” tüm işlem sürecini en son aktif haline geri getirip ilgili işlemi iptal eder.

Name Server

“Name Server” bir mahallenin muhtarı gibi düşünebilirsiniz. SAP HANA sistemi üzerinde dağıtım sistemi gibi çalışmaktadır. Aynı zamanda hangi bileşenin hangi katmanda olduğu ve o an çalışıp çalışmadığı ile ilgili bilgilere sahipken, sistem üzerinde tutulan verilerin nerede olduğuna dair verilerin tutulduğu katmandır.

Preprocessor Server

Index Server, karakter işlemeleri(Text Processing) için “Preprocessor Server” katmanını kullanmaktadır. Karakterler üzerinde analiz veya arama yapabilen ve ilgili sonuçları alıcıya gönderen bir yapıya sahiptir.

Session and Transaction Manager

Veritabanı işlemleri için ilgili katmanlara veya birimlere bildirim yapmaktadır. Bir işlem “Commit” veya “Rollback” sürecine girdiyse, Session and Transaction Manager bu konuyla ilgili SAP HANA mimarisi içerisinde aksiyon alması gereken birimlere ilgili bildirimleri yapmaktadır.

SAP HANA Mimarisi

Session Management

HANA veritabanı kullanıcılarının sisteme bağlanması, giriş yapabilmesi ve SQL komutlarıyla sisteme erişmesine olanak sağlayan bir katmandır. Sisteme giren kullanıcılar SAP HANA sistemi tarafından yetkilendirme sürecine dahildir ancak harici kaynaklardan da yetkilendirme süreçleri tasarlanabilir.

Authorization Manager

Yetkilendirmelerin yönetildiği katmandır. Tüm SAP HANA sistemi içerisindeki bileşenlere erişim yetkilendirmelerinden, veritabanı tablolarına okuma/yazma yetkilerine kadar tüm işlemler bu katmanda yürütülmektedir. SAP HANA View(Analytic View, Attributes View vb.)  yetkilendirmeleri de buradan yönetilmektedir.

Metadata Manager

Metadata dosyaları HANA dışında da bildiğiniz gibi kimlik bilgilerinin tutulduğu dosya olarak bilinir. SAP HANA içerisindeki “Metadata Manager” katmanı yine aynı görevi daha kapsamlı ve paket haline getirilmiş bir şekilde karşımızda. SAP HANA sistemi üzerindeki tüm nesnelerin, şemaların, tabloların kimlik bilgilerini tutan ve bunların yönetimini sağlayan bileşendir.

Request Processing / Execution Control

İstemci(Client) tarafından gönderilen taleplerin veya işlemlerin, ilgili birimlere veya bileşenlere yönlendirmesini yapan bileşendir. “Execution Control” ise farklı katmanlar arasındaki çift taraflı iletişimi sağlayan birimdir. Bildirimlerin gönderilmesi, işlemler sonucundaki mesajların iletilmesi gibi görevleri bulunmaktadır.

SQL Parser

Gelen SQL sorgularını analiz eder ve işleme alır.

SQL Script

SAP HANA sisteminin kendine ait bir SQL dili bulunmaktadır. Bu dil standard SQL dilinden genişletilmiş bir dildir. SAP HANA üzerinde yapılan optimizasyonlar için önemli bir rol oynamaktadır. Örneğin veritabanı tabloları üzerinde çalışan fonksiyonlar.

MDX (Multidimensional Expressions)

MDX küpler üzerinde çalışan bir sorgu dilidir. OLAP küpleri üzerinde verileri filtreleyebilir, analiz edebilir. Bu sorgular aynı zamanda “Calculation Engine” katmanına da gönderilebilir.

Calculation Engine

SAP HANA üzerinde “SQLScript” ve “Planning Operations” bu bileşeni ortak alt yapı olarak kullanmaktadır.  “Calculation Engine”, “Calculation” modelleri için plan yaratmaktadır aynı zamanda kullanıcı özelindeki ilgili fonksiyonları da çalıştırmaktadır.

Relational Engines

SAP HANA sisteminin devrim olarak kabul edilmesinin sebebi bildiğiniz gibi “in-memory” olarak çalışmasıdır. “Relational Engines” ise “in-memory” olarak satır(row) ve sütun(column) bazlı yönetim sağlamaktadır. Tablolar satır veya sütun bazında ayrıştırılır ve ilgili kayıtlar organize edilir. Tablolarda arama, güncelleme veya kayıt ekleme gibi işlemler “Request Processing / Execution Control” bileşeni tarafından “Relational Engines” bileşenine yönlendirilir ve tablo tipine göre “Row Store” veya “ColumnStore” üzerinde işleme alınır.