1 Şubat 2016 Pazartesi

NoSQL Dünyası - 2 (Veri Tutarlılık Modelleri ACID vs BASE)

Serinin bir önceki yazısında geçmişten bu güne verinin evriminden bahsettik. Yeni cesur dünyaya gelene kadar değişen taleplerin nasıl yönetildiğini, ortaya atılan sistemlerin güçlü ve zayıf yanlarının neler olduğunu özetledik.

Önceki yazıya göz atmak isterseniz şu linki kullanabilirsiniz:
http://abdullahkise.blogspot.com.tr/2015/03/nosql-dunyas-1-veri-yonetiminin-evrimi.html

Geldiğimiz noktada temel olarak iki ayrı talep karşımıza çıkmakta;

  • Ya verilerimiz son derece tutarlı olacak 
  • Ya da arıza bile olsa işlemlerimiz kesintiye uğramadan sistem son derece hızlı çalışacak.


Artan hız tutkusu, büyüyen ve çeşitlenen veri, kalabalıklaşan kullanıcı kitlesi gibi parametreler alt yapıya maliyetli yatırımlar yapmayı gerektirdi. Bu parametre değerlerinin dönem dönem farklılık göstermesi de alt yapı hazırlığındaki zorluğu bir kademe daha arttırdı.

Bir önceki yazımızda değindiğimiz gibi bu parametreler karşısında sisteminiz için iki tür ölçeklendirme yapabilirsiniz:

  1. Dikey Ölçeklendirme (Vertical Scaling - Scale Up) : Tek bir cihaza CPU, Memory gibi daha fazla kaynağın eklenmesi anlamına gelir. Sanallaştırma teknolojisi bu işlemlemi bir nepze olsun kolaylaşmıştır.
  2. Yatay Ölçeklendirme (Horizontal Scaling - Scale Out) : Sisteme görece daha ucuz bir çok cihazın bağlanması anlamına gelir.


Tek bir bilgisayarı güçlendirmek ve onunla çalışmaya devam etmek çok temiz görünüyor olabilir. Ancak bu şekilde güçücünüz bir yere kadar yetebilir. Tek bir süper bilgisayarın tüm dünya taleplerine cevap vermesi mümkün değildir (en azından şimdilik.).  Dakikalar içerisinde terebaytlarca veri türetilebilen milyonlarca kullanıcının memnuniyetinin devam ettirildiği sosyal medya sistemlerinin arkasında tek bir makine olduğunu düşünebiliyor musunuz? Böyle bir süper bilgisayar çok pahalı olurdu. Ayrıca bu cihazın başına bir şey gelme ihtimali gücüne olan güveni yerle bir ediyor.

Bu durumda yatay ölçeklendirme daha mı mantıklı acaba? Yatay ölçeklendirme için bir araya getirdiğiniz cihazlar gelen talepleri güçlerini birleştirerek cevaplayabilirler. Harika! Peki bu cihazlar arasındaki iletişimde bir aksama olursa ne olur? Sistem durur mu? yoksa veri kaybına göz yumulur hayat devam mı eder? Cevapları yazının devamını okuyarak siz verebilirsiniz.

eTrade'in açıklamasına göre 1 saatlik kesintileri 8 milyon dolara tekabül ediyor. Dell 10 saatlik kesintisinin kendilerine 83 milyon dolara mal olduğunu ifade ediyor. Amozon'un 100 mili saniye daha hızlı çalışması karlarını %1 arttırabiliyor. Düşük performans, kesinti ve veri kaybı çoğu zaman kolayca tolere edilemeyecek sonuçlar doğurur.

En başta belirtiğimiz iki temel talep; tutarlılık ve erişilebilirlik, veri yönetim sistemlerinde iki farklı türde modelin doğmasına sebep olmuştur. Bunlar ACID ve BASE modelleridir.

ACID Modeli


