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