0% found this document useful (0 votes)
11 views28 pages

SQL Nedir?: DWH'cının Bilmesi Gereken Şeyler

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views28 pages

SQL Nedir?: DWH'cının Bilmesi Gereken Şeyler

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

DWH'cının Bilmesi Gereken Şeyler

Bu makalenin amacı konuyu öğretmek değil dünyamızda nelerin olduğu hakkında kısaca bilgi
vermek aslında. O yüzden bu makale daha çok soru sorabileceği etrafında kimse olmayan ve
neyi bilmediğini bilmeyen developer arkadaşlar için yazıldı ki bende geçmişte bunlardan
biriydim,umarım faydalı olur😊

SQL Nedir?
SQL,Structured Query Language ifadesinin kısaltmasıdı[Link] tarafından 1970 yılında
database sistemlerinin yönetimi için oluş[Link] programlama dili değildir.

Database’mizdeki nesneleri ve verilerinizi yönetmek için kullanırı[Link] ifadeleri alt


kümelere ayrılarak gruplandırılmıştır.

 DDL İşlemleri:Data Definition Language ifadesinin kısaltmasıdı[Link]


tanımlanmasına ait işlemleri [Link] işlemlerde data manipülasyonu değil dataların
tutulduğu DB,Şema,Tablo,View,Partition gibi DB elemanlarının tanımlanma
işlemlerini yapılı[Link] gruba giren SQL
ifadeleri CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME’dir.
 DML İşlemleri:Data Manipulation Language ifadesinin kısaltmasıdı[Link]
manipülasyonu ile ilgili işlemleri [Link] gruba giren SQL ifadeleri
SELECT,INSERT,UPDATE,DELETE,MERGE’dir.
 DCL İşlemleri:Data Control Language ifadesinin kısaltmasıdı[Link] komutlarla
herhangi bir DB nesnesine yetki tanımlaması yapılıp geri alı[Link] tabloya
SELECT yetkiniz olabilirken INSERT yetkiniz olmayabilir bu işlemler ilgili
komutlarla yö[Link] gruba giren ifadeler GRANT,REVOKE’dir.
 TCL İşlemleri:Transaction Control Language ifadesinin
kısaltmasıdı[Link]ığınız DB’de autocommit özelliği açık değilse yaptığınız DML
işlemleri bir nevi askıda durur ve sizin son bir onay vermenizi ya da hata varsa geri
almanızı [Link] komutlarla onay verip veya geri alabilirsiniz iş[Link] gruba
giren ifadeler COMMIT,ROLLBACK’dir.

Bu bilgiler ışığında SQL’in görevleri şunlardır:


 Nesne oluşturma,değiştirme,silme
 Veri sorgulama
 Tabloya satır ekleme,güncelleme,silme
 Yetki tanımlamalarını yapma
 Veri tutarlılığını sağlama

HÜSEYİN ALBAYRAK
Peki bu SQL nerede çalışır bu çalıştığı yeri tanıyalım.

Database Nedir?
Verilerinizi saklamak ve rahatça yönetmek için kullanılan bir yazılımdı[Link] çok farklı
database modeli vardır fakat günümüzde en çok kullanılan model olan RDBMS’tir.(Relational
Database Management System).Genellikle bu yazılımlar her zaman çalışır vaziyette olan
SERVER olarak nitelendirdiğimiz güçlü bilgisayarlar üzerinde kurulu [Link] SERVER’da
birden çok Database’i kurulu olabilir

Database’lere örnek olarak:Oracle,Postgresql,SQL Server,Mysql vb verilebilir.

NOSQL,RDBMS,Object Oriented,Network vb bir çok farklı mimaride kurgulanmış


databaselerde mevcuttur.

Ama genelde en çok kullanılan RDBMS ve NoSQL DB’lerdir.

Aynı zamanda özellikle cloud DWH ürünleri row base değil column
base’[Link],Synapse SQL Pool vb.

Şimdide sık kullanılan Database nesnelerini tanıyalım.

Tablo Nedir?
Database’de verileri tutan nesnelerdir.

Databaseler ilgili verileri,yarattığınız tabloların satır ve sütunlarında saklar.

Satır(Row Or Record):Yatay olarak gördüğümüz kendine özgü veri kümesi bir alt veya üst
satırla hiç bir ilişkisi yoktur kendine ait verileri tutar.

Sütunlar(Column Or Field):Dikey olarak gördüğümüz satıra ait bilgileri özelleştirilmiş


alanlarda saklamamıza yardımcı olur.

Her satır bir işlemi ifade ederken her sütun bu işlemin özelliklerini ifade eder.

HÜSEYİN ALBAYRAK
View Nedir?
Bir tablo gibi çağırabildiğiniz fakat fiziksel olarak veri tutmayan [Link]ım şekli
olarak bir tablodan farkı [Link] scriptinizin döndürdüğü verileri bir çok yerde
kullanacaksanız ideal bir çözümdü[Link] kullanılırken dikkat edilmesi gereken en önemli
konu View’i yaratmak için kullandığınız SQL scriptinizdeki tabloların verisi değiştiğinde
View’inizde döndürdüğü veriler otomatik olarak değişecektir.

Bir view kullandığınızda bu View’e her eriştiğinizde içerisindeki SELECT ifadesini her
seferinde çalıştırıyorsunuz demektir ve bu sorgunuz kötü performans gösteren bir sorguysa
veya çok büyük veri seti döndürüyor ise kesinlikle kullanmamanız gereken bir yö[Link]
amaçla Materialized View’ler yaratılmıştır veya bir tabloya ilgili data setini basmanız
performans açısından çok daha kullanışlı olacaktır.

Materalized View Nedir?


View ile benzer bir kullanımı vardır.İçerisinde SELECT ifadesini tutar ve bunun döndürdüğü
data setini kullanıcıya gö[Link] bu SELECT ifadesini fiziksel olarak bir tabloda tutar ve
sizin belirlediğiniz bir çalışma aralığına göre datayı bu tabloda gü[Link]ısıyla View’e
her sorgu attığınızda çalışmaz bu da ciddi performans kazancı sağ[Link] olarak ise en
güncel data değil Materalized View’in en son çalıştığı dataya ulaşmış [Link]’da
kullanılan bir yapıdır.

External Table Nedir?


Bir Flat File'ı DB'inizde tablo gibi işleminize olanak sağlar.İki tip driver yardımıyla Flat
File'lar tablolara dönüştürülür bunlar ORACLE_LOADER ve ORACLE_DATAPUMP'dır.

Tabloyu yaratırken kullandığımız file'lar CSV,TXT,XLSX vb ise ORACLE_LOADER,binary


formatlı ise ORACLE_DATAPUMP seçilmelidir.

Oluştururken tanımlamalarını yaptığımız parametrelerden bahsedelim.

TYPE: Oracle_Loader veya Oracle_DataPump

DEAULT DIRECTORY:Bir path değil bir directory'dir.İnput ve Output dosyalarının nerede


tutulacağına karar verir.

ACCESS PARAMETERS:Verilere nasıl ulaşacağımızı tanımlamızı sağlar.

LOCATION:Hangi file olduğunu belirttiğimiz kısım.

REJECT LIMIT:Bunu 0 tutarsanız verdiğiniz ACCESS PARAMETERS'lara veya bir üstte


tabloyu CREATE ederken belirttiğiniz sütunların formatlarına uymayan bir kayıt geldiğinde

