BMB202. Veritabanı Yönetimi

advertisement
BMB202. Veritabanı Yönetimi
Ders 11.
OLAP, NoSQL, Clustering
Erdinç Uzun
NKÜ Çorlu Mühendislik Fakültesi
Bilgisayar Mühendisliği Bölümü
Dersin Planı
●
OLAP
●
NoSQL
●
Clustering
OLAP
On-Line Analytical Processing
●
●
OLAP, çok boyutlu veritabanları üzerindeki analiz
ihtiyaçlarına karşılık veren teknolojilerin genel
adıdır.
Çok boyutlu verileri incelemek için ilişkisel
sorguları kullanmak zor olduğundan analizlerde
OLAP sunucularının ve uygulamalarının sunduğu
kolaylıklar kullanılır, OLAP uygulamaları çok
boyutlu veritabanı yapısını anlar ve sorgulara
hızlı cevaplar verirler.
OLAP
●
OLAP sistemleri boyutları
kullanıcı tarafından tanımlanan
bir küp şeklinde hazırlanır; çok
boyutlu veri analizinde, veri
değişik boyutlardan incelenir,
mesela satış verisinin, zaman,
ürün ve bölge boyutlarından
bakılarak değişimleri
incelenebilir. Bu boyutlarda
istenilen ayrıntı ve özet
seviyesine hızlı bir şekilde
çıkılabilir. Böylece değişim
sebepleri daha iyi anlaşılabilir.,
verilerin farklı seviyelerde,
detaylı ve özet sunumlarına
erişmek mümkün olur.
Region = Bölge
Day = Gün
Product = Ürün
Niye OLAP
●
●
İlişkisel veritabanlarının boyutları artık bir çok
orta-büyük seviyeli uygulamalarda onlarca
gigabytetan terabyte'lara ulaşan boyutlarıyla
raporlamayı imkansız bir hale getiriyor, üstelik bu
raporlar genelde "elimizdeki ürünler ve onların
satış fiyatları" gibi kolay raporlar olamıyor.
Verinin ilişkisel yapısı nedeniyle karışıklığının
yanında, boyutunun büyüklüğü nedeniyle doğan
performans kaybı tahammül edilemez seviyelere
ulaşabiliyor. Bir rapor almak için saatlerce
bekleyen firmalar fazlasıyla çok.
Niye OLAP
●
OLAP'ın teknik yapısına bakmadan önce şu
soruya cevap verelim:
–
İlişkisel veri tabanı mı daha hızlıdır yoksa flat file (düz
text metni) mi?
Niye OLAP
●
●
●
Bu soruya hemen hepinizin "elbetteki ilişkisel veri tabanı
daha hızlıdır" dediğini duyuyorum.
Cevap için öncelikle veri tabanlarının tarihine bakalım.
Önceden bilgiler
–
ilişkisel olmayan,
–
yapısal text dosyalarında tutuluyordu. (hala bu tarz uygulamalar
yazdığımız oluyor).
Fakat 1969 yılında IBM de çalışan Edgar F. Codd
tarafından bulunan
–
●
ilişkisel yapı ile, çok daha az yere (fiziksel alana) çok daha fazla
veri depolamak mümkündü.
Fikir hepimizin şuanda fazlasıyla iyi bildiğimiz RDBMS
sistemleri. Tekrarlanmayan veriler, key'ler üzerinden
kurulan ilişkiler....
Niye OLAP
●
●
●
İlişkisel veritabanları yer olarak çok daha küçük
boyutlardadır fakat relational engine'in çalışması
DML işlemlerini (insert,update ve delete)
hızlandırsa da, select için hiç performanslı
sayılmaz.
Hatta şunu açıkça belirtmeliyim ki, ilişkisel veri
tabanlarında select işlemi çok daha yavaş çalışır.
Select işlemini hızlandırmak için hep yeni
teknikler aranmıştır.
–
Indeksleme ve arama algoritmaları Hash ve Trees
(Ağaçlar) gibi kavramları hatırlayınız...
Niye OLAP
●
●
●
Örnek Veri
–
008112 Kivanc
Özüölmez Bilgisayar Mühendisliği
–
998610 Deneme Deneme
–
....
İnşaat Mühendisliği
datalarını içeren 1 milyon kayıtlı bir dosyamız
olsun, tüm kayıtların fixed length ve bölümler ile
tümleşik olduğunu görüyoruz.
Halbuki bunu ilişkisel bir yapıda kurmak
isteseydik, bölümler için ayrı bir tablo yapardık,
bölümID yi primary key ve foreign key kısıtları
üzerinden bağlayarak bu işlemimizi
gerçekleştirirdik.
Niye OLAP
●
●
●
Bu 1 milyon kayıt içerisinde bizim aradığımız
kayıt 500 000. olsun. Bir text dosya içinde 500
000. kayıda ulaştığımızda aradığımız tüm verileri
almış oluruz.
Fakat benzer bir yapıda ilişkisel veritabanında
500 000. kaydı bulduktan sonra, o kaydın işaret
ettiği diğer tablolara gidip o tablolar üzerinde de
arama yapmamız gerekecekti.
Dolayısı ile aradığımız kayıt 500 000. sırada olsa
da, birlikte gelmesini istediğimiz datalara ulaşmak
için ayrı bir çaba sarf edeceğiz. (INNER JOIN ve
çoklu tablo yapısı)
Niye OLAP
Niye OLAP
●
●
●
●
“İndexleme var, bir çok arama algoritması (Hash,
Trees) var”
Fakat indexlemeler vs.. gibi işlemler flat filelar
üzerinde de yapılabilir!
Öyleyse karşımızda yine şu güzel oran var:
–
Performans
–
Depolama (Storage)
Flat File gibi yapılarda depolama miktarımız çok
ciddi oranlarda artmaktadır.
OLAP Tanımı
●
İlişkisel veri tabanının aksine veriyi tekrarlayarak,
mümkün olduğunca az ilişki ile (dolayısıyla çok
daha fazla veri alanı ile) veriyi depolayan, bu
şekilde veriye erişim hızımızı çok büyük ölçüde
arttıran yapılardır ve de yukarıya baktığımızda,
flat file mantığı ile uyuşan yapıdır.
OLAP Küp
●
●
●
OLAP sözcüğü ile bütünleşmiş
küp kelimesi karşımıza çıkar.
OLAP yapısının küpler ile ifade
edilmesinin sebebi, aynen
geometrik bir küp gibi kenarlara,
boyutlara, her birim hacminde
bir dataya sahip olmasıdır.
Dolayısı ile nasıl ki rübik küpünü
her çevirişinizde farkli bir yüzey,
farklı bir data (aynı verilerden
elde edilen farklı sonuçlar) ile
karşılaşır iseniz, OLAP
yapısındaki datanıza da her
farklı açıdan bakışınızda çok
farklı sonuçlara ulaşırsınız.
OLAP Küp
●
●
●
Örneğin, x adlı içeceğimizin yaz aylarındaki
turistik bölgelerdeki satış miktarlarının hava
sıcaklığı ve gün dağılımlı (hafta içi hafta sonu)
olarak gidişatını görmek istiyorsunuz.
Ya da y adlı ürününüzü alan kişilerin a ürününü
mü daha çok tercih ettiğini yoksa b ürününü mü
daha çok tercih ettiğini merak ediyorsunuz.
Soru örnekleri çoğaltılabilir. Önemli olan
beklentilerinize yönelik olarak kübünüzü
kurabilmektir. (aynen rübik kübü gibi, bir tur
çevirin tamamen farklı sonuçlarla karşılaşın.)
Veritabanı vs. OLAP
●
Büyük bir veri tabanınızın olması OLAP'a
ihtiyacınız var anlamına gelmez. Aksine,
yukarıdaki tüm benzetmeleri ve detayları
inceledikten sonra şu özet, bizi en doğru noktaya
getirir:
–
Veritabanı (Database) yapınız verilerinizi
depolayacağınız, işlemlerinizi yapacağınız,
sistemlerinizi çalıştıracağınız tabanınızdır.
–
OLAP ise varolan verilerinizi anlamlandırmanızı,
analiz edilebilir hale getirmenizi sağlar.
OLAP Özellikleri
●
Çok boyutlu inceleme özelliğine sahip olması.
●
Şeffaflık
●
Erişilebilirlik
●
Her seviyede sorgulama için aynı performansı
gösterebilme özelliği
●
Server - Client yapısında olması
●
Çoklu kullanıcı desteği
●
Esnek raporlanabilme
●
Boyutlar ve gruplandırmalarda sınırların
bulunmaması
OLAP Küpünün Oluşturulması
OLAP Küpünün Oluşturulması
●
Bir küp oluşturulurken bir ana veri tablosu kullanılır. Bu veri
tablosu küpün boyutları aracılığı ile özetlenecek olan ölçü
birimlerinin bulunduğu olay (fact) tablosudur. Olay tablosu
boyut tabloları ile ilişkilendirilir. Boyut tabloları zaman, ürün,
bayi, bölge, şehir gibi nesnelerden oluşur. Her bir boyut
tablosu kendi içerisinde düzeylere ayrılır. Örneğin, ürün
tablosunun düzeyleri Gazlı Meşrubatlar, Sıvı Yağlar,
Bisküviler, Buzdolabı, Çamaşır Makinesi vb. düzeylere
ayrılabileceği gibi Hızlı Tüketim Malları, Beyaz Eşya gibi
düzeylere de ayrılabilir. Bu düzeyler ise boyut tablolarının bir
kolonunu oluşturur. Boyutlar raporlamanın zenginleşmesini
sağlarlar. Olay tablosunda yer alan veriler, ölçütler 1,2,3,4
boyutlu küplerde özetlenebilir. Aşağıdaki şekilde 1,2,3,4
boyutlu olarak gösterilen küboidler yer almaktadır. Her bir
küboid kendi boyutu kadar boyut tablosundan oluşur.
OLAP Küpünün Depolanması
●
Bir küpün depolanması için 3 farklı yöntem vardır.
–
MOLAP: MultiDimensional On-Line Analytical
Processing
–
ROLAP: Relational On-Line Analytical Processing
–
HOLAP: Hybrid On-Line Analytical Processing
MOLAP
MultiDimensional On-Line Analytical Processing
●
●
●
●
Molap depolama yöntemi detaylı verilerin analiz
server’da depolanması söz konusu olduğunda
tercih edilen yöntemdir.
En yüksek performansa sahiptir.
Yapılan sorgulamalar ilişkisel veritabanı
sisteminde yapmak yerine analiz server’da
yapılır.
Bu yüzden herhangi bir nedenden dolayı ilişkisel
veri tabanımızın kapanmasında dahi işlemlerine
devam eder.
ROLAP
Relational On-Line Analytical Processing
●
●
●
●
Bu OLAP depolama yönteminde data ilişkisel
veritabanları üzerinde kalır.
Dinamik çok boyutlu verilerin analizinde tercih
edilir.
Gerçek zamanda yani analiz sırasında yapılan
veri güncellemelerini destekleyebilir.
MOLAP’a göre performansı düşüktür.
HOLAP
Hybrid On-Line Analytical Processing
●
●
Performans olarak MOLAP ile ROLAP
arasındadır.
MOLAP yönteminde olduğu gibi detaylı verinin
kopyası oluşturulmadığından dolayı kullanılabilir
disk oranı düşük olduğunda tercih edilebilir bir
uygulamadır.
OLAP Yapısı ve OLAP Sunucusu
●
Veri Ambarı, Data Mart, ETL Süreci
Veri Ambarı
●
●
Veri ambarı, analiz amaçlı sorgulamalar yapmak
için özelleşmiş bir veritabanıdır.
Temel amacı, işletmeye ait güncel olmayan
kayıtları saklamak ve bu kayıtlar üzerinde daha
kolay analizler yapılmasını sağlayarak iş
ihtiyaçlarını anlamaya ve işletme fonksiyonlarını
yenilemeye yardımcı olmak, yani iş zekasına
kolaylık sağlamaktır.
Veri Ambarı Temel Özellikleri
●
Subject Oriented(Konu Yönelimlilik)
–
●
Integrated(Bütünleşmiş)
–
●
Tek bir konu etrafında birleşen veriler, kendi aralarında da bütünleşik
olmak zorundadır. İsimlendirme, veri tipleri, karakter kümesi gibi
konularda tüm veriler ortak bir formata uymak zorundadır.
Time-variant(Zaman-Değişimlilik)
–
●
Veri ambarları tek bir iş konusu için oluşturulurlar. Bu konu ürünler,
satışlar, müşteriler vb olabilir. Belirlenen konu dışındaki veriler veri
ambarına alınmazlar, böylece tek bir konuya odaklı homojen bir veri
kümesi oluşmuş olur.
Zaman değiştikçe veri ambarının odak noktası da değişir çünkü veri
ambarı, temel veri kaynaklarının belli bir dönemdeki kopyasıdır. Yani
veri ambarı sadece belli bir döneme ait ihtiyaçlara cevap verir.
Non-Volatility(Kalıcılık)
–
Veri ambarı bir döneme ait analizlere cevap verdiğinden taşıdığı veriler
kalıcıdır, güncellenemez veya silinemez.
Data Mart
●
●
"Data Mart"lar veri ambarlarının alt kümeleridir. Veri
ambarları bir iş probleminin tamamına yönelik bir bakış
sağlarken, data mart'lar sadece belli bir kısma bakış
sağlarlar.
İşletme üzerindeki karar vericilerin, işe ait tüm veriler
üzerinde analiz yapmasına gerek olmayabilir. Bu
kişiler sadece kendi birimleriyle ilgili verilere ulaşarak
bunlara bağlı analizler yapmayı isteyebilirler, bu
durumda veri ambarındaki tüm karmaşıklıklık içinde
boğulmalarına gerek yoktur. Veri ambarlarının sadece
bir konu kapsamında alt kümesini temsil eden data
mart'lar, veri ambarları kadar ayrıntılı veri de
barındırmazlar. Bu yüzden kolay anlaşılabilir ve
yönlendirilebilirlerdir.
Data Mart Özellikleri
●
●
Bağımsız: Data mart'taki veri doğrudan
operasyonel sistemden veya dışarıdan gelmiştir.
Farklı departman-bayi verileri bu tür data
mart'larda tutulur.
Bağımlı: Verileri doğrudan üst küme olan veri
ambarından gelmiştir. Şirket içi konuya yönelik
analizler yapan data mart'lar bu tür yaratılır.
Data Mart
●
●
Data mart'lar veri ambarlarından
–
daha hızlı yaratılır,
–
daha hızlı sorgulanır ve
–
daha hızlı cevap döndürürler.
Analitik sorgulama sürecine performans
kazandırırlar.
ETL
●
●
●
ETL(Extract-Transform-Load; "çıkart-dönüştür-yükle") temel olarak
kullanılacak verinin dış kaynaklardan çıkarılması, verinin iş önceliklerine
göre temizlenmesi, birleştirilmesi, kısıtlarının ve kalitesinin dönüştürülmesi
ve son hedefe(veritabanı veya veri ambarı) yüklenmesi sürecine denir.
Yüksek boyutlu veriler operasyonel sistemlerden alınıp veri ambarı veya
data mart'lara yüklenirken ETL sürecine sokulurlar.
Amaç iş zekasında kullanılacak verinin en etkin kullanılabilecek hale
sokulmasıdır.
OLAP Desteği olan Firmalar
●
Microsoft
●
Oracle
●
IBM
●
SAP
●
Birçok OLAP uygulaması çıkmıştır.
Basit bir OLAP Örneği
OLAP’tan önce veritabanı içinde
OLAP Yapısı
OLAP Verilerini Sorgulama
●
SQL ilişkisel veritabaları için bir sorgulama dili
iken Multidimensional Expressions (MDX), OLAP
veritabanı için bir sorgulama dilidir.
NoSQL
●
●
●
●
●
NoSQL, Not Only SQL in kısaltılmasından gelmektedir.
NoSQL 1998 yılında ortaya çıkmıştır. Geliştiricisi Carlo
Strozzi'dir.
NoSQL'i kelime anlamından yola çıkarsak. Sql'e bir alternatif
olarak görebiliriz.
Sql diyince tablolar, alanlar ve ilişkisel veritabanı aklımıza
gelmekte.
NoSQL'de ise bu düşünce tam olmasa da ortadan kalkıyor.
–
Google ve Amazon gibi firmalarında aralarında bulunduğu büyük
sistemler de NoSQL'i kullanmaktadır.
–
NoSQL kavramı tek başına yeterli değildir. NoSQL sistemini
kullanan araçlar ile kullanılmaktadır.
–
MongoDB bunların başında gelmektedir.
NoSQL
●
●
Bu veri depolarının sabit tabela düzenlerine
ihtiyaçları olmayabilir, alışılagelmiş join işlemleri
kullanılmaz, tipik olarak yatay ölçeklemeye gidilir.
Akademisyenlerce ve makalelerde tipik olarak
böyle veri depolarına yapılanmış bellek
(structured storage) denir.
NoSQL
●
2009'da Atlanta'daki “İlişkisel olmayan veri
depolarıyla ilgili bir konferansı”
–
Relation=false; ilişkisel=yanlış; NoRel;
–
Gerçek dünyadan faydalan
select fun, profit from real_world where ilişkisel=false;
Niye NoSQL
●
Tipik modern ilişkisel veritabanları
●
●
●
–
●
●
çok sayıda belgeyi indeksleme,
yoğun trafiği olan sunan Web sayfalarında
ve streaming medya sağlama
gibi kimi yoğun veri uygulamalarında yetersizlik
göstermişlerdir.
Tipik VTYS uygulamalarında transaction işlemi
önemlidir. Başka bir deyişle ACID özelliği vardır.
NoSQL ilişkisel olmayan ve çoğu zaman ACID
garantisini vermeyi amaçlamayan dağıtık veri
depolarına damgasını vurmak istemiştir.
–
ACID, geçmiş derslerde anlatıldı.
NoSQL Avantajları
●
Sıkça güncellenen kullanılan verilerin hızla
kaydedilmesi ve cevap alınması.
●
Veri yönetiminin kolay olması
●
Maliyet'in düşük olması.
●
NoSQL sisteminin yönetimi kolay olması.
●
SQL'de ki gibi sorgulama işlemi yapılmaması.
NoSQL Avantajları
●
●
Birçok NoSQL sistemi, verilerin farklı sunucularda
yedeklemesini sağlayan dağıtık mimariyi kullanır.
Bu saklamalar genelde dağıtık hash çizgileri ile
yapılır.
Böylece sistem kolayca yeni sunucular eklenerek
büyütülebilir ve bir sunucunun arızalanmasına
katlanılabilir.
Ne zaman NoSQL
●
●
ACID özelliği veri kaybına yada bozulmasına
imkan verilmemesi gereken sistemler için çok
önemlidir.
Örnek olarak bankacılık, alışveriş uygulamaları
gibi para üzerinden işlem yapılan uygulamalarda
NoSQL kullanmak yanlış bir seçim olacaktır.
NoSQL kullanan var mı?
●
Akademik Tartışmalar
–
Bazılarımız bunu yeni ve muhteşem bir teknoloji
olarak görürken, bazılarımız bu sistemlerin tek başına
yeterli olamayacağını düşünüyor. Yani bilişim dünyası
profesyonelleri henüz NoSQL kavramı konusunda
ortak bir görüş sahip değil.
NoSQL kullanan var mı?
●
Google ve Amazon tarafından kullanılan kendilerine özgü
NoSQL sistemleri vardır.
–
Google indekslediği inanılmaz büyüklükteki internet verisini
RDBMS’de değil, Big Table üzerinde tutuyor. Üstelik bu verilere
RDBMS üzerinden erişebileceğinden çok daha hızlı ve belki en
önemlisi, çok daha ucuza erişebiliyor.
–
NoSQL sistemlerin ortaya çıkışı genel olarak büyüyen internet
verisinin RDBMS’de performanslı bir şekilde işlenememesinden
kaynaklanıyor.
–
Veri büyüklüğü ve trafik olarak belirli büyüklüğe gelen ve hali
hazırda açık kaynaklı veritabanı sistemleri kullanan firmalar bir
noktada bu veritabanlarının kısıtlarına takılıyorlar.
–
Dikey büyüme maliyetli olduğundan, yatayda büyüyebilmek için
daha fazla önbellek (cache) kullanımı, verilerin programatik olarak
dağıtılması (sharding) gibi teknikleri deniyorlar. Bunların da
yetmediği durumda NoSQL sistemleri ortaya çıkmaya başlamıştır.
NoSQL ve VTYS Farkları
●
Veri Tutuluş Şekli
–
Klasik VTYS’lerde veriler tablolarda, tanımlı
sütunlarda satır satır bulunurken, NoSQL sistemler
sabit tablo tanımlarına bağımlı değillerdir. Yani daha
sonradan özel bir işlem yapmadan yeni kolonlar
eklenebildiği gibi, kayıtlar arasında kolon farklılıkları
olabilir. Örneğin 1. satırda a ve b kolonları varken 2.
satırda bambaşka kolonlar bulunabilir. Bu esnek yapı
bize denormalizasyon kolaylığı sağlar.
NoSQL ve VTYS Farkları
●
Denormalize veriler çalışma performansını etkilemez.
–
VTYS’lerde veriler ilişkilerine göre ayrı tablolara düzenli bir
şekilde yerleştirilerek normalize edilirken, verilere erişim için
birleştirme (join) kullanılır. Dağıtık sistemlerde birleştirme
operasyonu sıkıntılara sebep olur. Çünkü birleştirilmek istenen
veriler farklı parçalarda olabilir. Bu yüzden dağıtık sistemlerde
birleştirme işlemi elle yapılmalıdır. Yani önce a verisi çekilir, sonra
bununla ilişkili b verisi çekilip programatik olarak birleştirilme
yapılır. Normal sistemlerde bu işlemler performans kaybına
sebep olurken, dağıtık sistemlerde bu performans kaybı sistemin
genel performansı yanında önemsizdir. İşte bu sebeple dağıtık
sistemlerde birleştirme operasyonu yapmak yerine veri
denormalize tutularak verilere erişim kolaylaştırılır. Denormalize
edilmiş veriler içerisinde veriler kendini tekrar edecektir ancak bu
da dağıtık sistemlerin çalışma performansını arttırdığı için önemli
değildir. NoSQL sistemler de bu sebeple sabit tablo tanımı
içermez, verilerin denormalize tutulmasını kolaylaştırır.
NoSQL ve VTYS Farkları
●
Anahtar üzerinden daha hızlı erişim
–
Klasik VTYS’lerde verilerin tekil birer anahtar (primary key) ile
birbirlerinden ayrılması zorunlu değildir. Ancak NoSQL
sistemler temel olarak verilere tekil anahtarlar üzerinden erişir.
–
Her NoSQL sisteminde ikincil indeks (secondary index)
yeteneği de bulunmayabilir.
–
Bu yüzden verilere erişim SQL sorguları ile yapıldığı gibi kolay
yapılamaz. Uygulamanın özelliğine göre birincil anahtarlar
belirli bir mantığa göre verilir ve bu sayede veriye erişmeden
önce zaten bu anahtar biliniyor ya da oluşturulabiliyor olur.
Örneğin zamana göre artan ön ek (prefix), kaydın anahtarı ile
birleştirilerek tek seferde ilgili kaydın belirli bir zaman
aralığındaki kayıtlarına erişmek mümkündür. Bu sayede
herhangi bir sorguya gerek olmaksızın tamamen anahtarlar
üzerinden verilere hızlıca erişim sağlanmış olur.
NoSQL ve VTYS Farkları
●
NoSQL sistemlerin bazılarında map reduce
yeteneği bulunmaktadır. Bu sayede VTYS
üzerinde SQL ile gerçekleştirilmesi çok kompleks
olan analizler, map reduce ile kolay bir şekilde
gerçekleştirilebilir.
Map Reduce
Dönüşüm-Özet
●
●
●
Dağıtımlı çalışma, iş süreçlerinin
bölümlendirilmesidir. Böylece iş yükü azalır,
performans artar.
Yazılım dünyasındaki iş süreçlerinin
bölümlendirilmesi ise dağıtık programlamadır ve
dağıtık programlama performansı ve dolayısıyla
hızı arttırır.
Google’ın arama, depolama ve indexleme gibi
işlemleri birden fazla bilgisayara dağıtarak
yaptırması, dağıtılmış programlamaya bir örnektir
ve bu dağıtımlı programlamayı MapReduce ile
yapmaktadır.
Map Reduce
●
●
MapReduce, Google tarafından geliştirilmiş,
birbirine bağlı ve birlikte çalışan bilgisayar
grubunun (computer cluster) büyük veri kümeleri
üzerinde dağıtılmış programlamayı destekleyen
bir yazılım kütüphanesidir.
Yazılım kütüphanesinde, genellikle fonksiyonel
programlamada kullanılan haritalama (map) ve
azaltma (reduce) fonksiyonlarından esinlenilse
de, bu fonksiyonların MapReduce’deki amaçları
orijinal biçimleriyle aynı değildir.
Map Reduce
●
Çok sayıda veriyi işleyerek başka verileri
türetmek, çok zahmetli bir iş olabilir, fakat bu
işlem MapReduce ile çok daha kısa zamanda
daha performanslı şekilde yapılabilir.
MapReduce,
–
Otomatik Paralellik ve Dağıtım
–
Hata Toleransı
–
I/O Zamanlama
–
Durum ve İzleme
gibi özellikler sağlar.
Map Reduce Adımları
●
Map Adımı
–
●
Ana düğüm girişi alır, daha küçük alt problemlere
ayırır ve bunları çalışan düğümlere dağıtır. Çalışan
düğüm bunu tekrar sırayla yapabilir, bu da çok
seviyeli ağaç yapısına yol açar. Çalışan düğüm küçük
problemleri işler, ve cevapları tekrar ana düğüme
verir.
Reduce Adımı
–
Ardından ana düğüm alt problemlerin tümünden
cevapları alır ve onları bazı yollarla birleştirerek
cevabı elde eder.
Map Reduce Adımları
Map Fonksiyonu
●
MapReduce ‘un Map ve Reduce fonksiyonlarının
ikisi de, (key, value) çiftinde yapılandırılmış
verilere göre tanımlanmıştır. Map veri alanında
bir türle verinin bir çiftini alır, farklı alanda bir liste
çifti döndürür.
–
●
Map(k1,v1) -> list(k2,v2)
Map fonksiyonu giriş dataset’indeki her maddeyi
paralel olarak uygular. Bu her çağrı için (k2,v2)
çiftinin bir listesini üretir. Ardından MapReduce
tüm liste ve gruptan aynı anahtar ile çiftleri
birleştirir, böylece farklı üretilen anahtarların her
biri için bir grup oluşturulur.
Reduce Fonksiyonu
●
Reduce fonksiyonu da her grubu paralel olarak
uygular, aynı alandaki değerlerin bir yığınını
sırayla üretir.
–
●
●
Reduce(k2, list (v2)) -> list(v3)
Her Reduce çağrısına bir v3 değeri, ya da boş
değer üretir, yine de bir çağrı birden fazla değerin
dönmesine izin verir.
Böylece MapReduce değerleri içeren bir listeden
(key, value) çiftleri listesi dönüştürür.
Map Reduce
Örnek
●
İçerisinde meyve adı ve satın alınan fiyat bilgisi bulunan
veriler düşünelim, ve bu verilerin işlenmesi, o meyveye
ait toplam harcama bilgisi isteniyor. MapReduce ile bu
basit ve hızlı şekilde yapılabilir. Verilerimiz aşağıdaki
şekilde olsun :
–
armut 10
–
portakal 3
–
incir 9
–
armut 9
–
armut 10
–
incir 3
–
mandalina 2
–
erik 29
Map Reduce
Örnek
●
Anahtar değerleri meyve isimleri olacak, ve 2 adet
MapReduce düğümümüz var ise bu veriler 2 parçaya
bölünür ve MapReduce’a verilir.
–
armut 10
–
portakal 3
–
incir 9
–
armut 9
-----–
armut 10
–
incir 3
–
mandalina 2
–
incir 29
Map Reduce
Örnek
●
●
●
Map İşlemi
Her düğüm, kendi içinde Map fonksiyonunu
çalıştırırken, benzer anahtar değerlerini aynı
toplama yazacaktır.
–
Bölüm 1) armut = 19, portakal = 3, incir = 9.
–
Bolum 2) armut 10, incir = 32, mandalina = 2.
Böylece Map işlemi bitmiştir, indirgeme (Reduce)
işlemine geçilecektir.
Map Reduce
Örnek
●
●
●
Reduce İşlemi
Reduce kısmında her bölümdeki anahtarlar kendi
aralarında toplanır ve sonuç elde edilir.
–
armut = 29
–
portakal = 3
–
incir = 41
–
mandalina = 2
Veriler MapReduce ile kolayca işlenmiştir.
Map Reduce
Hadoop
●
●
Hadoop, Java programlama dilinde yazılmış açık
kaynak kodlu bir yazılım kütüphanesidir.
Amacı Google dosya sistemi teknolojisi olan
MapReduce algoritmasını birçok bilgisayara
dağıtarak uygulamayı sağlamaktır.
Map Reduce
Hadoop Uygulamaları
●
●
Facebook Hadoop kullanarak kullancı
davranışlarının analizini yapmakta ve sosyal
reklamların etkisini ölçmektedir.
New York Times bilgi işlem ekibi Hadoop
kullanrak 150 yıllık arşivlerindeki 11 milyon
makaleyi dijitalleştirmiş ve aranabilir hale
getirmiş.
NoSQL Sistemleri
●
NoSQL sistemlerini genel olarak 3 grupta
toplayabiliriz:
–
Döküman (Document) tabanlı
–
Anahtar / Değer (Key / Value) tabanlı
–
Grafik (Graph) tabanlı
NoSQL Sistemleri
Döküman (Document) tabanlı
●
Bu sistemlerde bir kayıt döküman olarak
isimlendirilir. Dökümanlar genelde JSON
formatında tutulur. Bu dökümanların içerisinde
sınırsız alan oluşturulabilir.
–
MongoDB,
–
CouchDB,
–
HBase,
–
Cassandra ve
–
Amazon SimpleDB
bunlara örnektir.
MongoDB
●
●
●
MongoDB (“humongous”); ölçeklenebilir, döküman
tabanlı, C++ ile geliştirilmiş açık kaynak, NoSQL
veritabanı uygulaması.
MongoDB, özellikle hız gerektiren ve geleneksel ilişkisel
veritabanlarının (rdbms) hantal ve yavaş kaldığı yapılarda
kullanılmaktadır. Örnek kullanım alanları arasında:
–
yüksek hacim/içerikli problemler
–
analiz için veri saklanması
–
caching sistemleri
–
web içerik yönetim sistemleri
–
web yorum/etiket saklama ve yönetme
İkililer, Windows, Mac OS X, Linux ve Solaris için
mevcuttur.
NoSQL Sistemleri
Anahtar / Değer (Key / Value) tabanlı
●
Bu sistemlerde anahtara karşılık gelen tek bir
bilgi bulunur. Yani kolon kavramı yoktur.
–
Azure Table Storage,
–
MemcacheDB ve
–
Berkeley DB
bunlara örnektir.
NoSQL Sistemleri
Grafik (Graph) tabanlı
●
Diğerlerinden farklı olarak verilerin arasındaki
ilişkiyi de tutan, Graph theory modelindeki
sistemlerdir.
–
Neo4J,
–
FlockDB
bunlara örnektir.
Ne zaman NoSQL?
●
●
●
Uzun yıllardır VTYS kullanıyorsanız NoSQL
sistemlere geçmek size çok anlamlı gelmeyebilir.
Ancak internet işiyle uğraşanlar için VTYS ile bir
tıkanma noktası var.
Bu noktaya ulaştığınızda NoSQL çözümleri sizin
için çok faydalı olabilir. Şu anda olgunlaşmış
durumda bir çok NoSQL proje mevcut, bunları
alıp sisteminize adapte edebilirsiniz.
Elbette her durum için NoSQL çözümleri uygun
olmayacaktır, önemli olan uygun alanlarda
kullanabiliyorsanız NoSQL çözümlerini
değerlendirmenizdir.
VTYS Clustering
●
●
Veritabanı işlemlerini bir küme içerisindeki
sunucular üzerine yayarak, performans, veri
güvenliği ve ölçeklendirme bakımından faydalar
sağlar.
Replikasyondan farkı; kümedeki veri
sunucularının hepsi, verileri gecikme olmadan
kendilerine kopyalarlar. Replikasyonda, tüm işler
master sunucuda yapılır, slave'ler belirli
aralıklarla master üzerindeki bilgileri kendileri için
kopyalarlar. İşte bu belirli süre aralıklarında
yaşanan sorun, veri kaybına sebep olur.
Kümelemede ise kayıt söz konusu olmaz.
VTYS Clustering
MySQL Clustering
●
●
●
MySQL Cluster bir bellek içi yüksek erişilebilirlik
çözümüdür. Paylaşılan merkezi bir veritabanı mimarisine
sahip olmadığından “tek nokta çökmesi” riskini minimize
eder. Tüm transaction’lar diğer node’lara hafızadan
replike edilir ve bu şekilde senkronizasyon sağlanır. Bu
mimari yapı Cluster’a harika özellikler kazandırır, en
başta dediğim gibi tek nokta çökmesi riskini en aza
indirir, kolayca başka bir storage node eklenebilir ve
load balanced çözümleri mümkün kılar.
Load balanced yük dağılımı yapmak için kullanılan
çözümlerdir.
Örnek bir çözüm:
–
http://www.probilgi.com/mysql-cluster-ve-loadbalance-kurulumu.html
VTYS Clustering
MySQL Clustering
Kaynak
●
http://www.cagatayyurtoz.com/drupal-7.0/content/olap-nedir
●
http://www.yazgelistir.com/makale/olap-nedir-
●
●
http://www.cagatayyurtoz.com/drupal-7.0/content/k%C4%B1sacaveri-ambar%C4%B1-olap-etl-data-mart-nedir
http://enginkara.net/olap-nedir/
●
http://blog.burakkutbay.com/nosql-nedir-nosqli-tanimak.html/
●
http://tr.wikipedia.org/wiki/NoSQL_(kavram)
●
http://devveri.com/nosql-nedir
●
http://web.firat.edu.tr/bilmuh/bmu355/files/.../08260543-MapReduc
e.pptx
Download