27 Ağustos 2008 Çarşamba

BUSINESS INTELLIGENCE

Neden İş Zekası Demişler?
Bu kavram ilk olarak 1989 yılında Gartner Inc. firmasında analist olarak araştırma yapan Howard Dresner tarafından kullanılmıştır. O tarihe kadar DSS (decision support system) ve EIS (executive information system) gibi karışıklık yaratan kavramlar kulanılmaktaydı. Burada zekadan çok aslında bir yönlendirme söz konusu. Business Intelligence uygulamaları sayesinde karar vericiler,stratejik ve operasyonel kararlarında daha doğru ve hızlı adımlar atabilmektedirler.
Bu yazımızda Business Intelligence kapsamında Dataware house yapısından ,özelliklerinden ; ETL nedir, nasıl işler ondan bahsedelim...
DATAWAREHOUSE ÖZELLLİKLERİ

1. 1- Database'de sorgularımız kişi bazında olur.
2. 2- Bir çok kaynak sistemden veri alındığı için bütünleşik bir yapı vardır.
3. 3- Değişkenlik göstermeyen data yapısı içerir.
4. 4- Historik datalar saklanır.

OLTP SİSTEMLER İLE DWH ARASINDAKİ FARKLAR dan bahsedecek olursak
OLTP sistemler sadece önceden tanımladığımız operasyonlar , fonksiyorlar için geçerlidir fakat dataware house'da ise o iş için özel olarak tamınlamış sorgular söz konusudur.OLTP sistemler hızlı çalışan ve sürekli sistemin update edildiği sistemlerdir, DHW de ise haftalık , aylık, vb... update run' ları çalıştırılabilir.Sorgu yapısına örnek verecek olursak satış-pazarlama bazında verşi ambarının inceleyecek olursak sorgumuz " Bu kampandan en cok yararlanan müşteri kim?" iken eğer bu soru OLTP sisteme uyarlanacak olursa şu şekilde değişebilir : "Bu kampanyadan elde edilen toplam gelir ne kadardır?" DWH özneye yönelik iken , OLTP nesnelere yönelik sorguları destekler.
Veri ambarınızı temsilen farklı farklı mimariler kullanabilirsiniz.

1. Basic Model : Kaynak sistemlerden verinin geldiği, veri ambarında toplandıgı ve kullanıcılara açıldığı mimari.
2. Ara Katmanlı Model : Veri ambarına verinin gönderilmeden önce ara bir katmanda toplandığı mimari.
3. Ara Katmanlardan ve Data Martlardan oluşan Model : Verinin kullanıcılara açılmadan önce çeşitli data martlarda toplandığı mimari.