HÜSEYİN ALBAYRAK
tablonuz hata döndü[Link] derseniz dosya daki tüm veriler hata alsada tabloyu
kullandığınız SQL ifadeleri çalışmaya devam eder.

Daha detay bilgiler için :

[Link]

Index Nedir?
İndexler tablodaki verilere hızlı bir şekilde ulaşmanıza olanak sağ[Link] veya viewler
için yaratılabilir.İki tip index vardır.İndexleme işlemi yaptığımızda bu sütunlara ait veriler
için bir işaretleyici oluştururuz ve bu işaretleyici sayesinde verilere hızlıca ulaşırız.
 Clustered İndex:Sıralanmış [Link] tabloda Primary Key olarak
tanımlanan genelde Id olarak ifade edilen sütun için otomatik Clustered Index
oluş[Link] tabloda bir tane PK olanı olacağında sadece bir tane de Clustered Index
olabilir.İlgili sütun Auto Increment olacağından tüm verilerin sırasını biliyor ve ilgili
veriyi bulup hızlıca getiriyor olarak düşünebiliriz.
 Non-Clustered Index:Sıralanmamış [Link] çok olabilir.İşlem
sonucunda verinin nerede olduğuna karar verdiği dizinleri disk üzerinde ilgili tablo
dışında bir yerde [Link] da disk maliyetlerimizi arttıracaktı[Link]-Clustered Indexler
Clustered indexlere göre daha yavaş çalışırlar.

Select hızımızı arttırırken Indexli tablolarda Update,Delete ve Insert işlemlerinin daha yavaş
süreceğini unutmamalıyız.

Hemen hemen her zaman aynı sütunları kullanıyorsak WHERE ve JOIN ifadelerinde bu
sütunları indexlemek mantıklı olabilir.Çok fazla farklı sütun kullanılıyorsa her biri için
indexlemek aksine daha da kötü performans [Link] yüzden bir veya birden çok
sütunu indexleyeceksek analizini iyi yapmalıyı[Link]ıca çok az tekil veri barındıran sütunlara
bu işlemi yapmak mantıksızdı[Link] bir sütun olduğunu düşünelim sadece 0 ve 1 tutan
buna index atılmamalıdır index atılacak sütun veya sütunların tekil hali tablonuzun satır
sayısının en az %30’una yakın olmalıdır.

DML islemleri sonucunda Indexler cok hızlı bir şekilde eskiyebilir bu yüzden sık olarak
rebuild edilmelilerdir.

Bu seviyede bilmemize kesinlikle gerek yok bence fakat daha da detay okumak isteyenler
aşağıdaki linki inceleyebilir.

[Link]

HÜSEYİN ALBAYRAK
B-Tree,Leaf,Nodes Nedir?
Mantıksal olarak bilmemiz de yarar olan bir [Link] işlerimizde neredeyse karşımıza
çıkmaz.

İndexlediğimiz verilerin tutulma biçimi ile [Link] ve Leaflerden oluşan ağacı andıran
bir yapıdı[Link] üst node(root)’un belirlendiği değerden küçük değerler için Sol node’a
büyükler için Sağ node [Link] bu işlem ilgili keyin ait olduğu node’a kadar devam
[Link]ısıyla tüm bir tablonun blocklarını okumaktansa sadece ilgili node’a ait blockları
[Link] da ciddi bir performans artışı sağlar SELECT iç[Link],DELETE ve INSERT
için yavaş olma sebebide budur çünkü sadece tabloya bu işlemler yapılmaz aynı zamanda
Index içinde bu işlemlerin yapılması gerekir.

Kendine ait bir child node’u olmayan node’lara Leaf denir.

Daha fazla detay için aşağıdaki kaynakları ziyaret edebilirsiniz

[Link]

[Link]

Synonym Nedir?
Synonym herhangi bir DB’deki başka bir nesneye ulaşmak için yaratılan [Link] bir
tablo olabileceği gibi view,function,prosedürde da [Link] tablo için oluşturulan
Synonymde SELECT,UPDATE,DELETE,INSERT işlemleri yapılabilir referansındaki tablo
da bu değişiklikleri gerçekleş[Link] gibi bunlarda fiziksel olarak diskde yer
kaplamazlar.

Neden kullanırız? N tane DB’de aynı tabloyu kullanmak istediğinizi düşü[Link] durumda
bu tabloda bir değişiklik yapmak istersek N tane DB’de gidip bu değişikliği yapmamız
[Link] bir DB’de tablo olarak yaratıp diğer N-1 DB için Synonym yaratırsak
sadece 1 DB değişikliği yaparız ve tüm DB’ler güncellenmiş [Link] hem maliyet kazancı
hem data tutarlılığını garanti eder.

Ayrıca var olan bir tablonuzun adını değiştirmek bu tabloyu kullanan tüm uygulamalarda
değişiklik yapmanızı [Link] yapmak yerine Synonym kullanabilirsiniz.

HÜSEYİN ALBAYRAK
Sequence Nedir?
Bir tablo için PK gibi çalışan unique ve auto increment birden çok sequence
oluş[Link] kullanıcının işlemi için bir değer atanır Commit edilmemişse dahi ilgili
kayıtlar için değerler atanmıştır Rollback yapıldığında dahi bu işlem geri dö[Link] yüzden
hiç bir işlem için duplice kayıt oluşmadığı garanti edilmiş [Link] veya Descending
olarak increment olacak şekilde yaratılabilir aynı zaman da increment miktarı ve max,min
değerler atanabilir.

Tablo'dan bağımsız bir [Link] nedenle bir çok tabloda unique değer yaratmak için dahi
kullanı[Link] genelde her tabloya tek bir tane oluş[Link]'da çok kullanılan bir
method değildir.

Detay isteyenler için:

[Link]

Partition Nedir?
Partition bir tabloyu istediğimiz sütuna göre tablolara bö[Link] tablo gibi davrandığından
sorgularınızda bir tablonun herhangi bir partitionını [Link] yönetmeyi
kolaylaştırdığı gibi performansı ciddi bir şekilde attırı[Link] çok Partition yapısı vardır en çok
kullanılan methodların açıklamalarını aşağıda paylaşacağım..Tablonuzda yarattığınız
partitionların gruplandırma kuralı dışında bir veri insert etmeye çalışırsanız hata alırsını[Link]
yüzden önce ilgili verinin girebileceği bir partition yaratıp sonra insert veya update etmeniz
gerekmektedir.2 tip kullanımı vardır [Link] direk tabloyu çağırırsınız ve WHERE veya JOIN
lerde partitionlamanızı sağlayan sütunu kısıtlarsınız ve bunun sonucunda ilgili partition(lar)a
gider veya [Link] direk ilgili partitionları FROM veya JOIN de refere ederiz.
 Range: Tablonuzdaki verileri ve yeni gelecek verileri belli aralıklara göre
bölmenizi sağlayan yapıdı[Link] aralık bir tarih,sayı veya metin [Link] da
özellikle Fact tablo dediğimiz tablolarda çok sık tarihe göre ayrılmış partitionlar
görebilirsiniz.
 List: Tablonuzdaki verileri belirli değerlere göre bölebilirsiniz.Örnek vermek
gerekirse bir sütununuz var ve A'dan Z'ye kadar değerler alabilir ve bu değerlere sahip
binlerce kaydınız varsa A partitionına sadece A değerine sahip kayıtlar gelecek B
partitiona sadece B değerine sahip kayıtlar [Link] List partitiona ait birden çok
değerde tanımlayabilirsiniz.Örneğin Partition 1'a A,B,C değerleri girecektir
diyebilirsiniz.
 Hash:Range ve List tiplerinde net bir kural çizebiliyorduk Hash genellikle