Geleneksel veritabanı ile çalışmış olan hemen hemen herkesin aşina olduğu bir modeldir. Bu modelde çalışan sistemler tutarlılık konusunda son derece hassastır ve veri kaybına oldukça pesimist yaklaşır. ACID, yeteneklerini ortaya dökebilmek için kilit mekanizmalarını kullanır. Bu mekanizmalar verinin diskte ve memoryde tüm kullanıcılar tarafından aynı görünmesini, verinin güncellenmesi sırasında onay gelene kadar tüm istemcilerin bekletilmesini mümkün kılar. Gerekirse tüm veritabanı kilit altına alınır. Gerektiğinde çakışan işlemlerin en maliyetli olanı hariç hepsi iptal edilir. Tabi ki pesimistlik seviyesine müdehale edebilirsiniz. Ancak ACID pesimist olması için dizayn edilmiştir.

Bu yaklaşım, verileri denetim altında tutan lock ve latch mekanizlarını kullanarak veri bütünlüğünü son derece güvenli noktaya taşımıştır. Hızdan daha çok veri tutarlılığının ön planda olduğu, özellikle paraya dokunan işlemler için ACID vazgeçilmezdir. 

Şu sözü her hatırladığımda hak veriyorum; Güçlü yanlar aynı zamanda zaafları doğurur. Çoğu zaman dikey ölçeklendirmede bazen de yatay ölçeklendirmede karşımıza çıkan bu modelin yetenekleri sistemleri hız konusunda adete boğazlamaktadır.

