31 Aralık 2017 Pazar

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -2 (Azure AD Üzerinde Uygulama Kaydetme ve Token Üretme)

Power BI üzerinde gerçek zamanlı raporlama konusuna devam ediyoruz.

Bir önceki yazımızda Power BI ile yeni tanışanlar için bir giriş yapmıştık ve seride atacağımız adımları özetlemiştik. Bu yazımızda geliştirme safhasına geçebiliriz. 

Önceki yazıya şu linkten ulaşabilirsiniz:
http://www.abdullahkise.com/2017/12/power-bi-uzerinde-gercek-zamanl.html


Bu çalışmada şu adımları atacağımızı ifade etmiştik:
  1. Öncelikle Azure Active Directory servisi üzerinde OAuth 2.0 protokolüne göre güvenliğin/yetkilerin denetlenebilmesi için uygulamamızı kaydedeceğiz (register). Power BI hesapları arkaplanda Azure Active Directory Servisi ile yönetilmektedir.
  2. Kayıt sırasında uygulamamızın Power BI API'yi hangi yetkilerle kullanabileceğini belirteceğiz.
  3. Tamamen kodun işleyişine odaklanabilmek için Visual Studio'da bir Console projesi açacağız. Bu proje içerisinden gönderdiğimiz isteklerle gerekli nesneleri portalde oluşturacak, hemen ardından bir döngü ile ürettiğimiz verileri portale göndereceğiz.
  4. İhtiyacımız olan sınıfları kullanabilmek için öncelikle Azure Active Directory ve Power BI API dll'lerini projemizin referanslarına ekleyeceğiz.
  5. Kaydettiğimiz uygulama bilgilerini veya kullanıcı kimlik bilgilerini kullanarak Azure AD'den token alacağız. Bu token, API istekleri sırasında kullanılmaktadır. API'ye erişim yetkileri bu token sayesinde doğrulanmaktadır.
  6. Projemiz içerisinden sırasıyla gerekli Power BI nesnelerini oluşturacağız ve veri göndermeye başlayacağız.
  7. Gönderdiğimiz verileri Power BI portalde oluşturacağımız Dashboard (pano) üzerinde yayınlayacağız. Önceden tanımlı görselleri kullanarak akışı farklı bakış açıları ile izleyebileceğiz.

Azure Active Directory Üzerinde Uygulama Kayıt Etme


Geliştireceğimiz uygulamanın Power BI REST API'ye hangi yetkilerle erişebileceğini Azure Active Directory üzerinde belirliyoruz. Azure AD kayıt sırasında uygulamamız için bir Application Id üretiyor. Bu Application Id ile birlikte kullanıcı kimlik bilgilerini veya kayıt sırasında girdiğimiz diğer bilgileri kullanarak Azure AD'den bir token (jeton) alıyoruz. Token görüntüde değişik karakterlerden oluşan uzun bir metindir. Bu token sayesinde uygulamamız tanınıyor ve isteklerimiz kayıt sırasında belirttiğimiz yetkiler çerçevesinde cevaplanıyor. Uygulamamızın kimliği bu token sayesinde OAuth2.0 protokolüne göre doğrulanıyor.

Uygulamayı kayıt etmek için doğrudan Azure Portal üzerinden Azure AD servisine geçebilirsiniz veya dilerseniz Power BI portalden şu adımları atarak da aynı pencereye ulaşabilirsiniz:

Power BI Portale giriş yaptıktan sonra sağ üst köşedeki Settings (Ayarlar) ikonundan Admin Portal (Yönetim Portali) menüsünü tıklayalım. Açılan pencerede Users (Kullanıcılar) menüsünü tıklayıp Go to O365 Admin Center (O365 Yönetim Merkezine Git) butonu ile Office 365 yönetim merkezine geçelim. Yeni sekmede açılması gerek Office 365 yönetim merkezini görüntüleyebilmek için yönetici yetkilerine sahip olmanız gerekiyor. Eğer yönetici değilseniz sistem yöneticinizden bu konuda yardım isteyebilirsiniz.

Office 365 yönetim merkezinde sol menüde en altta bulunan Azure AD linkini tıklayarak yeni pencerede Azure AD servisine geçiş yapabilirsiniz. Burada App Registration (Uygulama Kaydı) menüsüne tıklıyoruz ve + butonu ile uygulama kayıt işlemini başlatıyoruz.


Uygulama kayıt penceresinde uygulamanın tipini seçip bir uygulama adı ve gerçekten var olması zorunlu olmayan fakat geçerli bir URL giriyoruz.

Uygulamayı kaydettikten sonra bir Application Id atanıyor. Şimdi kaydı tıklayıp Power BI API kullanımı için gerekli Read/Write yetkilerini Required Permissions (Gerekli İzinler) menüsünden giderek verebiliriz. Eğer Power BI API Servisi listede yoksa + ile ekleyebilirsiniz.


Artık kayıt ettiğimiz uygulama bilgileri ile Power BI REST API'ye erişecek olan projemizi geliştirmeye başlayabiliriz. Visual Studio üzerinde bir Console projesi başlatıyoruz ve projemize token üretmek için gerekli olan kütüphaneleri ekliyoruz. 

Kütüphaneleri Package Manager Console pencersi yardımıyla ekleyebiliriz. Bu pencereyi Tools / NuGet Package Manager / Package Manager Console menüsü ile açabiliriz. Açılan pencerede aşağıdaki komutu kullanarak gerekli ve ilişkili kütüphaneleri kolayca yükleyebiliriz.

Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory


Token üretmek için gerekli kütüphaneler kısa zamanda yüklenecektir. Hemen kodlamaya geçebiliriz. AuthenticationContext sınıfını örnekleyip AcquireTokenAsync metoduna kayıt sırasında kullandığımız bilgileri giriyoruz ve bu örneğimizde Result.AccesToken properties ile token elde ediyoruz. Öncelikle şu namespacei eklemenizi işinizi kolaylaştıracaktır: using Microsoft.IdentityModel.Clients.ActiveDirectory;


Dilerseniz AcquireTokenAsync metoduna aşağıda gibi kullanıcı kimlik bilgilerini doğrudan belirterek giriş penceresini kullanmadan da token elde edebilirsiniz.


Bu yazımızda ilk adımı attık ve Azure AD üzerinde uygulamamızı kaydedip API kullanımı için gerekli yetkileri verdik. Hemen ardından kayıt bilgilerini ve kimlik bilgilerini kullanarak açtığımız Console projesi içerisinden token bilgisini aldık. Bu token bilgisini yetki doğrulaması yapılabilsin diye Power BI REST API taleplerinde kullanacağız.

Bir sonraki yazımızda Power BI REST API ile gerekli nesneleri Power BI'da oluşturacağız ve oluşturduğumuz bu nesnelere nasıl erişebileceğimizi ele alacağız.

29 Aralık 2017 Cuma

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -1 (Giriş)

İnsan veya cihaz kaynaklı aktiviteleri gerçek zamanlı olarak izlemek, analiz etmek, özetlemek, raporlamak ve belli değerlerle karşılaşıldığında anında haberdar olmayı istemek, son yılların önemi giderek artan talepleri arasında. Artık hem müşteriler hem de teknoloji sağlayıcıları bu başlıklarda bir takım çalışmalar yapmakta veya bir an önce yapmak istemekte. 

Önceki yıllarda bu ihtiyaca cevap vermek zor ve pahalıydı. Gerçek zamanlı çalışmak bir lükstü. Ancak teknolojideki gelişmeler ve rekabet sayesinde artık çok daha kolay, ucuz ve kaliteli yöntemlerle bu ihtiyaçlara cevap üretmek mümkün.