herhangi net bir kırılım olmayan durumlarda tablonuzu istediğiniz x parçaya
bölmenize sağlar.

HÜSEYİN ALBAYRAK
Daha fazla detay için aşağıdaki linki ziyaret edebilirsiniz.

[Link]

Constraint Nedir?
Bir constraint tablonuzdaki veri tutarlığını sağlamak için kullanılan kısıtlayıcılardı[Link]
tabloda NULL değer içermemesi gereken bir sütununuz var ise constraint koyarak bunu
garantileyebilirsiniz veya 3 sütun üzeirnden uniqueliği sağladığınız bir durumda bu 3 sütunu
içeren bir unique constraint oluşturabilirsiniz.

En çok kullanılan constraintler aşağıdaki gibidir:


 NOT NULL:Sütuna NULL veri gelmesini kısıtlar.
 UNIQUE:Bir veya birden çok sütun için duplice veri gelmesini engeller.
 PRIMARY KEY:NOT NULL ve UNIQUE constraintlerinin birleşimidir.
 FOREIGN KEY:Bir sütuna insert veya update atacaksanız refere ettiği
tabloda bu değerin olmasını zorunlu kılar.
 CHECK:Herhangi spesifik bir koşula göre kısıt uygular.5’ten büyük veya 100
ile 200 arasında gibi.

Detaylar için:

[Link]

Tablespace Nedir?
Fiziksel olarak yer tutan index,tablo,materilazed view’ler belirtmiş olduğumuz
tablespacelerde [Link]’lar datafile’ların genel adını oluşturan mantıksal bir
kavramdı[Link] olarak datayı tutmazlar datayı tutan aslında datafile’lardı[Link] bir
tablespace birden çok sayıda datafile'da [Link] en çok karşımıza çıkacak sorun
tablespace’in dolu olmasıdı[Link] aslında ilgili datafile’larda yer kalmadı demektir bu durumda
ya var olan datafile’ların boyutu arttırılır ya da yeni datafile’lar [Link] diğer karşımıza
çıkabileceği konu yeni bir tablespace yaratılması [Link] da yine ilgili datafile’lar
yaratılır bu file’ları tutacak mantıksal kavrama isim [Link] sonra yaratacağınız bir
tabloda iligli tablespace’i seçerseniz artık bu yeni file’larda verileriniz

HÜSEYİN ALBAYRAK
tutulacaktı[Link]’lerinizde yeteri kadar yer olmazsa DML işlemlerinizde hata alırsınız
önemli bir konudur

Genelde DBA’lerin işidir fakat bazen ETL süreçlerimizde bu hatayı alabiliriz DBA’lerin
gözünden kaçmış olabilir bu tip durumlarda doğru tanı koyabilmek için bilinmesinde fayda
vardır.

Sistem tablolarından veya bazı DB connection için kullanılan IDE’lerde bunları rahatça analiz
edebilirsiniz.

Daha fazla bilgi için :

[Link]

Function Nedir?
Bir fonksiyon aslında belli bir amacı gerçekleştirmek için kullanılan bir SQL [Link]
seferinde kod bloğunu tekrar yazmaktansa belli bir isimle DB'de saklayıp çağırılmasına yarar.
Herhangi bir sayıda girdiği değerine sahip olabilir sonucunda fonksiyonun amacına göre tek
bir değer veya bir tablo döndürebilir.İki tür fonksyion vardır:
 System Defined Functions:Bu fonksiyonlar DB kurulumda veya sonradan