ACID, baş harflerini aldığı şu prensipleri garanti eder:
  • Atomicity: Ya var ya yok prensibidir. Mesela bir banka havalesi yaptınız. Eğer havale işlemi gerçekleşmişse, sizden para eksilmiş, karşıya para eklenmiş demektir. Bunlardan biri hatalıysa havale işlemi geri alınır. Her şey havale öncesi haline döner. Paranız cebinizde kalır.
  • Consistency: Yapılan işlemin mantıklı ve tutarlı olması prensibidir. İsteklerin veriyi bir tutarlı durumdan başka bir tutarlı duruma sokması gerekir. Ben 5 liralık havale yaptım, karşıya 2 lira gitti gibi bir şey söz konusu olamaz. Benden 5 lira eksildiyse karşıda da 5 lira artmalıdır. 2 lira görünüyorsa hesap özetine bakmakta fayda var. Bankanın o arada yaptığı başka bir hinlik olabilir.
  • Isolation: İşlemin diğer işlemlerden izole olması prensibidir. Havale işlemi devam ederken veya henüz ben gönder onayını vermemişken kimse ne gönderiyor olduğumu bilemez. (Çeşitli Isolation Level'ler ile bu prensip esnetilebiliyor.)
  • Durability: Yapılan işlemlerin kalıcı olduğunu ifade eden prensiptir. Verinin son halini sistem kayıt altına alır. Onay sonrasında bir sistem hatası bile olsa yeniden başlatıldığında verinin en son hali yerli yerindedir. Yani havale yaptınız karşıya para gitti ve yerine ulaştı. Sistem çökse bile paranız yerine ulaşmış demektir. Ancak verinin bulunduğu depolama alanı zarar görmüşse geçmiş olsun. Bu ACID'in garanti ettiği bir şey değildir. O sadece depolama aygıtınız sağlıklı çalıştığı sürece garanti verebilir. Bu aşamadan sonrası IT ekibinin Disaster Recovery yeteneklerine ve elindeki imkanlara kalmış demektir.
Özet olarak ACID tutarlılık konusunda çok güçlüdür. Ancak kilit mekanizları çok fazla denetim yaptığı için sistemleri hız konusunda oldukça zayıf düşürmektedir. Geleneksel veritabanlarında (RDBMS) sıkça karşılan bir durum.

Hemen yeri gelmişken söyleyelim; SQL Server tarafında en azından bir kısım işlemler için bu zaaftan kurtulabilmek adına InMemory konsepti hayata geçirilmiştir. Hekaton adıyla duyurulan bu konseptte lock ve latch yer almamaktadır. Böylece 100 kata varan performans artışı elde edilebilmiştir.

Tutarlılığın ön planda olduğu özellikle paraya dokunan yerlerde ACID vazgeçilmezdir. Eğer benim için sosyal medya projelerinde olduğu gibi tutarlılıktan daha çok hız önemli diyorsanız, o zaman felsefenizi değiştirmeniz gerekir. Bu durumda BASE size ilaç gibi gelecektir.

BASE Modeli


Yatay ölçeklenmiş sistemlerde karşımıza çıkan bu modelde ACID'de olduğu gibi kilit mekanizmaları yer almaz. Tutarlılık konusunda son derece optimist bir yaklaşım söz konusudur. Bazı teknikler sayesinde tutarlı bir sistem kurulabilse de bu modelde asıl önemli olan taleplere hızla cevap verebilmektir. Sistemin büyüklüğüne ve sağlık durumuna bağlı olarak veri tutarlılığı yerlerde sürünebilir. Bir makinede arkadaşlık isteğini kabul ettiğiniz kişiye diğer makineden hemen baktığınızda isteğinin kabul edilmemiş olduğunu görmeniz muhtemel. Tabi ki kısa bir süre sonra onay tüm cihazlardan görünür hale gelir.

BASE, "Basically Available Soft-state services with Eventual-consistency" ibaresini ifade eder.
Yani, sürekli ayakta olan bu sistem kullanıcıların isteklerine hızla cevap verir. Veri tutarlılığını garanti etmez. Bir süre sonra veriler tüm sistemde tutarlı duruma gelir. Tutarlılık sağlanana kadar talebin yönlendiği cihazın elinde ne varsa istemciye o iletilir.

Yukarıdaki ibaredeyi ele alırsak;
  • Basic Availability: Sistem CAP teoremine uygun olarak sürekli çalışır (CAP teoremine sonraki yazımızda odaklanacağız). Her bir talebe cevap verir. Fakat bu zorunluluk bir hata durumunda bile geçerli olduğu için veri tutarlılığını garanti etmez ve tüm veriye erişimi mümkün kılmaz. Yani bir nevi verinin bir kısmından feragat etmek suretiyle daha basit bir erişilebilirlik hizmeti almış olursunuz.
  • Soft State: Verileri yazılır ancak tutarlı olmayabilir. Bu developerin görevi olarak görünür. Ayrıca veriler tüm cihazlarda aynı şekilde görünmesi garanti edilmez. 
  • Eventualy Consistency: İşlemlerin etkileri sistemin durumuna bağlı olarak ancak bir süre sonra diğer cihazlara yansır. Yani neredeyse tutarlı bir sistem.
Kim bu modelde çalışmak ister ki demeyin. Günlük hayatta her yanımızı saran  sosyal medya bu model sayesinde milyonlara hizmet verebilmektedir. Birbirine bağlı binlerce cihazdan yüzlercesi gün içinde arızalanır. Fakat hizmet kesintisiz devam eder.

Peki, Ara Çözümler Var mı?


Yukarıda ACID ve BASE modellerinin varsayılan çalışma şekillerini anlattık. ACID modeli içerisinde "Isolation Level" tercihi çalışma şeklinizi BASE modeline benzetmenize olanak tanır. Benzer şekilde BASE modelindeki çalışma şekliniz de master kullanımı, kendi yazdığını okuma ve oy çokluğu gibi teknikler sayesinde ACID modeline benzetilebilir.

Yani bazı konfigrasyonlar sayesinde modeller birbirine yakınsayabilir. Ancak BASE yatay ölçeklenebilen NoSQL dünyasının, ACID ise dikey ölçeklenebilen geleneksel RDBMS dünyasının felsefesidir. Tabi istisnalar da mevcut. Mesela bazı NoSQL(NewSQL) veritabanları ACID'i destekler. Neo4J gibi.

Bu yazımızda veri tutarlarlılık modelleri olan ACID ve BASE'i ele aldık. Tutarlık (Consistency) ve erişebilirlik(Availability) ihtiyaçları göz önünde bulundurularak bu modeller arasında geçiş yapılabilir veya modeller bir yere kadar esnetilebilir. Tutarlılığın olduğu köşeyi ACID, erişebilirliğin olduğu köşeyi BASE almış durumda. Dikey ölçeklendirme dünyasında ACID, yatay ölçeklendirme dünyasında BASE hüküm sürmekte. Projelerinizi bu iki modelin karakterine bağlı olarak geliştirirsiniz. ACID tarafında kalmanız gerekiyorsa geleneksel RDBMS veya NewSQL teknolojilerine, BASE tarafında kalmanız gerekiyorsa NoSQL veya daha kapsamlı BigData teknolojilerine odaklanmanız gerekir.

Bir sonraki yazımızda BASE'in bu tembel tutarlılık yaklaşımının kaynağı olan ve birden fazla cihazın birlikte çalıştığı ekosistemde karşımıza çıkan CAP teoremini ele alacağız. Hem ACID hem BASE CAP teoremiyle ilişkilidir.

Serinin Devamı;
NoSQL Dünyası - 3 (CAP Teoremi)
http://www.abdullahkise.com/2017/01/nosql-dunyas-3-cap-teoremi.html

30 Aralık 2015 Çarşamba

Rapor ihtiyacını Seviyelendirme (Üst Yönetim, Yönetim, Veri Analistleri)

Raporlama projelerindeki gözlemlerimizi düşündüğümüzde firmaların büyük bir kısmının raporlama yaklaşımında bir takım kafa karışıklığının olduğunu farkediyoruz. Özellikle son dönemlerde revaçta olan yeni Self Service BI ürünleri bu kafa karışıklığına daha fazla katkıda bulunuyor.

Fazla uzatmadan direk konuya gireceğim. Eğer bir raporlama projesine girişecekseniz üründen önce ihtiyaçlarınıza odaklanmalısınız. Önce aracın seçilmesi ve geliştirmelere başlanması talepler arttıkça sürecin içinden çıkılamaz bir hal almasına neden oluyor. Çoğu zaman firmalar ihtiyacından fazla yatırım yaparak ciddi maliyetlerin altına giriyor veya ihtiyacına uygun olmayan ürünleri deneyerek vakit ve güven kaybediyor. Genellikle bu kayıpları telafi etmek oldukça zordur.

Çarşaf raporlar üzerinden verileri didik didik edecek veri analistlerine mobile raporlama ürünlerinin çıktısını sunmak, dilediği yerden özet verilere erişerek strateji geliştirmek isteyen yöneticilere çarşaf raporlar üzerinden detaylı bilgiler sunmak en başta gelen hatalı yaklaşımlardandır.

Bu aralar en yaygın dalgınlık, binlerce satırdan oluşan bir kaç gblık detaylı raporların mobile cihazlardan servis edilmesi eğilimi şeklinde karşımıza çıkıyor. Bir an durup düşünürsek cep telefonlarının belleğinin buna yetişemeyeceğini hemen farkederiz.

İstemcileri şu 3 gruba ayırarak tüm raporlama ihtiyaçlarına cevap vermek mümkün görünüyor:


1- Üst yönetim: 


Stratejik kararları etkileyecek özet raporları bekleyen bu istemci gurubuna çoğu zaman mobile cihazlar üzerinden dashboardlar sunmak gerekir. Grafiklerin kabul görmüş en hızlı ve etkili şekilde sunulması beklenir. Microsoft'un Power BI Portal ürünü bu kısım için biçilmiş kaftan.


2- Yönetim: 


Operasyonel kararları etkileyecek belli bir kalıpta olan, sık kullanılan ve bir miktar daha detaylı raporlar bekleyen bu istemci grubu çoğu zaman raporlarını bilgisayar üzerinden görmek isteyecektir. Raporların maillerine gelmesi, versiyonlanması, farklı formatlarda çıktılarının alınabilmesi ve hatta raporlarda gelişmiş yetkilendirme, detaylandırma gibi fonksiyonalitelerin olması bu grubun ihtiyaçlarından bir kaçıdır. Bu grurup çoğunlukla ihtiyaca göre özelleştirilmiş statik raporları incelemek ister. Geleneksel olarak bu böyledir.

Ancak son zamanlarda mobile cihazların yaygınlaşması ve daha bir çok sebepten ötürü bu gruptaki istemciler de raporlarını mobile cihazlar üzerinden görmek istemektedir. Tabi ki bu hizmet geleneksel raporlama ürünlerine göre daha pahalıya gelir.

Bu grubun ihtiyacına cevap vermek için Microsoft, yeni satın aldığı DataZen ürününü SQL Server Reporting Services'a entegre etti. SQL Server 2016 CTP 3.2 kurulumuyla birlikte artık her iki ürün tek bir SSRS hizmeti olarak karşımıza çıkmaktadır.

Artık hem geleneksel SSRS raporlarını (görselleri geliştirildi) hem de mobile cihazlarla tam uyumlu DataZen raporlarını tek bir noktadan yayınlayabiliyoruz. Harika! Yeni duyurulan Microsoft SQL Server Mobile Report Publisher ve mevcut Rerport Builder & Report Designer ile bu grubun taleplerine cevap vermek artık mümkün ve daha ucuz.

3- Veri Analistileri : 


Analitik çalışmalarda verileri didik didik eden bu grup, verilerin ham hallerine ulaşmak ve bunlar üzerinde dilediği gibi çalışmak isteyecektir. Bu grubun ihtiyacı olan ürün Excel olur genelde. Ancak Excel'deki satır sınırı hala bir engel. Buna rağmen Excel Power BI veya Power BI Desktop ürnünde böyle bir sınır mevcut değil. Power BI veri modelindeki veriler memory üzerinden çalışır ve çok yüksek miktarda sıkıştırmaya tabi tutulur. Dolayısıyla pür Excel'in yetmediği yerde Power BI tarafına yönelmek mantıklı olacaktır.

İstemcileri 3 gruba ayırmak işleri kolaylaştırıyor. Tabi bu şekilde birden fazla ürünle çalışmanın kötü yanları da ortaya çıkıyor. Örneğin raporları merkezileştirmek büyük bir problemdir. Neyse ki bu aralar bu konuda da bazı gelişmeler var. Power BI portaldeki raporları ve/veya SSRS 2016 üzerinde hazırlanan geleneksel ve mobile raporları mobile cihazlar üzerinde Power BI Native App yardımıyla bir araya getirmek mümkün (şu aralar bu özelliğe sadece IOS'ta destek verilmektedir). Raporların HTML5 standardına getirilmesi de yayınlama konusunda esnekliği arttırdı.

Ürünlerle ilgili kısa bir bilgi vermek gerekirse;

Power BI Portal: üzerinde şirket mail hesabınızla bir deneme hesabı açabilirsiniz. Bu hesabın pro versiyonu aylık 10$.
www.powerbi.com
https://powerbi.microsoft.com/en-us/features

Power BI Desktop: Power Query, Power Pivot, Power Map ürünlerini bir araya getiren ücretsiz bir masaüstü uygulamasıdır.
https://powerbi.microsoft.com/en-us/desktop


SSRS & DataZen Entegrasyonu (SQL Server Mobile Report Publisher): Microsoft SQL Server 2016 ile birlikte gelen bir yeniliktir. Hem geleneksel raporları hem de DataZen temelli mobile raporları aynı servis üzerinden yayınlamak mümkün.
https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016

Power BI Mobile App: IOS, Android ve Windows Mobile cihazlarda mağazadan indirebileceğini ve Power BI portal raporlarına erişim sağlayabileceğiniz Native uygulamadır. Şimdilik sadece IOS üzerinde SSRS raporlarına erişmek mümkün olsa da bu özellik diğer platformlarda da kullanılabilir olacaktır.
https://powerbi.microsoft.com/en-us/mobile

Excel Power BI: Ücretsiz olarak edinilen Power Query, Power Pivot, Power View, Power Map eklentileri Power BI ürününü oluşturmaktadır. Bu 4 ürünü Excel içerisinde kullanıp nimetlerinden faydalanmak mümkün. Excel 2016 ile ürünlerin tamamını kullanabilirsiniz. Diğer versiyonlarda bu hizmetler kısıtlıdır.

Ürünleri bir arada düşünürsek aşağı yukarı şöyle bir senaryo ile karşılaşırız:



Etkili rapor tasarlama konusunda bir şeyler okumak isterseniz bu konuda yazdığım serinin şu son makalesine ve öncesine bir göz atabilirsiniz.
http://abdullahkise.blogspot.com.tr/2015/10/etkili-rapor-tasarlama-teknikleri-7.html

29 Aralık 2015 Salı

SQLSaturday #451 Istanbul 2015 - IoT Oturumundaki Sunum

12 Aralık 2015 Cumartesi gerçekleştirilen SQLSaturday #451 Istanbul 2015 etkinliğinde düzenlediğimiz "Smart World through IoT" isimli oturumu ilgiyle takip eden tüm katılımcılarımıza teşekkür ediyorum.

Nesnelerin İnterneti (IoT), dünyada olduğu gibi Türkiye'de de trend konular arasında yerini almış durumda. O gün oturama katılamayanlar için işte sunum :


http://1drv.ms/1JdBoxz


Nasıl yapılır?

  1. Azure IoT Hub (veya Azure EventHub) oluştur.
  2. Arduino bağlantılarını oluştur ve verileri Azure IoT Hub'a gönder. 
  3. Azure Stream Analytics ile akan verileri akış esnasında işle.
  4. Azure Stream Analytics çıktısını Power BI olarak tanımla.
  5. powerbi.com'da otomatik oluşan verikümesi üzerinden rapor ve gerçek zamanlı çalışan pano oluştur.
Arduino ve Sıcaklık Sensörü :

Power BI'da Sıcaklık Verilernin Gösterimi :

Sunum Öncesi Demo Testi:


18 Aralık 2015 Cuma

2015 - Microsoft Açık Akademi Yaz Okulu Etkinliği Video Kayıtları (2 gün)

2015 yazında Microsoft'ta düzenlenen açık akademi etkinliklerinde gerçekleştirdiğim iki günlük sunuma ait video kayıtlarını blogumda da paylaşayım istedim.

Türkiye'nin çeşitli üniversitelerinden davet edilen meraklı ve yetenekli katılımcıların olduğu bu etkinlikte farklı sektörtörlerden çok değerli profesyoneller konuşmacı olarak görev aldı. Ben de bu etkinlikte 2 tam gün konuşma yaptım ve veri odaklı teknolojilerdeki son durumu paylaştım. Zaman zaman teknik konular dışına çıkarak iş görüşmeleri, sektör, karıyer vs. gibi konularda da konuşma fırsatı bulduk.

Bu etkinliğe katılmak istemiş ancak fırsat bulamamış arkadaşlarım için video kayıtlarını paylaşayım istedim.

Not: 300 civarı genç katılımcının olduğu salonda tam günlük etkinliği dinamik bir şekilde yapabilmek ve dikkatleri toplayabilmek için bazı standartların dışına çıkmamız gerekti. İzlerken sakin olun, her şey kontrol altında :)

Tanıtım Videosu:

1. Gün 1. Oturum


1. Gün 2. Oturum

1. Gün 3. Oturum

1. Gün 4. Oturum

2. Gün 1. Oturum

2. Gün 2. Oturum

2. Gün 3. Oturum


9 Aralık 2015 Çarşamba

SQLSaturday #451 Istanbul 2015 Etkinliğindeyiz. Bekleriz.

Dünya genelinde bir çok bölgede yılda bir defa düzenlenen SQLSaturday etkinliğinde bu yıl da konuşmacı olarak yerimizi aldık.



Etkinliğin İstanbul ayağı 12 Aralık 2015 Cumartesi günü Microsoft'un Levent'teki ofisinde gerçekleşecek.

Her yıl olduğu gibi bu yıl da birbirinden değerli yerli-yabancı konuşmacılar ve katılımcılar gün boyu sürecek olan paralel 15 oturum sayesinde trend konular üzerinde fikir alışverişi yapma fırsatı bulabilecek.

Hem bu ilham veren atmosferi yaşamak hem de veri odaklı yeni teknolojilerden haberdar olmak için SQLSaturday etkinliğinde yerinizi almayı unutmayın.

SQL Server, SharePoint ve Azure gibi bir çok alanda oturum mevcut. Veri Yönetimi Ekibi olarak biz de, Abdullah Altıntaş sunumuyla"Real-Time Click Stream Analysis with Microsoft Azure Stream Analytics" ve Abdullah Kise (ben) sunumuyla"Smart World through IoT" başlıklı oturumları düzenliyor olacağız.

"Smart World through IoT (Internet of Things)" oturumuna ait detaylar şöyle :

Microsoft İstanbul Ofis - Levent
Adara Salonu
12 Aralık 2015 Cumartesi  (14:30 - 15:30)


http://www.sqlsaturday.com/451/Sessions/Details.aspx?sid=40636

Abdullah Kise

Tüm oturumları aşağıdaki linkten görüntüleyebilirsiniz:

http://www.sqlsaturday.com/451/Sessions/Schedule.aspx

Etkinlik hakkında ayrıntılar :
http://www.sqlsaturday.com/451/eventhome.aspx