Gerçek zamanlı akan veri işleme teknikleri durağan veri işleme tekniklerinden çok farklı bakış açıları ve teknolojiler gerektirir. Özellikle hız saniyede milyon/milyar transactiona ulaşıyorsa, akış esnasında verinin analiz edilmesi, özetlenmesi ve farklı hedeflere yönlendirilmesi gerekiyor üstüne bir de gerçek zamanlı tahminlemeler yapılması isteniyorsa, işin içine çok farklı teknik ve teknolojiler girecek demektir. 

Eğer ihtiyaç, veriyi akış esnasında analiz etmek değil doğrudan göstermek ise Microsoft Power BI ile bu ihtiyaca çok ucuz, kolay ve kaliteli bir biçimde cevap verebilirsiniz. Daha fazlası gerektiğinde ise Event Hub, IoT Hub, Stream Analytics, Azure ML gibi Microsoft Azure Servisleri hemen imdadınıza yetişir. Açık kaynak ürünlere nazaran inanılmaz pratik olan bulut servisleri sayesinde akan veri ile ilgili neredeyse tüm ihtiyaçlara cevap üretebilirsiniz. Buna ek olarak Microsoft SQL Server 2016/2017 ile birlikte duyurulan Operational Analytics, PolyBase, R in Database, Python in Database gibi yenilikler sayesinde de alışılmış yerel bir ortamda çalışmak mümkün.

Biz bu yazı serimizde akan verinin doğrudan Power BI'a nasıl yönlendirildiğine ve gerçek zamanlı raporlamanın nasıl yapıldığına odaklanacağız. Öncelikle Power BI ürünüyle yeni tanışanlar için bir giriş yapalım istiyorum.

Power BI, Gartner'in Magic Quadrant'ında lider konumunda olan bir Self-Serivce BI ürünü. Yani departman seviyesinde uçtan uca iş zekası ihtiyacına cevap üretebileceğiniz, üstelik teknik olmayan kişilerce de kullanılması amaçlanan kullanıcı dostu bir ürün. Excel'in Power BI eklentileri ve Power BI Desktop ile ücret ödemeden yerel kaynaklarınızı kullanarak çalışabilirsiniz. Eğer çalışma dosyalarınızı yayınlamak isterseniz Microsoft'un bir bulut hizmeti olan Power BI Portali (www.powerbi.com) bir noktaya kadar ücret ödemeden kullanabilirsiniz. Dilerseniz SQL Server 2017 ile birlikte duyurulan Power BI Report Server'ı edinerek yerel kaynaklarınız üzerinden de rapor paylaşım merkezi oluşturabilirsiniz. Bu raporlara tüm cihazlardan native uygulama olan Power BI App üzerinden veya tarayıcı üzerinden erişebilirsiniz.

Raporlama ihtiyacınızı Microsoft ürünleri ile nasıl seviyelendirebileceğinize bir göz atmak için:
Rapor ihtiyacını Seviyelendirme (Üst Yönetim, Yönetim, Veri Analistleri)

Power BI dünyasına demolarla giriş yapmak için:
Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubatc.html

Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubat-satslar-2.html

Hemen yazı serimizin odağı olan, Power BI üzerinde gerçek zamanlı raporlamanın (Real Time Reporting) nasıl yapılacağı konusuna geçelim.

Öncelikle www.powerbi.com adresinden bir Power BI hesabı açalım. Eğer şirketinizin Office 365 aboneliği mevcutsa zaten Power BI kullanıcısı olabilirsiniz. Bu durumda portal sizi tanıyacaktır. Şirket mailinizi ve şifresini kullanarak giriş yapabilirsiniz.

Giriş yaptıktan sonra soldaki menüyü kullanarak bir çalışma alanı (Workspace) açabilir, Get Data ile bir kaynağa bağlanabilir, içinde tablolar (Tables) barınan veri setleri (Data Sets) oluşturabilirsiniz. Tarayıcı üzerinde veya yerel Power BI dosyaları vasıtası ile veri setinden raporlar (Reports) tasarlayabilir, tasarladığınız farklı raporlardaki görselleri bir araya getirebileceğiniz panolar  (Dashboards) açabilirsiniz.


Power BI üzerinde gerçek zamanlı raporlama yapmak için doğrudan Power BI REST API ile çalışacağız. Bu API ile iki şekilde çalışabiliriz; doğrudan http istekleri göndererek veya bu istekleri kapsülleyen Microsoft.PowerBI.Api dll'lini kullanarak. Power BI REST API sayesinde yukarıda bahsi geçen nesnelere yazdığımız bir uygulama içinden erişebilir, yeni nesneler oluşturabilir, var olanları kaldırabiliriz.

Power BI Rest Api Referans dokümanına şu linkten erişebilirsiniz:

Biz de örneğimizde bir Console uygulaması içerisinden Power BI portalde bir Workspace (çalışma alanı) oluşturacağız. Oluşturduğumuz bu Workspace'e bir Streaming DataSet (Veri Seti) göndereceğiz. DataSet içerisinde tanımladığımız Table'ın (tablo) formatına uygun veriyi rüzgar tribünü simülasyonu şeklinde, bir döngü ile sürekli olarak göndereceğiz. Sonrasında çeşitli görseller kullanarak Dashboard (pano) üzerinde bu gönderileri gerçek zamanlı izleyeceğiz.



Bu çalışmada hangi adımları atacağımızı özetleyelim;
  1. Öncelikle Azure Active Directory servisi üzerinde OAuth 2.0 protokolüne göre güvenliğin/yetkilerin denetlenebilmesi için uygulamamızı kaydedeceğiz (register). Power BI hesapları arkaplanda Azure Active Directory Servisi ile yönetilmektedir.
  2. Kayıt sırasında uygulamamızın Power BI API'yi hangi yetkilerle kullanabileceğini belirteceğiz.
  3. Tamamen kodun işleyişine odaklanabilmek için Visual Studio'da bir Console projesi açacağız. Bu proje içerisinden gönderdiğimiz isteklerle gerekli nesneleri portalde oluşturacak, hemen ardından bir döngü ile ürettiğimiz verileri portale göndereceğiz.
  4. İhtiyacımız olan sınıfları kullanabilmek için öncelikle Azure Active Directory ve Power BI API dll'lerini projemizin referanslarına ekleyeceğiz.
  5. Kaydettiğimiz uygulama bilgilerini veya kullanıcı kimlik bilgilerini kullanarak Azure AD'den token alacağız. Bu token, API istekleri sırasında kullanılmaktadır. API'ye erişim yetkileri bu token sayesinde doğrulanmaktadır.
  6. Projemiz içerisinden sırasıyla gerekli Power BI nesnelerini oluşturacağız ve veri göndermeye başlayacağız.
  7. Gönderdiğimiz verileri Power BI portalde oluşturacağımız Dashboard (pano) üzerinde yayınlayacağız. Önceden tanımlı görselleri kullanarak akışı farklı bakış açıları ile izleyebileceğiz.

Bu yazımızda Power BI ile yeni tanışanlar için konuya bir giriş yapalım istedim. En sonda özetlediğimiz geliştirme aşamasına sonraki yazımızda odaklanıyoruz.

Eğer kendiniz hızlıca bir şeyler denemek isterseniz şu linkler size yol gösterecektir:

Overview of Power BI REST API

Power BI REST API reference

Power BI API - Apiary

18 Kasım 2017 Cumartesi

Adım Adım Veri Bilimi - 3 (Temel İstatistik Kavramları)