eklenen modüllere erişilen DB'ye özgür fonksiyonlardı[Link] hemen her DB'de
farklı isimler ile aynı işi yapan fonksiyonlara rastlayabilirsiniz.(Oracle
için: [Link]
 User Defined Functions:Kullanıcılar tarafından oluşturulan
fonksiyonlardı[Link] fonksiyonlarının talebinize yetersiz kaldığı durumlarda
yazarız.

PL/SQL Nedir?
SQL'in genişletilmiş halidir [Link]'in yetersiz kaldığı durumlarda PL/SQL'e geçiş
yapmamız [Link] kod bloğunuz var ve bunun tablonuzdaki farklı değerler için
çalışmasını istiyorsanız döngülerle bu kod bloğunuzu o değerler için defalarca
çalıştı[Link] herhangi bir koşul gerçekleşirse bir kod bloğu gerçekleşmezse başka bir
kod bloğu çalıştırmak istersek PL/SQL'e baş[Link] PL/SQL çağıramazken PL/SQL
tüm SQL komutlarını çağırabilir.

Bir PL/SQL kodu genellikle şu blokları içerir.


 DECLARE(Zorunlu Değil):Bu kısım kullanacağımız değişkenleri ve veri
tiplerini belirttiğimiz kısımdı[Link] kullanıyorsak memory'de cursor için yer
ayırttığımız kısımdır
 BEGIN:Beginden END bloğuna kadar istediğiniz kod bloğunu buraya yazarız.

HÜSEYİN ALBAYRAK
 EXCEPTION(Zorunlu Değil):Hataları yakalayıp ilgili hataları alırsa ne
yapmak istediğinize karar verdiğiniz kısımdır.
 END

Öğrenmek isteyenler için kaynak1:[Link]

kaynak2:[Link]

Stored Procedure(SP) Nedir?


Stored procedure'ler functionlar gibi belli parametreler alır bir kod bloğu çalıştırır ve bir değer
döner veya dö[Link]'ler performanslıdır bir kez çalıştılar mı memoryde planları oluşur ve
bu planları tekrar kullanırlar.

Peki aynı kod bloğunu hem stored procedure hem functionla çalıştırabiliyorsak ne zaman
function ne zaman stored procedure kullanmalıyı[Link]'da da sıkça kullanılır

 Functionlarda bir RETURN zorunludur procedure'da bu zorunluluk yoktur.


 Çalıştırma mantıkları bambaşkadı[Link]'ler PL/SQL ile çağrılır yani BEGIN exec
stored_procedure; END; şeklinde iken functionlar direk SELECT [Link]()
FROM table şeklinde SQL komutu içinde kullanılır.
 Bir SP'yi function içinde kullanamazsınız fakat bir function'ı SP içinde
kullabilirsiniz.

Package Nedir?
Bir package değişkenleri,cursorleri ve alt program bloklarını tutmak için yaratılan bir
[Link]'de saklanır ve birden çok kullanıcı ve uygulama tarafından kullanılabilir.

spec ve body'den oluş[Link] değişkenleri tipleri cursorleri belirttiğiniz global tanımlamalar


yapılan kısımdı[Link] ise kod bloklarınızı yazdığınız kısımdır.

Genellikle aynı amaca hizmet eden kod bloklarını bir arada tutmak için yaratılı[Link] cursor
tanımlarsanız bu tüm kod bloklarında kullanabilirsiniz ve tek seferlik memory ayırırsınız.

HÜSEYİN ALBAYRAK
Bu kod bloklarını SP olarak düşü[Link]ıca paketin bir alt programını çağırdığınız
tüm paket için plan oluşur ve diğer alt programlar için bir daha memoryde yer aç[Link]'da
da sıkça kullanılır.

Daha fazla bilgi için


: [Link]

Trigger Nedir?

Aslında bir SP'[Link]'de verdiğiniz koşullar sağlandığında otomatik çalışır.3 farklı durum için
de trigger yaratılabilir.
 DML Triggers:Bir tabloya INSERT,UPDATE,DELETE işlemi yapıldığında
çalışmasını istediğiniz triggerlar.
 DDL Triggers: CREATE,DROP,ALTER gibi işlemler yapıldığında
çalışmasını sitediğiniz triggerlar.
 DB Operation Triggers:LOGON,LOGOFF,SERVERERROR gibi DB
operasyonlarında çalışmasını istediğimiz triggerlar.

Bir trigger için tetikleyici işlemden önce veya sonra için çağrılabilir yeni ve eski değerleri
çağı[Link] tablodaki belli bir kısım sütuna update geldiğinde eski değerleri kaybetmek
istemediğiniz bir durumda bu veriler için bir trigger yaratıp başka bir tabloda tutabiliriz.

Daha fazla bilgi


için: [Link]

[Link]
server-ver15

DBLink Nedir?
Bir databeseden başka bir databese erişim sağlayan bir DB [Link] nesneyi yarattıktan
sonra bunun aracılığıyla diğer DB'nin tablo ve view'lerine erişebilirsiniz.İlgili DB'de yaratma
yetkileri bağlanmak istediğiniz remote DB'de session yetkinizin olması gerekmektedir.

HÜSEYİN ALBAYRAK
Daha fazla bilgi için
: [Link]

FK,PK Nedir?
 Primary Key:Bir veya birden çok sütunlardan oluşan bir satırı diğerlerinden
ayırmaya yarayan tekilliği garanti edilmiş sütunlardı[Link] tabloda sadece bir PK alanı
bulunabilir.
 Foreign Key:Bir veya birden çok sütundan oluşan ve başka bir tablonun
primary keyi olan sütunlardı[Link]ğiniz bir satırdaki foreign keyin değeri primary
keyi olan tablodada olmalıdı[Link] sayesinde veri bütünlüğü sağalanıp tablolar
arasında ilişki [Link] tabloda birden çok FK alanı olabilir.

Meta Data Nedir?


Meta Data data hakkındaki data şeklinde ifade [Link] DB'de user-defined
fonksiyonlar,şemalar,tablo,view adları,sütunları,tipleri,kuralları,boyutu,ilişkileri gibi bilgileri
iç[Link] sistem tabloları içerisinden ulaşabiliriz.

System Table Nedir?


Çok fazla işimizin düştüğü ve işimizi kolaylaştıran DB’nin kendi tablolardı[Link] tablonun
sütunlarına ihtiyacınız varsa veya hangi tabloda ne tip indexleriniz var öğrenmek istiyorsanız
bu tablolara baş[Link] örnekler çoğaltılabilir fakat bunlar hakkında şunu bilmemiz yeterli
olacaktır DB'deki yaratılan herşey bir sistem tablosunda tutulmaktadır.Çok fazla sistem
tablosu var fakat en çok ihtiyaç duyduğumuz bir kaçını yazıp detay için link bırakacağım.
 ALL_TABLES:DB'deki tüm tablolara ait bilgileri
döndürü[Link]'ı,Adı,Şeması,Tablespace'i,Satır sayısı vb..
 ALL_TAB_COLUMNS:Bir tabloya ait tüm sütunları veri
tiplerini,uzunluklarını,Nullable durumunu vb sütunu tanımlayan tüm bilgileri içerir.
 ALL_TAB_PARTITIONS:Hangi tablonun kaç parititonu var isimleri,max
min değerleri vb bilgileir içerir.

[Link]

[Link]

HÜSEYİN ALBAYRAK
Explain Plan Nedir?
Bir sql komutu çalıştırdığınızda DB’niz optimizer’ı sorgunuz için bir çok plan içinden en
uygun planı bulmaya çalışır ve genelde bu planı yürütür.

Bir explain plan hangi tabloya önce gidecek,hangi tabloya nasıl erişecek,join varsa nasıl bir
join seçeceği,filtrelemeler aggregationlar vb barındırır.

Bu planlar aracılığıyla nerede ne kadar süre kaybettiğinizi bulup komutlarınızı


gü[Link]şka bir yazıda nasıl iyi SQL yazılırı konuşacağız fakat burda da
belirtmekte fayda var fazla adımlardan her zaman kaçının olabildiğince ufak data setlerini
çağırmaya çalışın.

Çünkü sorgunuz geç çalışmasının başlıca sebeplerinden biri FULL SCAN etmenizdir tabloları
işte Explain planla bunları tespit edebiliriz.

Explain Plan okumak ve adımları başka bir yazının konusu olacak genel tanım için yeterli
sanırım bu açıklama.

Daha fazlası için :[Link]

[Link]

OLTP Nedir?
Online Transaction Processing’in kısaltmasıdı[Link]’ımız için “Source” olan
DB’[Link] önceliği dataların güvenle eklenip,güncellenmesi ve son kullanıcıya
bilgilerinin gö[Link] e-ticaret sitesinden alışveriş yaptığınızı düşünün burdaki
sepetiniz,ödemeleriniz,siparişleriniz,üye bilgileriniz her biri bir tabloda tutulmakta bir biriyle
konuşmaktadı[Link] verdiğiniz sipariş için bir insert atılır tabloya veya güncellemelerinizde
update atılı[Link] DB’lerdeki Select’lerde genelde çok ufak bir kitle döndürü[Link]
sekmesine girdiğinizde gördüğünüz tüm bilgiler o anda DB’den dönen select ifadesinin
sonuçlarıdı[Link] olarak normalize yapıda olurlar bu en önemli farkıdır OLAP’tan(Kimball
model için).

HÜSEYİN ALBAYRAK
Normalizasyon Nedir(3NF)?
Data tekrarını azaltmak,insert,update ve deletelerde ortaya çıkabilecek tutarsızlıklardan
kaçınmak ve büyük tabloları daha ufak tablolara bölmek için geliştirilen databese dizayn
tekniğ[Link] çok formu vardır fakat genelde 3rd Normal Form’a kadar geliştirilir.

Her bir adım bir önceki adımların üzerine yeni kurallar gelmesi ile devam [Link]ısıyla
1NF olmadan 2NF [Link] method uyguluyorsanız çok işiniz düşmez.

Daha fazla bilgi için :[Link]

OLAP Nedir?
Online Analytical Processing’in kısaltmasıdı[Link] bir OLAP [Link] amacı son
kullanıcıya bilgileri göstermesidir fakat bunu yaparken çok büyük data setlerini
[Link] insert ve update(tavsiye edilmez) OLTP gibi transaction transaction değil
bulk’tı[Link] güncelliği besleyen ETL’in sıklığı kadardı[Link] datalar denormalize olarak
tutulurlar OLTP’den en büyük farkı budur.(Kimball model için)

DWH Nedir?
Birden çok kaynakdan gelen dataların toplanması için kullanılan DB’[Link] BI
araçlarımız bu DB üzerine kuruludur ve bu şekilde son kullanıcıya rapor ve analiz imkanı
tanırı[Link] destek sistemleri olarakda adlandırıldığı olur(DSS).DWH’lar genellikle t-1
olarak ifade edilen bir gün öncesine kadar gü[Link]ı tablolar veya Data
Martlar(DM’ler) real time veya near real time olabilir.

DWH’a neden ihtiyaç vardır:


1. Bir çok farklı kaynağı tek bir yerde toplayabilmek
2. Geçmişi korumak(SCD veya snapshotlar)
3. Büyük veri setini çağıran sorgular için farklı mimari ihtiyacı
4. Tek bir DB kaynağınız olsa bile OLTP sistemiminizi yormamak

3 tip DWH vardır:


1. Enterprise Data Warehouse(EDW):Tüm bilgilerin yer aldığı tek bir DWH’dır.
2. Operational Data Store(ODS):Yapısı OLTP’ye daha yakındır fakat OLTP
source’a 1-1 benzemek zorunda değildir veri üzerinde değişiklikler yapılabilir.T-1
veya real time [Link] satır satır analize ihtiyaç olduğu durumlarda
kullanılır.
3. Data Mart:DWH’ın sadece bir konuya özgü ufak halidir.
HÜSEYİN ALBAYRAK
ODS ve DM'ler DWH içinde de olabilir ayrı ayrı DB’lerde de olabilir.

Resim
kaynağı:[Link]

Tüm DWH yapıları bu şekildedir demek doğru olmaz genelde Data Sources->ETL->DWH-
>BI Tools adımları zorunlu diğerleri opsiyonel demek daha doğru olabilir.

ODS(Operational Data Store) Nedir?


Bir çok farklı kaynaktan 1-1 veya biraz değiştirilmiş dataları tutan bir yapıdı[Link] dışı bir
DB olabileceği gibi DWH içinde de [Link] satır bazlı raporlamalar için
kullanılı[Link] daha ufak data setleriyle uğraşır DWH’a kıyasla.Örneğin bir kullancının
kartında her zamanın ki 20 katı bir harcamalık kayıt yakalamak istersek ODS işimizi
fazlasıyla kolayştırı[Link]ıca bir çok farklı kaynağın birleştiği tek bir DB için diğer IT
operasyonlarıda yönetilebilir.

HÜSEYİN ALBAYRAK
Data Mart Nedir?
DWH’ın tek konuya odaklanmış halidir.(Satış,Finans vb).3 Çeşit DM vardır:
1. Bağımlı DM’ler:DWH’da tüm süreç işledikten sonra DM’ye bilgi çıkılır.O
yüzden DM,DWH’a bağımlıdır.
2. Bağımsız DM’ler:DWH’dan tamamen ayrı bir süreç dolayısıyla yönetilmesi
çok ve ayağa kaldırılması çok [Link] sonrasında her DM için ETL süreçleri kendi
mantıkları daha da zor hale gelebilir.
3. Hibrit:Bazı tabloların DWH’dan bazılarının direk sourcedan geldiği DM’ler.

Bağımlı DM’ler yönetilebilirler olarak en mantıklısı durmaktadır.

DM’ler farklı bir DB’ye çıkabileceği gibi DWH içerisinde DM mantığıyla da tutulabiliyor.

Fact Nedir?
Fact tablolar Kimball methodunun ana tablolarıdır.İçerisinde yalnızca Foreign Key’ler ve
Mesaure’lar [Link] Keyler Dimension table’lara gitmemiz için gereken bağlantı
sütunları iken Measure’lar ölçümlenen herş[Link] tablolar Star Schema ve Snowflake’in
tam ortasında yer alırlar. Bu tablolarda genelde PK alanı [Link] bir PK olacaksa bu
tablodaki tüm FK’lardır.

Bu tablolar dikine büyürler ve gerçekten çok büyük veri [Link] yüzden bu tabloların
partitionlı olması çok ö[Link] partition factinizin tipine ve iş sürecinize göre
değişiklik gö[Link] FK’larınızı doldurken kontrol adımları koyup
koşullarınıza uymayan kayıtlar için -1,-2 gibi id’ler basabilir dimension tablolarınıza bu
eklediğiniz -1,-2 kayıtları için kayıt atıp son kullancıya bir sorun olduğunu gösterebilirsiniz.

3 tip fact vardır:


1. Transaction Fact Table:Bu fact yapıları geçmişe dönük update’ler
gelebiliyorsa belirli bir tarihten itibaren sonrasının silinip tekrar yüklendiği olmuyorsa
o gün yeni gelen dataların eklenerek büyüyen tablolardı[Link] tablolar için iş biriminin
raporlama ihtiyacına kalmakla beraber aylık veya günlük parititonlar
oluş[Link] bu factlerde hatalı bir delete işlemi için ETL süreci tekrar
başlatılıp veri kaybı yaşamadan süreciniz devam edebilir
2. Snapshot Fact Table:Günlük,haftalık,aylık olarak satışçı,müşterinin o anki
durumunun bir tabloda saklandığı fact yapılarıdı[Link] günlük olurlar geriye dönük
hesaplaması ciddi zorlukları olan veya bulunamayan measure’lar içerirler.O yüzden bu
factlerde genelde oluşturduğunuz tarihten öncesi için data yüklemesi
yapamazsını[Link] işlemleride çok sorun oluşturur backup’ınız yoksa çünkü
bulamazsınız satışçı veya müşterinin 2 gün önceki [Link] factler için genelde
günlük partitionlar uygundur.
3. Accumulated Fact Sheet:Bir transaction başlangıçta facte işleniyor bittiğinde
bu kayıt update [Link] hiç denk gelmedim açıkçası deneyimime ait yorumlarım
yok maalesef.

HÜSEYİN ALBAYRAK
Fact tabloları parititonlı yaptığımız durumlarda ETL sürecimize partitionı yoksa ekle adımı
eklediğimizden emin olmalıyız yoksa ETL sürecimiz hata alacaktır.

Dimension Table Nedir?


Dimension tabloları açıklama tutan tablolar olarak düşü[Link]’imizde bulunan FK’lar
bu tabloların PK’larıdır bunlar aracılığıyla join kurup factimizdeki hesaplamaların hangi
il,hangi müşteri veya hangi satışçı ait olduğunu bulabiliriz.

Factinizde yer alan CustomerID FK alanı için 1 yazıyorsa bunun hiç bir anlamı [Link]
Dim_Customer tablonuzda bu 1’in karşısında Hüseyin yazdığında veya bu customerin ili
İstanbul yazdığında kimin veya hangi ilin ne kadarlık sipariş ettiğini anlamlandırdınız
demektir.

Dimension tablolar PK,FK ve Açıklama sütunları barındı[Link] Dimension tablonuza -1,-


2 gibi farklı hata durumlarınız için kayıt atmanızda fayda vardır.

Star Schema Nedir?


Ortada bir factin olduğu ve FK’lar aracılığıyla Dimension table’lara gittiği yapıdı[Link]
tüm fact’ler Dim_Date tablosuyla [Link]’inizdeki Raporlama Tarihi(İsim
değişebilir)’de bir FK’dır ve Dim_Date’deki Date sütunuyla [Link] dimension birden
çok factle joinlenebilir ve star schema oluşturabilir burda bir sınır [Link] önemli kural Fact
Tabloyu başka bir fact tablo ile [Link] BI Toolunuzda farklı iki factte measure’ları
aynı klasör ile son kullanıcıya sunmayın.1-1 aynı FK’lara sahip olmayan factler datanız
çoklatacaktır.İki factli yapıların BI’da Full Join kuracağını unutmayın sorgunuzda var fakat
görselinizde yoksa bile 0 değerli dimensionlar gö[Link] toollarında dimension alanları
muhakkak Dimension Table’lardan getirin bunlar FK’lar olsa [Link] sadece measure’ları
alın.

HÜSEYİN ALBAYRAK
Resim Kaynak :[Link]

Snowflake Nedir?
Star Schemadan tek farkı Dimension table’lardan başka Dimension table’lara gittiğimiz
durumlar olabilmekte mantıksal olarak bir farkı yoktur.

Örneğin Size Ülke bazında gelirler lazım Factinizde Location_Id bulunur.Dim_Location


tablosuna gittiğinizde City_Id gibi bir sütun görürsünüz ve burdan Dim_City tablosuna
[Link] Schema ve Snowflake BI Toollarındaki geliştirmelerde daha net gözükür fakat
DWH’ı böyle modelleminiz gerek [Link]ı durumlarda Snowflakeden Star Schemaya
dönmek isteyebilirsiniz bu kısım önemli :))Snowflake olan bir yapıda önce bir dimension
sonra öbürüne sonra öbürüne şeklinde bir tablo yerine birden çok tabloyla ilişki kurarsınız
fakat bu ara dimension tablolar gerçekten çok büyük olabilir işte bu durumda performans
sorununa yol aç[Link] yerine fact tablonuza nihai dimension tablonuzun FK’sını basıp
direk buna bağlanabilir ve süreyi kısaltabilrsiniz.