ETL NEDİR ?
ETL verinin Kaynak sistemlerden seçilip , taşınıp hedef sisteme yüklenmesidir. (Extraction , Transformation , Loading 'in kısaltması)
EXTRACTION ile başlayacak olursak : Kaynak sistemden data almak dedik, bunu yaparken 2 yolla yapabiliriz

1. Full Extraction : Her seferinde kaynak sistemden bir alım yapacaksak bütüm veriyi alıyoruz.
2. Incremental Extraction : Fakat ıncrementalda "son run'dan" sonraki veriyi aktarıyoruz sadece.

TRANSFORMATION : DWH mimarisi olarak Ara katmanlı ve Data martlardan oluşan yapıdan bahsettik. Bu da bize şunu gösteriyor. Data :

1. Kaynak sistemden ara katmana
2. Ara katmandan veri ambarına
3. Veri ambarından data martlara taşınıyor...

Bu taşınma işlemi heterojen yapılar için(farklı farklı database'ler ya da farklı işletim sistemlerinin taşınmasında) FTP ile ya da Tablespace ler ile yapılıyor.
LOADING : Kaynak sistemden alınan veri son aşama olarak da hedef sisteme yükleniyor. Eğer elimiz de Unix file'ler ya da tablolar varsa bunlar SQL Loader ya da Extern Table'lar ile Hedef sisteme taşıyoruz .
Böylece ETL sürecimiz sonlanmış oluyor.

17 Ağustos 2008 Pazar

Mobil Uygulama Geliştirme

Not: Bu yazıya buradan da ulaşabilirsiniz.

Merhaba arkadaşlar,

Bu yazıda mobil uygulama geliştirmede hedefleyebileceğiniz çeşitli platformlardan, bunlar için uygulama geliştirilebilecek programlama dillerinden, kullanabileceğiniz IDElerden, ve telefon spesifik SDKlardan bahsedeceğim.


Platformlar


Aslen 2 ana platform var. Symbian ve Windows Mobile. En çok bunlar kullanılıyor.
Google Android ve iPhone'u da unutmamak lazım tabii; ancak onlar bu yazının konusu değiller.


Symbian'a JME(Java Micro Edition) ve Symbian C++ ile yazabiliyoruz. Ancak farketmişsinizdir; direk C++ yazmak yerine Symbian C++ yazdım; çünkü C++ biliyor olmanız rahat bir şekilde Symbian C++ da yazabileceğiniz anlamına gelmiyor. En basitinden Symbian C++'ta stringleri kullanamıyorsunuz; çünkü Symbian'ın yazılım geliştiricilere açtığı API'ler parametre olarak 'descriptor' adı verilen şeyler alıyor. Descriptorları kullanmalarının amacı string'leri yazılım geliştiriciler için daha güvenli bir hale getirmeleri imiş. Aynı zamanda descriptorlar unicode; c++ stringleri ise değil. Exception handling de dahil olmak üzere daha birçok konuda farklılıklar var. Ancak Symbian C++'a derinlemesine girmek istemiyorum; Symbian C++ cidden bir derya ve anlatılabilecek cidden çok fazla şey var.


Peki ya, neden Symbian C++'ı kullanıyoruz ki o zaman diyebilirsiniz; JME çok daha rahat yazılıyor sonuçta değil mi?


Evet, aslında bir bakıma haklısınız; eğer birşeyi JME'de yapabiliyorsanız orda yapmalısınız, size çok zaman kazandıracaktır. Ancak, bazı özellikler telefonlardaki JME implementasyonları tarafından desteklenmiyor. Örneğin cell id'yi JME'den alamıyorsunuz; symbian telefonların büyük bir kısmında. Eski 3650'de alınabiliyordu diye hatırlıyorum, N96'da da alınabilecekmiş; ancak dediğim gibi, telefon üreticisinin buna izin vermesi gerekiyor. Bu tip durumlarda native(yerli) kod kullanarak hangi Symbian telefon olursa olsun, Symbian'ın bize açmış olduğu herşeye erişebiliyoruz. Ancak tabi bu sefer de Symbian işletim sistemi olmayan telefonlarda çalışmıyor :( Görüldüğü gibi, bu bir tradeoff aslında; hangisi sizin durumunuza daha uygunsa onu seçmelisiniz.


Başka bir husus da tabii doğal olarak Symbian C++'ta yazılmış bir uygulama JME'den daha hızlı çalışacaktır yerli kod olduğu için. Her 2 dildeki aynı özelliklere sahip uygulama geliştirme süreleri göz önüne alındığında, bu hız farkı çok da önemli olmayabilir tabi duruma göre. Symbian C++ ve JME karşılaştırması hakkında son bir cümle daha söyleyeyim ve bitireyim: Symbian C++ çok daha güçlü; ancak çok daha eziyetli de güzel bir kelime olurdu :)


Symbian'a aynı zamanda Python'la da yazabilirsiniz, ancak daha önce herhangi bir tecrübem olmadı, o yüzden pek fazla birşey yazamayacağım bu konuda.


Symbian'a .NET'le yazabiliyor olmak ister miydiniz? Birkaç sene önce aslında buna izin veren bir firmanın IDE'si(Appforge CrossFire) vardı, ancak daha sonra Oracle şirketin entellektüel mülkiyetini satın almıştı ve şirket operasyonlarına son vermişti. O zamandan sonra bu mümkün olmamıştı, ancak şimdilerde yine bir firma bir library aracılığı ile Symbian'a .NET uygulamaları yazılmasına izin veriyor. Ancak Net60 adı verilen bu library paralı ve sadece .NET CF 1.0 uygulamaların geliştirilmesine izin veriyor. Hali hazırdaki .NET CF 1.0 uygulamalarınızı Symbian'da çalıştırabiliyorsunuz böylece.


Windows Mobile'a ise herhangi bir para ödemeden daha geniş bir dil havuzuyla yazabiliyoruz denebilir sanırım..


Windows Mobile için uygulamalar daha çok .NET framework'ü ile ve C# ile yazılıyor; ancak bildiğiniz gibi .NET framework'ü aslında herhangi bir dile has değil, bildiğim kadarıyla yaklaşık bir 35-40 dilde yazılabiliyor. Ancak bunların hepsi 'managed' olmuş oluyor, yani .NET framework sonuçta hepsini tek bir dile çeviriyor. 'Managed' olmayan bir şekilde C++ ile yazmak da mümkün tabii. Aynı zamanda JME ile de yazabiliyorsunuz, ancak ben hiç denemedim. Benim gözlemlediğim, C# ile gerektiğinde DLL çağrıları yaparak istediğiniz herşeyi yazabildiğiniz. Ancak yine de önceden belirttiğimiz gibi uygulamanızın geniş bir telefon yelpazesinde çalışmasını istiyorsanız JME vazgeçilemez durumda şu an.


IDEler


IDE'leri inceleyecek olursak; JME uygulamaları için Mobility Pack'li Netbeans en iyi seçenek gibi gözüküyor.(Eclipse ME de bir seçenek) Windows Mobile uygulamaları için tabii ki Visual Studio'yu, ve son olarak Symbian C++ için Nokia'nın Eclipse'i baz olarak alıp ve onu geliştirerek yarattığı bedava olan Carbide.c++ IDE'sini kullanabiliriz. Aslında bazı özellikler sadece 1 aylığına bedava,(telefon üzerinde debuglama gibi) bundan sonra gerekli ücreti ödeyerek satın almanız isteniyor kullanmaya devam etmek için.


SDKlar


Ancak IDEler dışında, hedeflediğiniz telefon platformu ve işletim sistemi için gerekli SDK'ları(Software Development Kit) da yüklemeniz gerekiyor. Örneğin N95 için 3rd Edition Feature Pack 1 SDK'sını yüklemiştim ben, ona uygulama geliştirdiğimde. Aynı zamanda Windows Mobile için de işletim sistemi versiyonlarına göre ayrılıyor. Windows Mobile 5.0 veya 6.0 SDK gibi işletim sistemi versiyonuna uygun SDKyı yüklemeniz gerekiyor uygulama geliştireceğiniz sisteme.


Hangi SDK'yı yüklemem gerektiğini nasıl anlayabilirim diyorsanız; dostumuz Google'a "[telefonModeli] spec" tarzında aramalarda bulunarak, telefonun spesifikasyonunun olduğu bir sayfaya yönlenip oradan gerekli bilgiyi alabilirsiniz.


Evet, şimdilik bu kadar, umarım faydalı olmuştur, aklıma başka şeyler gelirse gerektiğinde eklemede bulunabilirim.


Ozan Safi
Soru ve önerileriniz için: ozansafi@gmail.com