Gelişmiş ve kullanıcı dostu haline gelmiş ürünler sayesinde veri analizi çalışmalarını sürdürmek her geçen gün daha kolay olmaktadır. Ürünlerin konforu veri analizi yapan kişilerin işlerini kolaylaştırmakla kalmayıp daha fazlasını yapabilmeleri için cesaret vermektedir.

Bu iyi bir şey. Ancak bazen bu rahatlık rehavete ve dikkatsizliğe dönüşebiliyor. Özellikle temel istatistiksel kavramlara yabancılaşma sonucu bu araçlar yanlış kullanılabiliyor. Hatalı çıktılar yıllarca fark edilmeden hatalı kararlar verilmesine sebep olabiliyor. Sonuç olarak telafisi mümkün olmayan zararlar ortaya çıkabiliyor. Araçların doğru kullanılabilmesi için temel dinamiklere hakim olmak şart. Diğer türlü hata yapmak kaçınılmaz olur.

Bir çalışmanın bilimsel olabilmesi için matematiksel (istatistiksel) bazı temellere dayandırılması gerekir. Veri Bilimi (Data Science) çalışmaları da bilimsel yöntemlerle sürdürüldüğü için Veri Bilimcilerinin (Data Scientist) matematiksel (istatistiksel) temel kavramlara hakim olması gerekir.

Bu sebeple Adım Adım Veri Bilimi serimizde bir takım temel İstatistik kavramlarına yer verelim istedim.

Bu konu ile ilişkili olan ve İstatistik biliminin tanımını yaptığımız "Adım Adım Veri Bilimi - 2 ( İstatistik Nedir?)" isimli şu makaleye bir göz atmanızı öneririm:

Serideki bu kısmın önemini daha rahat anlayabilmek için bir soru üzerinde düşünelim istiyorum.

Soru: Bir yatırımım olsun. Ana para miktarı önemli değil. Ancak yine de somutlaştırmak için 100 tl ana param olsun diyelim. Yıl yıl gelir yüzdelerini ve ana paradaki artışı aşağıdaki tabloda görebilirsiniz. Merak ettiğim şey şu; yıllık ortalama yüzde kaç gelir elde ediyorum?


Günlük hayatta sıkça karşılaşabildiğimiz kolay bir soru. Cevabı üzerinde biraz düşünün. Yıllık ortalama yüzde kaç gelir elde ediyorum?

Kolay bir soru olduğu için hızlıca hesaplayabiliriz. Yıl yıl %10, %50, %30 gelir elde ediyorsam, bu durumda üçüncü yılın sonunda yılda ortama (10+50+30) / 3 yani %90/3 sonuç olarak %30 yıllık ortalama gelir elde ediyorum demektir. Yani bildiğimiz aritmetik ortalama aldık.

Kolay bir soru ama yine de sağlamasını da yapalım istiyorum. Bulduğumuz bu yıllık ortalamayı ana paraya uygulayalım. Yıl yıl gelirim şöyle olur:


Fakat o da ne? Olması gerekenden farklı bir sonuç elde ettim. İlginç değil mi? ortalamayı uyguladığımda üçüncü yılın sonunda, gerçekten elde ettiğim gelirden daha fazlası ile karşılaştım. 214.5 elde etmeliydim, 219.7 ile karşılaştım. Sağlamasını yaptığımda işlemin hatalı olduğunu gördüğüme göre bir yerde hata yaptım demektir. Acaba nerede?

Burada aritmetik ortalama kullandık. Hatalı oldu. O halde farklı bir ortalama deneyelim. Mesela az duyduğumuz, belki de normal hayatta hiç kullanmayacağımızı düşündüğümüz bir ortalamaya bakalım. Geometrik ortalamaya ...


Geometrik ortalama yıllık ortalama %28.9 'luk gelirim olduğunu söylüyor. Yıl yıl bu oran üzerinden sağlamasını yaptığımda üçüncü yılın sonunda gerçekten elde ettiğim gelirimle karşılaşıyorum. yani 214.5 ile. Sağlaması geometrik ortalamanın doğru olduğunu gösteriyor. Harika! 

Bu sonuç bir çok kişi tarafından beklenmediktir. Zaten benim dikkat çekmek istediğim şey de tam olarak budur. Temel istatistiksel kavramlara yabancılaşmış kişilerin veri analizi sırasında buna benzer beklenmedik hatalar yapma ihtimali çok yüksektir. Burada rehavetle verilmiş aritmetik ortalama kararı değil, temel kavramlara hakimiyet sonucu verilmiş geometrik ortalama kararı isabetli sonucu vermektedir. 

Bir çok ortalama çeşidi mevcut. Hangisinin tam olarak nerede kullanıldığını ilerleyen yazılarda ihtiyaç oldukça açıklarız. Biz konuya daha temelden girelim ve veri analizi için gerekli temel istatistiksel kavramları ele alalım. Kavramları literatürdeki sıkıcı tanımları ile ifade etmek istemiyorum. Mümkün olduğunca sezgisel ve kullanışlı tanımlarla kavramları ele alalım istiyorum. Önce veri dediğimiz şeyi tanıyalım.

Veri Nedir?


Veri dediğimiz şey sayılar, kelimeler, ölçümler, gözlemler veya kısaca bir şeyi tanımlayan olgulardır.

Verileri nitel ve nicel olarak 2 gruba ayırabiliriz:


  1. Nitel (Qualitative): Bir şeyi tanımlamak, açıklamak için kullanılan bilgidir. Bu türden bilgiler daha çok tabloda tutulabilen kurallı bir yapıda değil de çeşitli biçimlerde tutulabilen serbest yapıda olur. İlgili konudaki gözlemler, dokümanlar, röportajlar vs. kaynakları oluşturur. Mesela "eğlenceli bir tatildi" ifadesi bu türden bir bilgidir.
  2. Nicel (Quantitative): Bir şeyi saymak ve ölçmek için kullanılan bilgidir. Bu türden bilgiler genelde tabloda tutulabilen bir yapıda olur. Nicel verileri iki grupta inceleyebiliriz:
    • Kesikli (Discrete): Sayılabilen, sayılması mantıklı taneli olan şeyler hakkındaki veriler bu gruba girer. Mesela bir ekibin çalışan sayısı 5 kişi olsun. Buradaki kişi sayısı olan 5 kesikli veridir. Ekibi iki grubu ayıralım dediğimizde bu gruplar 2,5 kişilik olamaz. Ara değerler yoktur.
    • Sürekli (Continuous): Ölçülebilen, ölçülmesi mantıklı olan şeyler hakkındaki veriler bu gruba girer. Mesela çalışanların evle iş yeri arası uzaklıkları sürekli veridir. Ara değerlerin tümü mantıklıdır. Ancak bazı durumlarda sürekli veriler kesikli veriler olarak ifade edilebilir. Mesela evle iş yeri arası uzaklığını bazı kriterlere bakarak yakın ve uzak diye iki gruba ayırabiliriz. Böylece bu konudaki veri artık sürekli değil kesikli olur.