HÜSEYİN ALBAYRAK
Resim Kaynak :[Link]

Inmon Method Nedir?(3NF)


Inmon DWH mimarisi için normalize yapıyı önermiş[Link]ısıyla veri tekrarı çok
azdı[Link] yukarda belirtmiştim [Link] olarak iyi bir çözüm olmasına
rağmen kurması ve geliştirmesi daha fazla zaman almaktadı[Link] Kimballa method tercih
edilmesinin sebebide [Link] İnmon methodunda da daha fazla esneklik vardır raporu
çekecek kişi iç[Link]ıca ilişkilerin fazlalığından dolayı bir biriyle konuşabilen daha fazla veri
setleri elde edebilirsiniz.

Kimball Method Nedir?


İnmonın aksine denormalize bir yapı ö[Link] ve Dimensionların ilişikilerini Star
schema veya snowflake olarak isimlendirilmiş methodlarla yapar.

Geliştirilmesi daha hızlı olduğu ve daha az karmaşık olduğu için tercih [Link] çok fazla
değişikliğin olduğu yapılarda çok uygun değildir.

Data Vault Nedir?


İnmon ve Kimball'a methodlarına göre daha yeni bir DWH mimarisi [Link] schema
ve 3NF birleştirmeyi öngören bir methottur.