Verileri hareketine göre 2 gruba ayırabiliriz:

  1. Yığın Veri (Batch Data): Bu türden veriler ile çalışmak görece daha kolaydır. Genelde konu hakkındaki tüm veri bir arada bulunur. Bu veri kümesi belli bir zaman diliminde bir araya getirilmiştir ve bir bütün olarak analiz edilir. Geleneksel veritabanlarındaki veriler bu kapsamda değerlendirilir. Mesela rapor yapmak için hazırladığınız tablolardaki veriler bir yığın halindedir. Durağandır.
  2. Akan Veri (Stream Data): Bu türden veriler ile çalışmak görece daha karmaşıktır. Verileri yakalamak ve analiz etmek için özel teknik ve araçlar gerekmektedir. Geleneksel yöntemlerin dışına çıkmak gerekir. Kaynaktan parça parça ve neredeyse sürekli olarak üretilir. Analiz genelde gerçek zamanlı olarak yapılır. Mesela bir binadaki sıcaklık sensörlerinden gelen veriler bu türden verilerdir. Durağan değildir. Hareket halindedir. Üstelik bazen geleneksel yöntemlerle yakalanamayacak kadar da hızlı akar.


Verileri yapısına göre 3 gruba ayırabiliriz:

  1. Yapılandırılmamış (Unstructured): Resim, düz metin, video, ses gibi serbest yapıda olan verilerdir. Kendi içinde bir takım standartları olsa da geleneksel yöntemlerle yakalamak, tutmak, işlemek ve değer üretmek pek mümkün değildir.
  2. Yarı Yapılandırılmış (Semi Structured): csv, xml, json, yaml gibi belli kurallara uyan kısmen serbest yapıdaki verilerdir. Her bir kayıt aynı genel kurala uysa da bir birinden farklı tipte ve derinlikte olabilir.
  3. Yapılandırılmış (Structured): Tablo yapısında tutulabilen verilerdir. Veri satır ve sütunların kesişimlerinde tutulur. Her satırda aynı sırada ve aynı tipte kolonlar yer alır. Bildiğimiz tablo mantığı yani. Hemen yeri gelmişken söyleyeyim. Bir araştırmaya göre şirketlerin kendisi hakkında ulaşabileceği verilerin sadece %20'si bu yapıdadır. Günümüzün trend konusu, geriye kalan %80 'lik dilimden, yani yukarıdaki ilk iki türdeki yapıdan değer üretmektir.


Bir önceki yazımızda bahsettiğimiz Betimsel İstatistik (Descriptive Statistics) teknikleri özellikle yapısal veriler üzerinde çalışma ile ilgili çözümler sunar. İlk etapta bu tekniklere odaklanacağız.

İstatistiksel çalışmanın temeli hakkındaki şu bilgileri önemine binaen, önceki yazımdan buraya aynen alıyorum:

İstatistiksel çalışmalarda bazen hakkında veri toplamak istediğimiz grubun tüm üyelerine erişebiliriz. Bazen de zaman, maliyetler vs. gibi bir çok nedenden dolayı grup üyelerinin tümüne ulaşmak mümkün olmayabilir. Bu durumda tüm üyelerine ulaşamadığımız gruba en çok benzeyen küçük bir grup üzerinde çalışmak ve çıkan sonuçlardaki hatayı göz ardı ederek tüm grup hakkında fikir edinmeyi ummak zorunda kalırız. 
İstatistiksel çalışmalarda çoğunlukla küçük bir grup üzerinde yapılan analizlerden elde edilen sonuçlara bakılarak büyük bir grup hakkında karara varılması amaçlanır. Büyük grup olarak nitelendirdiğimiz kitle (ana kütle) hakkında merak ettiğimiz soruların cevabını bu kitleyi (ana kütleyi) en iyi ifade eden küçük grupta yani örneklemde ararız. Sonra bulgularımızı genele yayar, kitleyi anlamak için kullanırız.  
Örneklem üzerinden kitle (ana kütle) hakkında fikir edinme yöntemleri oldukça kullanışlıdır. Mesela bu sayede ülkedeki tüm hayvanları yemeden et kalitesi hakkında fikir edinebiliyoruz. Çok şükür! 
Örneklem seçerken çok dikkatli olmak gerekir. Örneklem kitleyi en iyi ifade edecek şekilde seçilmelidir. Hem örneklem seçimi sırasında hem de veri toplarken ön yargıdan (biased) ve veri toplama sürecini sekteye uğratacak yaklaşımlardan (mesela uzun anketler) uzak durmak gerekir. Kitleyi temsil etmeyecek küçük belirgin bir gruptan çeşitli yönlendirmeler ve kısıtlı cevap seçeneklerine mahkum ederek elde edilen veriler çöptür ve yapılan analizler çöp olur.  
Örneklem seçimi rassal (rastgele) veya kitleyi ifade edecek şekilde iradi (istemli) olarak yapılabilir. Seçilen örneklemlerden veri toplanırken amaca uymayan ve sonucu etkileyen faktörlerin devrede olup olmadığı kontrol edilmelidir.
Yazının tümüne şu linkten ulaşabilirsiniz:

Anakütle veya örneklem hakkında topladığımız veriler aşağıdakine benzer bir tablo formatında olabilir. Bu durumda tablodaki her bir satıra "Birim" (Observation) her bir kolona "Değişken"  (Variable) değişkenin aldığı her bir değere de "Şık" (Value) adı verilir.


Topladığımız bu veriler üzerinde daha rahat çalışmak için bir takım düzenlemeler yapabiliyoruz. Elde etiğimiz veri kümesinin karakteristiğini anlayabilmek için de bir takım teknikler kullanıyoruz.

Bu yazımızda verinin tanımına ve farklı açılardan nasıl incelendiğine bir göz attık. Bir sonraki yazımızda bu düzenlemelerin ve tekniklerin bazılarının neler olduğuna odaklanacağız.






21 Eylül 2017 Perşembe

Staj Okulu - 2017 Etkinliklerinden Görüntüler

Geçtiğimiz günlerde (10 Ağustos 2017) İstanbul Ticaret Üniversitesi Sütlüce Yerleşkesinde üniversiteli arkadaşlarla bir araya geldik. Türkiye'nin çeşitli üniversitelerinden katılımcıların olduğu bu etkinlikler serisinde bir birinden değerli gönüllü konuşmacılar bilgi ve birikimlerini paylaştı.

Biz de bu etkinlikte konuşmacı olarak yerimizi aldık. Tam gün süren iki oturumluk konuşmamızda Geleneksel İş Zekasından Büyük Veri konseptine bir çok konuda trendlerden bahsettik.  Önümüzdeki yıllarda veri odaklı uğraşların neler olacağını değerlendirdik. 

Özverilerinden dolayı katılımcı arkadaşlara ve Staj Okuluna teşekkür ediyorum.


Staj Okulu bünyesinde düzenlenen etkinlikler serisi yaklaşık 1,5 ay sürmektedir. Farklı sektörlerde uzmanlıkları olan konuşmacılar da davet üzerine gönüllü olarak destek vermektedir. 

Programın amacı üniversiteli arkadaşlara mezun olduklarında da fayda sağlayabilecekleri bakış açıları geliştirmelerine olanak tanımak, iş bağlantıları kurmalarını kolaylaştırmak ve verimli bir staj dönemi geçirmelerini sağlamaktır.

Çok kıymetli üniversiteli arkadaşları ve birbirinden değerli konuşmacıları bir araya getiren Staj Okulunu kutluyorum. Önümüzdeki yıllarda yapacakları gönüllü çalışmalarında başarılar diliyorum.


29 Temmuz 2017 Cumartesi

Yeni Dönemde de MVP Ödülünü Almaya Hak Kazandık (2017-2018)

Dünya çapında  topluluk lideri olarak tanımlanan bir kaç bin kişiye, Microsoft tarafından verilen MVP (Most Valuable Professional - En Değerli Profesyonel) ödülünü, yeni dönemde de almaya hak kazandık.