HÜSEYİN ALBAYRAK
3 farklı tipte tablodan oluşur:
 Hub:Hublar ilgili tablonun Id'lerini,bunların yükleme zamanını ve hangi
kaynaktan gelen tutan tablolardır.
 Link:Bu tablolar birbiriyle konuşacak Hubların ID'lerini ve yükleme
zamanlarını ve kaynağını tutarlar.
 Satellite:Bu tablolar asıl veriyi tutan tablolardı[Link] Id'ye ait tüm veriler bu
tablolarda [Link] Satellite tablonun sadece bir tane Hub tablosu olmalıdır.

Satellite tablolar Hublara,Hublar Linkler aracılığıyla birbirine bağlanır.

Resim kaynağı:[Link]

Çok fazla kaynak ve örnek yok webde fakat bu linke göz


atabilirsiniz:[Link]
[Link]

İnmon,Kimball ve Data Vault kıyaslamalı güzel bir araştırma yazsının linkini bırakıyorum
avantaj ve dezavantajlarına bakabilirsiniz

HÜSEYİN ALBAYRAK
[Link]
es_modeling_approaches_Inmon_Kimball_and_Data_Vault/link/5f19972892851cd5fa3f5976
/download

ETL Nedir?
Extract-Transform-Load'un kısaltmasıdı[Link] veri kaynağındandan başka bir veri kaynağına
data taşıma işleminin adıdı[Link] bir veya birden çok source DB veya Flat File'dan DWH'a
veri aktarımı için kullanılır fakat tam tersi olduğu durumlarda [Link] adımında
kaynakdan veri alınır,Transform adımında data temizliği,parçalanması veya aggregate işlemi
yapılır,Load adımında ise dönüştürülen veri yü[Link] ETL süreci için bir çok farklı firma
ürün çıkarmıştır bunlardan en çok kullanılanları şöyledir:SSIS,İnformatica,SSIS,Data
Stage,Talend,Data Services vb..Tüm bu toollar aynı şeyi yaparlar isimlendirme farkları vardır
sadece birini iyi anladığınızda diğerlerini öğrenmeniz çok kısa sürer ve genelde 1 firma
sadece 1 tanesini kullanır hepsini öğrenmek zorunda değilsiniz.

ETL aracı kullanırken olabilidiğince tool'a ait componentleri kullanmaya özen göstermeliyiz
bu yönetilebilirliği arttıracaktır.Çoğu zaman yazılan SQL'i basıp geçmek size ciddi zaman
kazandırır ama ETL sürecinde bir şey değiştirmek istediğinizde SQL'i tekrar analiz etmeniz
[Link]ıca ilişkileri kopardığınız için hangi tablo veya sütun nerede kullanılmış bilgilerini
kaybederseniz ve ciddi bir reengineering sürecine girerseniz işin içinden çıkamayabilirsiniz.

PL/SQL ile de ETL sürecinin bir kısmını veya tamamını yönetenler var fakat tavsiye
etmiyorum kodlar bir noktadan sonra çok fazla karışabiliyor.

ELT Nedir?
ELT olarak data aktarım yöntemini seçersek Extract-Load-Transform olarak süreç
değiş[Link]ı DWH'a yükledikten sonra istemiş olduğunuz transform işlemlerini DWH
üzerinde yapar.

Piyasada en çok kullanılan ELT toolları şöyledir:ODI,Talend,Informatica [Link] genelde


büyük veriler ve cloud sistemler için daha [Link] data yükleme süresi gerçekten çok
kısadır.

HÜSEYİN ALBAYRAK
ETL ve ELT arasındaki farkları merak edenler için :[Link]

SCD Nedir?
Slowly Changing Dimensions ifadesinin kısaltmasıdı[Link] Dimension tablolardaki veriler
değişebilir ve bu değişim bizim için anlamlı ise bunu kaybetmek istemeyiz işte bu durumda
Dimension tablolarımızı SCD yapılarına dönüştürürü[Link] çok farklı versiyonu olmakla
beraber en çok kullanılanı Type 2 'dir.Örneğin Dim_Customer diye bir dimension tablonuz
var ve medeni durumu değişiyor ve bu sizin raporlamalarınızda önemli bir alan bu durumda
Type 2 aynı müşteri için yeni bir kayıt yarat fakat bu her iki kaydada başlangıç ve bitiş
tarihleri ve hangisinin güncel olduğunu rahatça yakalamak için de bir flag koy [Link]
durumda herhangi bir tarihte o müşterinin medeni durumu nedir rahatlıkla bulabiliriz.

Tüm tiplere bakmak isteyenler için: [Link]


[Link]

Surrogate Key Nedir?


Normalde kaynak tablonuzda var olmayan tabloya dair hiç bir bilgi anlatmayan sıralı bir sayı
[Link] tablonuzun PK'sı yada Natural Key olarak ifade edilen (TC alanı gibi)
alanlar olamaz.Tüm Dimensionlarda olmasını ve factleri böyle bağlamak gerektiğini söylüyor
Kimball fakat gerçekte bunu yapan çok fazla yok genelde SCD yapılarında zorunluluktan
uygulanı[Link] tablolarında neden bir zorunluluk derseniz üstte bahsettiğim gibi genelde
type 2 tercih ediliyor ve type 2 yaptığınız aynı PK için ikinci bir kayıt oluştuyorsunuz tabloda
fakat bu durumda ilgili kaydı ifade edecek bir tekil anahtarınız olmuyor bu yüzden SCD
tablolarında genelde bir de SK alanı neredeyse zorunludur.

CDC(Change Data Capture) Nedir?


Change Data Capture ifadesinin kısaltmasıdı[Link] süreçlerinde çok önemli bir yeri
vardır.Çünkü ETL sürecinizde bir jobınız var ve 100 milyonluk bir tabloyu aktarıyor her gün
100 milyon kaydı aktarmakla uğraşmak yerine sadece ETL jobımızın son çalışmadan sonra
değişen verileri(1 milyon olsun) almak çok daha kısa sü[Link]ğince tüm ETL
joblarını böyle yapmak ETL sürecinizi inanılmaz hızlandırı[Link] sürecinin hızı çok önemlidir
çünkü gece ETL süreciniz hata alabilir veya sourceda değişiklik yapılabilir ve güncel datalar
üzerinden raporlama istenebilir bu durumda sürecinizin ne kadar kısa ise o kadar rahat hareket

HÜSEYİN ALBAYRAK
[Link] süresi kısaltmada bu yöntem elbette tek başına yeterli değil diğerlerini başka
bir yazıda uzunca yazağım.

CDC yapabilmek için elinizde bir tarih veya sayısal bir alan olmalı DWH'ıma yüklediğim son
kayıt budur diyebilmek iç[Link] bu alandan büyük verileri sadece çektiğinizde daha ufak bir
data seti elde [Link] önemli nokta şu PK alanınızı alamazsınız.Çünkü CDC
içersinde insert kadar update de barındırı[Link] yüklediğiniz PK 100 olsun 50 tane insert 30
tane update geldi bu durumda siz sadece 50 tane insert olanı yakalayabilirsiniz çünkü 100den
büyükleri alacaksını[Link] aslında siz 30 update'i almanız lazım o yüzden update veya insert
geldiğinde tablonuzdaki değeri güncelleyen bir alan olmalı.50 inserti yüklemek kolay çünkü
zaten DWH'da yok fakat updateler için DWH'da var olan kayıtları silip yüklemeniz gerekir.

BI Nedir?
Business Intelligence ifadesinin kısaltmasıdı[Link]ç ilgili toollarla anlamlı
analizler,dashboardlar hazırlamak ve çıkarımlar yapmaktı[Link]'ın üzerine kuruludur aslında
tüm ETL ve DWH işlerimizin görünmeye başladığı kısım [Link]ığımız DWH görsele
dönüşü[Link]ıca son kullanıcılara(iş birimleri) self servis imkanı da sağlamamıza yarar ve
herkes istediği kırılım ve filtrelerde analizlerini [Link]ıcının her isteği aslında ilgili
tablolara bir sql isteği olarak [Link] BI toolu kendine özgü farklılıklar ve yetenekler
barındırsa da genel amaç dashboardlar-self servis yapılarıdır ve herkesin yetkisi dahilinde
bilgiye ulaşmasıdır.

En çok kullanılan BI Toolları şöyledir:Power BI,Tableau,OBIEE,SAP Business Objects,Qlik


vb.

Row Level Security Nedir?


RLS,BI dünyasının en önemli konularından [Link] setlerinin kullanıcı bazlı kısıtlanması
[Link] toolunuzda bir dashboard hazırladınız 10 farklı şirketin gelir kalemleri var
içinde [Link]ıcının sadece kendi firmasını görmesini istersiniz genelde veya bölge
müdürünün kendisine bağlı 3 şirketi ceo'nun 10 şirketi de görmesini istersiniz işte bu yapılan
kullanıcı bazlı yetkilendirme RLS olarak adlandırılır.

HÜSEYİN ALBAYRAK
Data Mining Nedir?
Büyük veri setlerinde şirketin karlılığını arttıracak anormallikler,farkında olunmayan ilişkiler
ve korelasyonların tespiti için yapılan işlemler [Link] istatistik bilgileriyle,makine
öğrenmesi veya yapay zekayla verilerinizi analiz edebilir çıktılar [Link]
dünyasında DWH'cıların direk ilgi alanı olmamakla beraber data mining yapan ekiplere veri
sağladığımız için aslında ilişkimiz bulunmaktadı[Link] medya veya web sitesi
ziyaretlerinizde karşınızda çıkan reklamlarda kişiselleştirilmiş reklamlar olup bir mining
sonucunda size o reklam sunuluyor veya netflix de bir bir dizi spotifyda bir sanatçıda.

Basit bir excelde de çıkardığınız bulgular basit düzeyde bir mining sayılabilir fakat piyasada
en çok kullanılan ve daha profesyonel düzeyde kullanılan toollar ve diller
şöyle:SPSS,SAS,R,Pyhton,Knime,Rapidminer vb.

Flat File Nedir?


Tek bir tabloluk DB’ler olarak düşü[Link] bir satır bir kaydı ifade [Link] n
satırlı 1 sütunlu veri var gibi gözükebilir bunlar separator’u(virgül,tab,space vb.) aracılığıla
parçayalıp gerçek sütun sayısına ulaşabiliriz.Yönetimi ve taşınması kolay olduğundan ve
herkes tarafından kullanıldığından tercih edilen yapılardı[Link]’da çok fazla işimiz düşer
çünkü bir iş biriminden data alıyorsanız anlık değişebilen hedefler gibi genelde sizinle CSV
veya Excel paylaşı[Link]ı ETL süreciyle DWH’a işleminiz
[Link],CSV,TXT,XML vb tüm dosyalara genelde Flat File deriz.

FTP Nedir?
File Transfer Protocol’ün kısaltmasıdır.

DWH’da sık sık işimiz düşer.

İki farklı bilgisayar arasında dosya transferi yapmanıza izin veren bir yapıdı[Link] FTP’de
bizim için source veya target olabilir.

SFTP olarak güvenlikli versiyonu daha çok tercih [Link]ı şey olmakla beraber
SFTP daha güvenlikli bir yapıdı[Link] bir kullanıcı ve şifre verdikten sonra ilgili SFTP’ye
bağ[Link] da yetkilendirmeler mevcuttur her klasör ve dosya için okuma,yazma
ve execute etme yetkisi verilebilir ihityaca gö[Link] r,w,x olarak ifade edildiği gibi
rakamlarla da edilebilir.

Filezilla,Winscp gibi araçlarla bağlanılabilir.

HÜSEYİN ALBAYRAK
Daha fazlası için : [Link]

Cron Nedir?
Cron Unix işletim sisteminde belirli aralıkla komutlarınızı otomatik yürütmek için yazılan bir
zamanlayıcıdı[Link] Task Scheduler’a benzer.

Bazı ETL toolların da geliştirme işlemi yaptıktan sonra bu ETL job'ımızın her gece veya her
saat başı çalışmasını isteriz.İşte bu durumlarda sh uzantılı dosyamız için bir cron yazarız ve
unix makinemizde istenilen aralıkta bu job çalışmaya başlayacaktı[Link]ıcısı bir tık
farklı merak edenler için link bırakıyorum.

[Link]

SQL Server’da Partition Yapısı Nedir?


SQL serverdaki Parititon yapısı Oracle’dan farklıdı[Link] range formatı vardır yani
tarih aralıkları için uygundur demek daha doğru [Link] de Oracle’da da hep
tarih kullanılır.