Etkinlikler, makaleler, videolar, seminerler, öğrenciler-girişimciler-profesyoneller için mentörlük çalışmaları ve e-kitap gibi çeşitli vasıtalar üzerinden yaptığım gönüllü paylaşımların profesyonel hayata değer katmış olması sevindirici.

Türkiye'de Data Platform alanındaki 3 MVP'den biri olmak ise gurur verici.

İlginiz ve takdiriniz için teşekkürler ...

http://www.abdullahkise.com/ 

30 Mayıs 2017 Salı

Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video

Bu seride bir aylık meşrubat satışları senaryosunu ele alıyoruz. Power BI Desktop ile satışların bulunduğu Excel dosyasına bağlanıp verileri istediğimiz formata getireceğiz. Hemen ardından modelleyip sonrasında da karlılık durumunu ve çeşitli korelasyonları görebileceğimiz raporlar tasarlayacağız. 

Serimiz bir kaç bölümden oluşuyor. Bu bölümde Report ve Data ekranında çalışıyoruz. Bir kolonu farklı bir kolona göre sıralama, column, donut, line grafikleri ve tablo ile rapor oluşturma işlemlerine odaklanıyoruz.

Aşağıdaki linkten satışların bulunduğu Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:

https://1drv.ms/f/s!Ap5-WHzOJRrTuEbJRl3dAagR9NeA



27 Mayıs 2017 Cumartesi

Dijital Dönüşüm Hız Kazanıyor - LC Waikiki Hackathonu

Geçtiğimiz (8,9 Mayıs 2017) günlerde LC Waikiki ve Microsoft'un birlikte düzenlediği dijital dönüşüm etkinliğindeydik. İki gün boyunca geniş bir otel salonunda kesintisiz çalışma imkanı sunuldu. 'Hackathon'un sonunda LC teknik ekipleri dijital dönüşüm fikirlerinin filizlenmiş halini paylaşmanın heyecanını yaşadı. 


En güncel teknolojilerin uygulanıp dijital dönüşüm fikirlerinin filizlendirildiği bu etkinlikte mentör olarak gerekli desteği vermenin sevincini yaşıyorum. İlham veren fikirleri başarıyla hayata geçiren tüm LC ekiplerini tebrik ediyorum.


Önümüzdeki günlerde LC Waikiki'deki bu değişimin yansımalarını hep birlikte göreceğiz. 

Gelecek artık geldi!

MS Data Scientist Roadshow - Velocity Oturumundaki Dökümanlar

Dün (26 Mayıs 2017) Microsoft tarafından Data Scientist Roadshow isimli bir etkinlik düzenlendi. Açılış konuşmasının Microsoft Genel Müdür Yardımcısı Cavit Yantaç tarafından gerçekleştirildiği bu etkinlikte birbirinden değerli MVP'ler konuşmacı oldu.

Data Science odaklı en güncel teknolojilerin aktarıldığı bu etkinlikteki ilk oturumda Big Data 'nın Velocity özelliğine odaklandık. Oturum esnasında yaptığımız demolar ile, Azure Servislerini kullanarak Big Data problemlerine kolayca çözümler üretebileceğimizi deneyimledik.

Abdullah Kise - Data Scientist Roadshow

Oturum esnasında kullandığım sunum ve bazı kodlara aşağıdaki linkten erişebilirsiniz:
https://1drv.ms/f/s!Ap5-WHzOJRrTuTI6kF62SW3B6U8G

Abdullah Kise - Data Scientist Roadshow

Oturum esnasında kullandığım sunum ve bazı kodlara aşağıdaki linkten erişebilirsiniz:
https://1drv.ms/f/s!Ap5-WHzOJRrTuTI6kF62SW3B6U8G

15 Mayıs 2017 Pazartesi

Data Science Roadshow Etkinliği - 26 Mayıs 2017

26 Mayıs 2017'de gerçekleşecek olan etkinlikte konuşmacı olarak yerimizi aldık. MVP'lerin konuşmacı olduğu ve en güncel başlıkların yer aldığı bu etkinliği kaçırmamanızı öneririm.

Kayıt Olmak İçin :
26 Mayıs 2017 - Microsoft Türkiye

Etkinlik içeriği :

  • 10:00 – 10:30 A Data-driven Business Era
  • 10:30 – 11:30 Understanding the three V's of big data (Velocity)
  • 11:30 – 11:45 Break and Q&A time
  • 11:45 – 12:35 Understanding the three V's of big data (Volume)
  • 12:35 – 12:50 Break and Q&A time
  • 12:50 – 13:40 Understanding the three V's of big data (Variety)
  • 13:40 – 14:10 Lunch
  • 14:10 – 14:50 Building predictive models inAzure Machine Learning
  • 14:50 – 15:05 Break and Q&A time
  • 15:05 – 15:45 Cognitive Services (it's cool!)


Şimdi Data Scientist olmak için en doğru zaman!

Tüm Dünya’da büyük bir heyecanla beklenen Data Science Roadshow’ları Türkiye’de de gerçekleşiyor!

Data Science (Veri Bilimi), fikir bulma ve kritik iş sorunlarını çözmede anahtar bir rol oynamaktadır. Dünya’nın veri ile döndüğü günümüzde, Data Scientist’lere olan ihtiyaç da her geçen gün katlanarak büyüyor.

Microsoft size Data Scientist olabilmeniz için benzersiz bir fırsat sunuyor ve sizi Cloud Society Programı’nın bir parçası olan Data Science Roadshow’una davet ediyor.

Bir IT Profesyoneli, bir yazılım geliştirici, bir startup, bir Microsoft İş Ortağı veya bir Bağımsız Yazılım Evi olabilirsiniz. Bu etkinlik serisi size:

  • Gerçek dünyadan örnek veri problemlerini uygun araç ve eğitimlerle çözümleme
  • İstatistik ve makina öğrenimi (machine learning) ile hayalinizdeki işe sahip olma
  • Microsoft Cloud Society ile bilgi seviyenizi arttırma

imkanı sunuyor.

Data Scientist olmak istiyorsan sen de 26 Mayıs’ta Microsoft Türkiye ofisinde gerçekleşecek olan Data Science Roadshow’una katıl! 

Kayıt Olmak İçin :
26 Mayıs 2017 - Microsoft Türkiye

14 Mayıs 2017 Pazar

Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video

Bu seride bir aylık meşrubat satışları senaryosunu ele alıyoruz. Power BI Desktop ile satışların bulunduğu Excel dosyasına bağlanıp verileri istediğimiz formata getireceğiz. Hemen ardından modelleyip sonrasında da karlılık durumunu ve çeşitli korelasyonları görebileceğimiz raporlar tasarlayacağız.

Serimiz bir kaç bölümden oluşuyor. Bu bölümde Query ekranında çalışıyoruz. Tarih (Date Tipi) kolonundan yeni alanlar türetme, parametre tanımlama ve M dili ile yeni kolonlar ekleme işlemlerine odaklanıyoruz.

Aşağıdaki linkten satışların bulunduğu Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:

https://1drv.ms/f/s!Ap5-WHzOJRrTuEbJRl3dAagR9NeA




1 Nisan 2017 Cumartesi

Adım Adım Veri Bilimi - 2 ( İstatistik Nedir?)

Bu konuda yerli ve yabancı, çeşitli derinliklerde bir çok kaynak bulmak mümkün. Bizim amacımız; İstatistik konusuna, Veri Bilimi serimize ışık tutacak nitelikte pratiğe dönük ve mümkün olduğunca teknik terimlerden uzak bir giriş yapmaktır. İlerleyen bölümlerde gerek gördükçe teferruata girebiliriz.

Bir önceki R dünyasına giriş konulu yazımıza şu linkten ulaşabilirsiniz:

İstatistik Nedir?


Bir birine benzeyen iki farklı tanımdan söz edebiliriz;

Bunlardan ilki günlük hayatta kullanılan ".... istatistikleri" ifadesi ile ilgilidir. Mesela "Spor İstatistikleri", "Nüfus İstatistikleri" vs. böyledir. Bu ifadelerde geçen istatistik kelimesi bize, belirtilen konuda sistemli bir şekilde toplanan sayısal verilerin var olduğunu anlatır.

İkinci tanım ise İstatistiğin bilimsel uğraşı ile ilgilidir. Bu bakış açısı ile temel olarak istatistik, çeşitli sorulara cevaplar üretmek ve bir takım çıkarımlar sonucunda kararlar verebilmek için kullanılan bilimsel yöntemlerin işletildiği süreci ifade eder diyebiliriz.

İstatistiksel bir çalışmada temelde şu adımlar atılır:
  • Araştırma konusu belirlemek ve çalışma için makul bir çerçeve tasarlamak.
  • Araştırma konusu hakkında bilgi toplamak için ön yargısız, anlamlı ve kaliteli veri kaynakları edinmek.
  • Toplanan verileri tasnif etmek ve sayılar veya görsellerle (grafikler vs.) özetlemek.
  • Verileri analiz etmek ve sonuçları yorumlamak.
  • Sonuçlara ne kadar güvenilebileceğini ölçmek.
  • Küçük bir örnek grubundan (örneklem) elde edilen sonuçları genele yaymak.
  • Özellikler arası ilişkileri, nedensellikleri, verideki eğilimleri ve desenleri ortaya çıkararak geleceğe ilişkin tahminlerde bulunmak.

Veri Toplama Yöntemleri


İstatistiksel çalışmalar veriye dayalı olduğu için veri toplama aşamasının kalitesi sonuçların kalitesini belirler. Unutmayalım; GIGO (Garbage In Garbage Out) yani çöp giren çöp çıkar. 

İstatistiksel çalışmalarda bazen hakkında veri toplamak istediğimiz grubun tüm üyelerine erişebiliriz. Bazen de zaman, maliyetler vs. gibi bir çok nedenden dolayı grup üyelerinin tümüne ulaşmak mümkün olmayabilir. Bu durumda tüm üyelerine ulaşamadığımız gruba en çok benzeyen küçük bir grup üzerinde çalışmak ve çıkan sonuçlardaki hatayı göz ardı ederek tüm grup hakkında fikir edinmeyi ummak zorunda kalırız.

İstatistiksel çalışmalarda çoğunlukla küçük bir grup üzerinde yapılan analizlerden elde edilen sonuçlara bakılarak büyük bir grup hakkında karara varılması amaçlanır. Büyük grup olarak nitelendirdiğimiz kitle (ana kütle) hakkında merak ettiğimiz soruların cevabını bu kitleyi (ana kütleyi) en iyi ifade eden küçük grupta yani örneklemde ararız. Sonra bulgularımızı genele yayar, kitleyi anlamak için kullanırız. 

Örneklem üzerinden kitle (ana kütle) hakkında fikir edinme yöntemleri oldukça kullanışlıdır. Mesela bu sayede ülkedeki tüm hayvanları yemeden et kalitesi hakkında fikir edinebiliyoruz. Çok şükür!

Örneklem seçerken çok dikkatli olmak gerekir. Örneklem kitleyi en iyi ifade edecek şekilde seçilmelidir. Hem örneklem seçimi sırasında hem de veri toplarken ön yargıdan (biased) ve veri toplama sürecini sekteye uğratacak yaklaşımlardan (mesela uzun anketler) uzak durmak gerekir. Kitleyi temsil etmeyecek küçük belirgin bir gruptan çeşitli yönlendirmeler ve kısıtlı cevap seçeneklerine mahkum ederek elde edilen veriler çöptür ve yapılan analizler çöp olur. 

Örneklem seçimi rassal (rastgele) veya kitleyi ifade edecek şekilde iradi (istemli) olarak yapılabilir. Seçilen örneklemlerden veri toplanırken amaca uymayan ve sonucu etkileyen faktörlerin devrede olup olmadığı kontrol edilmelidir.

Veri toplamak için temelde 2 yöntem kullanılır:
  • Anketler (Survey): Anketler anlaşılır, yeterli, yapılabilir ve tamamlanabilir nitelikte olmalıdır. Sorular sunulurken kasıtlı, hataya açık ve yetersiz yönlendirmeler yapılmamalıdır.
  • Deney - Gözlem (Experiment): Örneklemin ürettiği verileri toplarken sonuçları etkileyebilecek durumlar ve karakteristik özelliklere dikkat etmek gerekir. Bir örneklem üzerinde deney yaparken deneyin başarılı, mantıklı ve sağlıklı olup olmadığını kontrol edebilmek için bir de kontrol grubu kullanılmalıdır. Mesela bir ilacın etkisini araştırırken deney grubundan elde edilen sonuçlarla birlikte, ilaç verilmeyen kontrol grubundaki sonuçları da değerlendirmek gerekir.

İstatistiksel Veri Analizi Yöntemleri


Veri analizi konusunu geçmişin tahlili ve geleceğin tahmini olarak en tepeden ikiye ayırabiliriz. Bir miktar daha detaya inersek; bazen geçmiş verilerimize baktığımızda neler olup bittiğini (Descriptive Analytics), olayların sebebini (Diagnostic Analytics) anlamayı amaçlarız. Bazen de geçmiş verilerden faydalanarak neler olacağını (Predictive Analytics) veya gelecekte olmasını arzu ettiğimiz şeyleri gerçekleştirmek için neler yapmamız gerektiğini (Prescriptive Analytics) tahmin etmeye çalışırız.


Sonuç olarak topladığımız verileri iki temel amaç için istatistiksel analize tabi tutarız:
  • Betimsel İstatistik (Descriptive Statistics): Bu analiz çalışmasının amacı sayılar ve görsellerle toplanan örneklem verilerini betimlemektir. Sonuç olarak toplanan verileri temsil eden ortalama, standart sapma, ortanca vs. gibi çeşitli sayısal özetler ve histogram, bar, pasta grafiği gibi çeşitli görseller hazırlanır. (Bu konuda Microsoft'un SSRS, Excel, Power BI, Microsoft R Open vs. ürünlerinden faydalanabilirsiniz. )
  • Çıkarımsal İstatistik (Inference Statistics): Bu analiz çalışmasının amacı veri içerisindeki eğilimleri, ilişkileri, desenleri ortaya çıkarmak, bir takım olasılıkları hesaplamak ve çeşitli tahminlemeler yapmaktır. İlişkili olma ve nedensellik (Association and Causation), hipotez testleri (Hypothesis Tests) ve veri madenciliği (Data Mining) bu tür istatistiksel çalışmaların kapsamına girer. (Bu konuda Microsoft'un SSAS, Excel, Azure ML, Microsoft R Open, R Server vs. ürünlerinden faydalanabilirsiniz.)

İstatistiğin Güvenilirliği


İstatistiksel yöntemler bilimseldir. İstatistiğin temelinde Matematik vardır. Matematik ise son derece güvenilirdir, yalan söylemez ve evrenseldir. Fakat istatistiksel çalışmalar doğası gereği çeşitli paradokslar içerir. Olasılıklar, güven aralıkları ve kabuller üzerine inşa edilmiş yöntemlerle çevrilidir. Bunun üzerine bir de bilerek veya bilmeyerek yapılan hatalı çıkarımları, ön yargılı çalışmaları, araştırma konusundaki ölçülemeyen noktaları ve hesaplama hatalarını da eklersek istatistikten mutlak doğru beklenemez. Belki elde edilen sonuçlar karar verebilmek için bir takım fikirler verir diyebiliriz. Elde edilen sonuçlar karar verme konusunda avantaj sağlar diyebiliriz. Ancak istatistiksel çıkarımları tümüyle doğru kabul etmek yanıltabilir.

Bu nokta ile ilgili olan Simpson paradoksu konulu yazımıza bir göz atmak isteyebilirsiniz:

19. yüzyılda Benjamin Disraeli'nin dediği gibi "Üç türlü yalan bulunmaktadır: yalanlar, kuyruklu yalanlar ve istatistikler."

17 Mart 2017 Cuma

SQL Server 2016 Yenilikleri Etkinliğine Bekleriz - 23,29 Mart 2017

SQL Server 2016 yeniliklerine odaklandığımız etkinliklerimiz yolda. İlkini 23 Mart 2017 Perşembe günü, ikincisini 29 Mart 2017 Çarşamba günü İTÜ Teknokent'te gerçekleştiriyoruz.

Bekleriz!

27 Şubat 2017 Pazartesi

SQL Server Üzerinde 'Veri Şifreleme' Teknikleri ( E-Kitabım Yayınlandı )

Microsoft SQL Server üzerinde Veri Şifreleme yöntemlerine odaklandığımız e-kitabımı sizlerle paylaşmaktan mutluluk duyuyorum. 

Microsoft SQL Server üzerinde Veri Şifreleme konusunda temel seviyede beceri oluşturmasını ve daha fazlası için cesaret vermesini dilerim.

Giriş


Veritabanı şifreleme yöntemleri ile hassas verileri şifreleyip koruyabilirsiniz. Şifrelenmiş veriler ilk bakışta anlamsız ifadelerle temsil edilir ve üzerinde çalışılması engellenir. Kredi kartı bilgilerini, kişisel kimlik bilgilerini veya herhangi birisi için önemli olan, görünmesini ve kolayca kullanılmasını istemediğiniz diğer verileri hassas veri olarak düşünebilirsiniz.

Firmalar müşterileri, personelleri, finansal geçmişleri ve stratejileri ile ilgili hassas bilgileri yetkisiz gözlerden korumak için birçok seviyede çeşitli önlemler almaktadır. Bu önlemler yönetim, yöntem, insan, donanım ve yazılım seviyesinde olabilir. Pesimist veya optimist yaklaşımlara göre belli seviyede veya her seviyede farklı yöntemlerde önlemler alınabilir.

Verileri korumanın en etkili yolu onları şifrelemektir. Şifrelenmiş veriler farklı bir sisteme taşınsa bile onları okumak neredeyse imkansızdır. Tarih boyunca birçok şifreleme yöntemi uygulanmış ve çeşitli birçok konuda avantaj veriyi şifreli tutan veya şifreli veriyi okumayı başarabilen tarafta olmuştur.

Bu kitapta avantajı daima elinde tutmak isteyenler için Microsoft SQL Server üzerinde uygulanabilecek şifreleme yöntemlerine odaklanıyoruz. Bu yöntemlerin koruma gücü, geliştirme iş yükü, performansı, bakım sıklığı gibi çeşitli alanlarda kendine göre avantaj ve dezavantajları var. Sisteminiz için en uygun olan yöntemi dikkatlice belirlemeniz gerekir.

Kitap Hakkında


Bu kitap Microsoft SQL Server 2005, 2008, 2008 R2, 2012, 2014 ve 2016 versiyonları üzerinde uygulanabilen veri şifreleme yöntemlerini konu almıştır. Kitabın amacı, kolayca ve pratiğe dayalı bir yaklaşımla şifreleme yöntemlerinin temellerini okurlarına aktarmaktır.

Veri Şifreleme (Data Encryption) geçmişten bu güne ilgi çeken önemli bir konudur. Ancak bir çok uzman bu konuya tedirginlikle yaklaşır. Bu kitap sayesinde SQL Server üzerinde veri şifreleme yöntemlerinin temellerini öğrenecek, daha derine dalmak için cesaret bulacaksınız.

Geri bildirimlerinizi şu adresime gönderebilirsiniz: mailto:abdullahkise@hotmail.com

Faydalı olması dileğiyle …

E-kitabı okumak ve indirmek için:
https://1drv.ms/b/s!Ap5-WHzOJRrTi-5xYhoiCWwIRlyucQ?e=Usiqeh


E-kitabı okumak ve indirmek için:
https://1drv.ms/b/s!Ap5-WHzOJRrTi-5xYhoiCWwIRlyucQ?e=Usiqeh

6 Şubat 2017 Pazartesi

Dijital Dönüşüm Hız Kazanıyor - MS ve Koç Topluluğu Hackathonu

Bir kaç gün önce (25-26 Ocak) MS ve Koç Grubu “hackathon” etkinliği düzenledi. Bu etkinlikte Koç Grubu'ndaki kuruluşlar "dijital dönüşüm" kapsamında 20 civarı proje üzerinde çalıştı. Hepsi de son Teknolojiydi.

İki gün süren etkinlikte bir birinden güzel senaryolar kurgulandı. Çalışmaların detaylarını burada yayınlamayacağım. Ama son teknolojilerin hayata geçirildiği ilham dolu senaryoların yakında hayatımıza etki edeceğini söyleyebilirim.

Etkinlik boyunca MS ekibi ve MVP mentorler eşliğinde tüm firmaların proje fikirleri Microsoft'un son teknolojileri ile vücut buldu. Etkinlik sonunda da firmaların sunumlarını dinledik. Hepsi de bir yönüyle taktir gören ve ilham veren çalışmalardı.

Ben de bu etkinlikte proje gruplarına "Data Platform" MVP mentorü olarak desteğimi vermiş oldum. 

Koç Grubu'nu ve ilham dolu fikirlerini hayata geçiren tüm katılımcıları dijital dönüşüm yolunda attıkları öncü adımları için tebrik ediyorum.

Firmalara bakılırsa bu çalışmanın meyvelerinden yakın zamanda tüm ülke nasipleneceğe benziyor. 

Amerikan Hastanesi Koç Üniversitesi
Arçelik Opet
Aygaz Otokoç
Divan Setur
Ford Otosan TANI
Koç Holding Tofaş
Koç Sistem Tüpraş
Koçtaş

Etkinlikten bir kaç kare:


8 Ocak 2017 Pazar

NoSQL Dünyası - 3 (CAP Teoremi)

Veri büyüklüğü, veri akış hızı, çeşitliliği, istemci sayısı vs. arttıkça veritabanı performansı bizi tatmin etmemeye başlar. Bu durumda veritabanı uygulamasının ayarlarında ve veritabanı tasarımında bazı değişiklikler yapılır. Yeni bakış açıları ve uygulanan ayarlar sonucunda ortaya çıkan performans çoğunlukla tatmin edici olur. Fakat bazen ihtiyaçlar öyle bir noktaya varır ki altyapıda da bir takım değişiklikler yapmak gerekir.

Tatmin edici performans değerlerine ulaşabilmek için sisteminizde iki tür ölçeklendirme yapabilirsiniz; Dikey ölçeklendirme (Vertical Scale Out) ve yatay ölçeklendirme (Horizontal Scale Out). Mesela; cihazınızın donanımlarını güçlendirdiğinizde (örneğin; bellek, işlemci vs. eklediğinizde) dikey ölçeklendirme yapmış olursunuz. Birden fazla cihazı aynı amaç uğruna kullanabilmek için birbirine bağladığınızda ise yatay ölçeklendirme yapmış olursunuz.

Ölçeklendirme kısmının detayı için bir önceki yazımızı inceleyebilirsiniz;
http://www.abdullahkise.com/2016/02/nosql-dunyas-2-veri-tutarllk-modelleri.html

Yatay Ölçeklendirme ile Gelen Yeni Oyun Kuralı : CAP Teoremi


Eğer tek bir bilgisayarın performansı size yetmiyorsa. Özellikle geleneksel veritabanları ile çalışma konusunda bir engeliniz de yoksa tercihinizi birden fazla bilgisayarın görev aldığı yatay ölçeklendirmeden yana kullanabilirsiniz. Hatta bazen yatay ölçeklendirme bir zorunluluk haline gelir.

Yatay ölçeklendirme yapıldığında ortaya dağıtık sistemler çıkar. Dağıtık sistemler birden fazla birbirine bağlı düğümden (basitçe bilgisayar olarak kabul edebiliriz. Sanal makine, bir uygulama kurulumu vs. olabilir.) oluşan ve aralarında çeşitli kurallara göre verileri paylaşabilen bir ekosistem oluşturur. Bu ekosistemdeki temel kural da CAP teoremi ile ifade edilmektedir. CAP teoremi birden fazla düğümün iş birliği yaptığı sistemlerde ortaya çıkan durumları açıklar.

CAP teoremi aşağıda bahsedeceğimiz özelliklerin ilk harfleriyle isimlendirilmiştir.

CAP teoremi der ki; Dağıtık sistemlerde aynı anda aşağıdaki üç özelliğin sağlanması mümkün değildir. 

Özellikler şunlar;
  • Consistency (Tutarlılık): Tüm düğümlerde aynı anda aynı veri görünür. Yani en son değişikliklerin tüm düğümlerde yerini alması garantidir.
  • Availability (Erişebilirlik - Müsait Olmak):  Her istek sistem tarafından cevaplanır. Yani sistem hatalı veya başarılı tüm taleplere beklendiği gibi cevap verir.
  • Partition Tolerance (Parça Toleransı - Parçanın Eksilmesine Tolerans): Bir kısmı zarar görse de sistem çalışmaya devam eder. Yani bazı düğümler çalışmasa da veya düğümler arası ağda bir hasar olsa da işler aksamaz. Tabi ki makul seviyede bir bozukluktan bahsediyoruz. Tüm sistemi çalışmaz hale getirecek hasarlar her zaman olasıdır.
Teorem gereği dağıtık sistemlerde bu özelliklerden aynı anda en fazla iki tanesi sağlanabilir. Bir tanesinden feragat edilir. Ortaya çıkan alternatif hallerden iş modelinize uygun olanını belirlemeniz 500'den fazla NoSQL veritabanı teknolojileri arasından size en uygun olanını bulmanızda büyük kolaylık sağlar. Mevcut sisteminizin iş modelinizle uyumlu olup olmadığını bir dereceye kadar bu teorem üzerinden sorgulayabilirsiniz.

CAP teoremi, dağıtık sistemlerdeki alternatif hallerin şunlar olduğunu bize ifade eder:
  • Consistency & Availability (CA): Tüm değişiklikler aynı anda tüm düğümlerde görünür ve sistem tüm isteklere cevap verir. Ancak bir şekilde düğümler zarar görürse sistem kitlenir. İstemciler bloklanır. Bütün RDBMS'ler bu gruba dahildir. Tabi ki bu tarz durumlar için bazı RDBMS teknolojilerinde sadece okumaya yönelik de olsa hizmet devam edebilmektedir. Çoğunlukla veri tutarlılığının her şeyden daha fazla ön planda olduğu sistemler için ideal durumdur. Mesela para transfer işlemleri böyledir.
  • Consistency & Partition Tolerance (CP): Bir kısmı zarar görse de sistem çalışmaya devam eder ve tüm düğümlerde aynı veri görünür. Tutarlı olmayan verinin gösterilmemesi için bazı verilere erişim sağlanamayabilir. Yani ‘Availability’den feragat edilir. Fakat erişilen veride tutarlılık korunur. Çoğunlukla veri yazılan iş modelleri için ideal durumdur. Örneğin bir cihaz veya uygulama hareketlerinin loglanması böyledir.
  • Availability & Partition Tolerance (AP): Bir kısmı zarar görse de sistem hizmet vermeye devam eder ve iş yüküne bağlı olarak değişen cevaplar istemciye iletilir. Güncel olmak veya tutarlılık garanti edilmez. Çoğunlukla veri okuma yapılan, tutarlılığın değil de erişilebilirliğin ön planda olduğu iş modelleri için ideal durumdur. Örneğin sosyal medya mesajlaşmaları böyledir.

CA ve CP modellerinde genellikle tüm talep ve takipten sorumlu bir master olur. AP modelinde ise genellikle master olmaz. Genellikle ifadesini kullanıyorum çünkü farklı mimari tasarımlar yapılabilmektedir.

Düğümler arası iletişim kesildiğinde ortaya çıkacak sonuçları şu çizimle ifade edebiliriz:


Gecikme (Latency) de devreye girdiğinde bu teorem geçerliliğini yitiriyor gibi görünüyor. Yani geç cevaplar almak sizin için problem değilse üç özellik de sağlanabilir. Tabi ki tatmin edici sonuçlar alabilmek için teknolojinin insan algısının altında bir gecikme sunması gerekir. Şimdilik bu konu tartışmaya açık. Burada üzerinde durmayacağım.

CAP Teoremine Göre NoSQL Teknolojileri


Dağıtık sistemler üzerinde konumlanan NoSQL teknolojileri CAP teoremine uygun şekilde hizmet verir. En yaygın NoSQL teknolojilerini varsayılan ayarları göz önünde tutularak CAP teoremine göre şu şekilde guruplayabiliriz:


Bir önceki yazımızda bahsettiğimiz ACID ve BASE isimli veri tutma yaklaşımları da CAP teoremi ile ilişkilidir. Ancak birlikte anlatıldığında kafa karışıklığına yol açabilmektedir. CAP teoremi dağıtık sistemlerin hangi alternatif durumlarda olabileceğini ifade eder. ACID ve BASE ise veritabanı sistemlerinin tutarlılığı sağlama konusundaki yaklaşım tarzını ifade eder. Tabiri caizse ACID tutarsızlık olmaması için çok pimpirikli davranıldığını anlatırken, BASE bu konuda oldukça rahat davranıldığını ifade eder. Dağıtık sistemlerin doğasında BASE yaklaşımı vardır.

Eric Brewer'in 1999 yılında yayınladığı CAP teoreminin etkilerini birlikte çalışan parçaların olduğu her sistemde görmek mümkün. Bir ekip çalışmasında bile bu teoremin işlediğini görebilirsiniz. Fakat bizim bu seride odaklandığımız konu dağıtık sistemler üzerinde çalışan NoSQL veritabanlarının karakteriydi. 500'den fazla NoSQL veritabanı teknolojisi var. Neredeyse her biri kendi nevi şahsına munhasır. Sonuç olarak iş modelinize uygun bir NoSQL teknolojisi seçebilmek için CAP teoreminin sesine kulak vermeniz gerekir.

Tüm bu teknolojileri Microsoft Azure üzerinde kolayca test etmeniz mümkün. Şu linki takip edebilirsiniz: https://azure.microsoft.com/