Öncelikle bir tane Partition function yaratmanız [Link] function için hangi aralıkda
tarihler olmalı ise onları belirtebilirsiniz gün gün veya ay [Link] kaç farklı partition
oluşturduğunuz çok öenmli adedi not edin çünkü +1 adedi için parititon scheme
oluşturacağız.

Sonrasında partition scheme oluşturmamız lazım kaç partition oluşturduysanız o


kadarlık ekleme yapmanız lazım filegroupları.Filegroup olarak PRIMARY
kullanabilirsiniz DWH olduğu için ama OLTP’lerde genelde her partition için farklı bir
filegroup olur sorun yaşandığınızda hızlıca geri dönebilmek iç[Link] scheme içine
partition sayısı+1 adet file group yazmanız lazım.+1 deki kasıt hiç bir parititona
girmeyen bir kayıt gelirse buna gitsin [Link]’da bu hata almasına sebep olur
mesela girebilecek partition yok hatası alırsınız ama burada +1deki partitiona
giderler.

ETL Araçları Nelerdir?


 ODI(Oracle Data Integrator)
 SSIS(SQL Server Integration Services)
 ADF(Azure Data Factory)
 Talend

HÜSEYİN ALBAYRAK
 Informatica
 Nifi
 Airflow
 AWS Glue
 Pentaho
 IBM Datastage
 Diğer

BI Araçları Nelerdir?
 Power BI
 SSRS
 Tableau
 SAP BO
 Oracle BI
 Qlik
 Looker
 IBM Cognos
 MicroStrategy
 Diğer

Data Lake Nedir?


Genelde Cloud ortamda hazır bize sunulan ürünlerdir.Büyük şirketlerin hemen
hepsinin vardır ve en çok kullanılanlar aşağıdaki gibidir.

 Microsoft
 Amazon
 Google

Ortaya çıkış amacı DWH’ın yetersiz kalmasıydı ve çünkü unstructured veya semi-
structured formatlarda sorun yaşı[Link] data size’lar çok ciddi bir şekilde artmış
ayrıca bir çok veri birimi bu verilere ulaşıp işlemek istediğinden merkezi bir konum bir
lake ve ham halde verilerin burada tutulması fikri kabul görmüştür.
Aynı zaman diğer SaaS yani servisleri de burayla entegre kullanmak çok rahattır
çünkü bir ML çalıştırmak istediğinizde veya Databricks ya da Spark kullanmak
istediğinizde bunların on-prem sistemde ayağa kaldırıp hepsinin düzgün çalışmasını
ve birbiri ile ileitşime girmesi için izinlerle uğraşılması vs inanılmaz yorucu
olacağından yine çok mantıklı bir hale gelir.

Türkiye de Cloud ürünler, özellikle KVKK ve diğer regülasyonlardan dolayı hala çok
sık kullanılmasada geleceğin burada olduğu kesindir.

HÜSEYİN ALBAYRAK
Ayrıca bu kadar büyük dataları işlemek için on-prem sistemlerde yatay mimari
kurmak özellikle küçük-orta firmalar için çok zorlayıcı olacağından Cloud öne
çıkmaktadır.

Lake’e verilerinizi aldıktan sonra Synapse SQL Pool, Redshift,BigQuery gibi


ortamlara yine ister file’dan okuyacak şekilde ister ETL servislerini kullanarak klasik
DB görünümünde tutabilirsiniz verilerinizi ve SQL ile çalışabilirsiniz [Link] mimari
artık Columnar bir mimaridir!!

Yatay Mimari-Dikey Mimari Nedir?


Dikey mimaride klasik sistemlerimizin çoğunda olduğu gibi makinemizin gücünü-
performansını arttırmak istersek RAM,CPU,DISK gibi eklemeler yaparız Hardware
denen objelerde arttırıma [Link] yapmak daha kolaydır ama bir noktadan
sonra hem çok pahalı hale gelecek hem de ilerleyen zamanda hala taleplere yeteri
kadar hızlı yanıt vermeyebilir.

Bir çok daha güçsüz makineyi birleştirip çok güçlü bir makine elde etmektir
aslı[Link] load balancing ile yük bu makineler arasında dağılır ve biri çökerse
hemen diğeri işe devam [Link] makinelerede isterseniz hardware ekleyebilirsiniz
ama yeni bir server eklemek daha uygunsa bunu da yapabilirsiniz ve performansı
arttırabilirsiniz.

Columnar DB Nedir?
Bir diğer adı column-oriented databasedir.Özellikle OLAP sistemlerde çok kullanılır
çünkü bizim sorgularımız genellikle bir kaç sütun üzerinde aggregate şeklindedir bu
da bize tüm satırlar yerine belirli sütunlarla hızlı performans sağlar.
Örnek DB’ler Amazon Redshift,Google Bigquery,Snowflake,Synapse SQL pool vb.

HÜSEYİN ALBAYRAK
MPP(Massively Parallel Processing) Nedir?
Tüm klasik cloud lake çözümlerinin databaseleri aslında bu yapıda çalışır demek
yanlış olmaz.Özellikle DWH’da çok kullanılan bu yöntem vermiş olduğumuz devasa
boyuttaki dataları altında çalışan birimlere böler ve sonra birleştirip size geri
döndürür.

Bu sayede çok hızlı bir şekilde sonuca ulaşırız ama burada unutmamak gereken
konu sorgu süresi en uzun süreniz biriminizin süresi+ birleştirme süresidir.

Azure SQL Pool üzerinden örnek verirsek bir control node vardır bu compute node
yani işi yapacak nodelara sorguyu bö[Link] sizin datalarınız tek bir node üzerine
yığılmışsa işte bu çok uzun sürer sanki MPP değilmiş gibi tek node’u [Link] da
Data skew dediğimiz konudur.

Data Skew Nedir?


Yine Synapse SQL Pool üzerinden gidersek eğer compute node’lar arasında verinin
ne kadar farkla dağıldığıdır.
Burada hemen şöyle düşünebilirsiniz bir Fact tablonuz var 1 milyar satır.60 Compute
Node’a bölmek isterseniz 16.6 M kayıt olmalı her node’[Link] bu gerçekçi değildir
bu kadar mükemmel dağılım hiç bir zaman yakalayamazsını[Link] 13M olur kimisi
20M olur.İşte ortalamadan uzaklık data skew’i ifade eder ne kadar küçükse bu fark o
kadar [Link]’lar hemen hemen aynı sürede biter demektir.

HÜSEYİN ALBAYRAK
CTE(Common Table Expression) Nedir?
Aslında subquery olarak yazdığımız sorgulardı[Link] subquery’de bunu
yazmaktansa With ifadesi ile yazar memory’de bunu saklarız ve defalarca
[Link] subquery olarak yazsaydık aynı sorguyu defalarca kez yazmamız
gerekirdi bu da defalarca okuma işlemi demekti.

Eğer aynı subquery’i birden çok kez kullanıyorsanız sorgularınızda bunu WITH ile bir
temp tabloya memoryde tek bir kere okuduğunuzdan sorgunuz inanılmaz
hızlanacaktır.

Data Mesh Nedir?


Merkezi olmayan bir mimariden [Link] önemli farkı Data Lake tüm verilerin bir
yerde bir veri ekibi tarafından toplanırken,Data mesh’de her birim kendine ait verilerin
tutulmasından sorumludur.Özellikle büyük firmalarda bir çok veri kaynağı ve birimin
olduğu dünyada tek bir ekibin hepsine hakimiyeti azalmakta olduğundan bu tercih
ediliebiliyor.

HÜSEYİN ALBAYRAK

You might also like