
Mustafa Aksoy
Amasya doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Süleyman Demirel Üniversitesi Bilgisayar Sistemleri Öğretmenliği’nde iki yıl okuduktan sonra Hayalim olan Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümüne geçtim. Ve 2010 yılında mezun oldum. 2. Sınıfta Oracle ile tanıştım. ODI ve OBIEE ile ilgili birçok projede yer aldım. Ve yaptığım çalışmalar sonunda bitirme tezimi Oracle’da RAC mimarisi üzerine yaptım. Oracle ile ilgili çalışmalarıma devam etmekteyim. İlgi alanlarım ve bildiğim teknolojiler; PLSQL, ODI, OBI, ETL Circle, Oracle Administration, RAC systems, Data Guard, ASM
SQLite
Bu yazı daha önce saltokunur.org e-dergide yayınlanmıştır.
Şu senaryodaki durum masaüstü uygulamalar geliştiren çaylak-tecrübeli tüm geliştiricilerin başına gelebilir. Benim başına geldi oradan biliyorum :)
Programcının Çilesi
Hikâyemizde geliştiricimiz güzel bir program fikri bulur. Fikri gerçekleştirmek için platform, uygulama çatısı (Framework), programın yazılacağı dil... vb hazırdır. Geliştiricimiz programın işleyeceği verileri bir veri tabanında tutup, ilişkisel veri tabanlarının nimetlerinden faydalanmak istemektedir. İşte sorun da tam burada baş gösterir. Veri tabanı sunucusuna nasıl erişecektir? Uygulama masaüstü uygulama olduğu için çalışması için internet bağımlılığının olmaması gerekmektedir. Günümüz Türkiye şartlarında programı kullanan bütün bilgisayarların internete bağlı olamayacağı, olanların da zırt pırt kesilen bağlantı yüzünden programı adam gibi kullanamayacağı açıktır. Hem programcımız bu riski göze alıp, programı sürekli çevrimiçi olan veri tabanı (VT) sunucusuna bağlarsa, ücretsiz dağıttığı bir uygulama için bir VT sunucusu kiralamak zorunda kalacak, gelecekte belki programın kullanıcı kitlesi genişlediğinde o kadar veriyi tutacak VT sunucusu (VTS) bile bulamayabilecektir. Burada bir çözüm VTS'yi localhost'a kurup verileri bu şekilde işlemek olabilir. Ama şöyle bir gerçek var ki son kullanıcıların hepsi bir VT Yöneticisi değil. Düşünün bir kere dünyanın en çok kullanılan (bu yazıdan sonra aslında 2. olduğunu anlayacağınız :) MySQL'i uygulamanızla birlikte dağıttığınızı. Bugün en güncel MySQL 5.1 sürümü 104 MB, bir önceki 5.0 sürümü 22 MB [1]. Bu boyutta bir programı uygulama ile birlikte dağıtmak, kurulum dosyasını şişirmeye yarar, başka bir şeye değil. Hem MySQL'i kurduğumuzu düşünelim, kurmakla bitmiyor ki, root şifresi ayarlanacak, programın kullanacağı VT uygun karakter-kodlamayla oluşturulacak, MySQL hata verdiği zaman takip edilip düzeltilecek, dahası Windows güvenlik duvarı çalışmasına izin vermeyecek, gerekli olan port kullanımda olacak ve MySQL servisi başlatılamayacak. Biraz abartı gelebilir ama bu sorunlarım hepsi Windows üzerinde MySQL çalıştırılmak istenirken çok sık karşılaşılan sorunlar. Son kullanıcı bu sorunların hiçbiriyle baş edemez, onun için sadece "Next" vardır. "Next-Next-Next-(Bazen de Install :)"
Çözüm
Bu sorunun bir çözümü şu olabilir. Tecrübeli programcıların bile "Benden-Uzak-Allah'a-Yakın-Olsun" dediği, verileri bir dosyaya kaydetmek. Evet, çözüm basit gibi gözükse de programın işleyeceği verilerin yapısı karmaşıklaştıkça (bir VT'deki foreign key, trigger, function gibi yapıların getirdiği kolaylıkları düşünün) bunları bir dosya yapısına dökmek çoğu zaman geliştiricileri projelerinden soğutuyor. İşte bu ahval ve şerait içinde şöyle dediğinizi duyar gibiyim: "Keşke şöyle ne internete, ne sunucuya ne de ayara ihtiyaç duyan bir küçük program-kütüphane (library) olsa da, verileri VT biçiminde bir dosyaya kaydetse..."
Aslında yukarıda tırnak içinde yaptığım tanım SQLite için en basit ve anlaşılır tanım oldu. SQLite sunucu olmadan çalışan, hafif, küçük (tek bir dosya ve 500 KB den az), hiçbir ayara ihtiyaç duymayan, hızlı, SQL komutları kullanarak veri alış-verişi yapabilen bir ANSI-C kütüphanesidir. Kullanımı ise çok basittir. SQLite'ın kütüphane dosyasına (sqlite3.dll) SQL komutları gönderirsiniz, o da bu komutları işler ve bir VT dosyasına kaydeder. İstediğiniz zaman da SELECT sorguları çekerek bu dosyadan verilerinizi alabilirsiniz. Bu işlemler için ne bir ayar ne de bir kurulum gereklidir.
SQLite
SQLite, ilk olarak D. Richard Hipp tarafından geliştirilmeye başlandı ve 17 Ağustos 2000 tarihinde ilk sürümü yayınlandı. [2] İlk yayınlandığından bugüne kadar ki geçen zaman içinde temel VT işlemlerinin neredeyse tamamını gerçekleştirebilecek şekilde geliştirildi. Bu yazı yazıldığında en güncel sürümü 3.6.17 idi.
SQLite sadece bir C Kütüphanesi olduğu için, taşınabilirliği çok yüksektir. Günümüzün bilinen tüm platformlarında çalışabilir. Windows, Mac OS X, Linux, BSD, Solaris, UNIX, AmigaOS, Symbian, z/OS 1. [2]Gelecekte başka bir Veri Tabanı Yönetim Sistemi (VTYS)'ne geçilmek istendiğinde basit bir SQL sorgusuyla tüm veri alınıp rahatça diğer bir VTYS’ye geçilebilir.
Lisanslama
SQLite "Halka Açık" bir yazılımdır. Dağıtımı “Public Domain” [3] altında yapılmaktadır. Kaynak kodu açıktır. Yani SQLite'i istediğiniz gibi kullanabilir, kodunu değiştirebilir (uygulamanızın kullanmayacağı özellikleri kaldırıp yeni özellikler ekleyebilir), ücretsiz-ticari, açık-kapalı kaynak bütün uygulamalarda hiçbir kısıtlama altına girmeksizin kullanabilir, SQLite ile geliştirdiğiniz bir uygulamadan gelir de elde edebilirsiniz.
Teknik Özellikler [2]
Teknik özelliklerinden bahsetmek gerekirse SQLite için boyundan büyük işler başarıyor diyebiliriz.
- En Fazla VT dosyası boyutu: 32 TB
- Bir Tablodaki En Fazla Sütun Sayısı: 32767
- En Fazla Metin (String-Char) Veri Boyutu: 1 GB
- En Fazla Blob (Binary) Veri Boyutu: 1 GB
- En Fazla Number (Int-Double) Veri Boyutu: 64 bit
SQLite’in bir güzel özelliği de tam Unicode desteği sağlamasıdır. UTF-8 ve UTF-16 kodlamayı destekler.
SQLite transactional (işlemsel) bir VT kütüphanesidir. Sık kullanılan birçok ilişkisel SQL cümleciğini destekler. Bunlar: Union, Intersect, Except, Inner join, Outer join, Inner select, Merge join. Ayrıca VT içinde Trigger tanımlamaya da izin verir.
Tarih (date) veri tipini ve data domain, cursor, function, procedure gibi işlemleri desteklememesi SQLite’in şu anki sürümü itibariyle eksik yönleri.
SQLite'in en geniş dağıtıma ulaşmış VT motoru olduğu tahmin ediliyor. Bugün birçok program, işletim sistemi, cep telefonu, PDA hatta Mp3 oynatıcılar bile gömülü olarak SQLite kullanıyor. SQLite siz farkına bile varmadan çoktan bilgisayarınıza girmiş olabilir. Örnek vermek gerekirse, Firefox (120 milyon kopya) internet geçmişinizi tutmak için bir SQLite VT'si kullanıyor. Eğer Windows ortamında Firefox kullanıyorsanız "C:\Program Files\Mozilla Firefox" dizini altında "sqlite3.dll" dosyasını bulabilirsiniz. Ya da bir müzik oynatıcı olan AIMP2 şarkı listelerini yine SQLite VT'sinde tutuyor. Bunun Linux dünyasındaki karşılığı ise KDE kullanıcılarının çok iyi bildiği amorak. Yine amorak playlist'lerini SQLite VT'sinde saklıyor. Örnekler çoğaltılabilir, bugün PHP5 (20 milyon kopya) varsayılan olarak SQLite desteğiyle geliyor. Solaris (10 milyon kopya) sistemi boot ekmek için, Philips mp3 çalarlar yine playlist'leri saklamak için, Skype (100 milyon kopya), iPhone da SMS’leri saklamak için hep gömülü olarak SQLite kullanıyor. Tüm bu dağıtımların toplamının yaklaşık 300 milyon olduğu tahmin ediliyor. Bu da SQLite’i dünyanın en geniş dağıtımlı SQL motoru yapıyor. [4]
Kullanımı
SQLite harici uygulama olarak çalıştırılacaksa Linux'ta konsoldan ya da Windows'ta komut satırından "SQLite3 vt_dosyasi_adi" komutuyla çalıştırılır. vt_dosyasi_adi dosyası yoksa SQLite kendi oluşturur. Bundan sonra (;) ile biten SQL komutlarını programa girerek normal bir VT sunusu gibi kullanılır.
SQLite’in VT hakkında bilgi veren ve üzerinde çeşitli işlemler yapan, komut satırından çalıştırılan bazı özel komutları da vardır. [8]
- · Veritabanındaki tabloları görmek: sqlite> .tables
- · Veritabanı konsolundan çıkmak: sqlite> .exit
- · Kolon adlarını almak: sqlite> pragma table_info(
)
- · Yardım: sqlite> .help
- · Select çıktısına format vermek:
- · Otomatik artan kolonun son değerini ele almak: sqlite> select last_insert_rowid();
- · Veritabanını dışa aktarmak: sqlite> .dump
- · Veritabanını sql scriptine aktarır:
- · Konsolda veritabanını kopyalamak:
- · SQL script ile veritabanında tablolar oluşturmak:
SQLite kütüphanesi bir program içinde gömülü olarak kullanılacaksa "#include
SQLite'i gömülü olarak kullanmak için ille de C bilmeniz gerekmiyor. SQLite'in bilinen programlama dillerinin neredeyse tamamı için (C#, D, Delphi, Fortran, Java, Perl, PHP, Python, Ruby, Smalltalk…) sarıcı (wrapper) API’leri bulunuyor.[6] Böylece istediğiniz dilde uygulama geliştirirken SQLite’i kullanabiliyorsunuz.
Hız Karşılaştırmaları [7]
SQLite diğer VTYS'lerle karşılaştırıldığında INSERT sorgularında biraz geride kalıyor ama SELECT sorgularında çok daha hızlı sonuçlar veriyor.
Aşağıda SQLite 2.7.6, PostgreSQL 7.1.3 ve MySQL 3.23.41 kullanılarak yapılan hız testlerinin sonuçları yer alıyor. Süreler saniye cinsindendir. SQLite’in Nosync değerleri thread senkronlaması kapatılarak alınmıştır.
|
25000 INSERT Bir sorguda |
100 SELECT indeksiz |
1000 UPDATE indeksiz |
SELECT’ten INSERT |
DELETE indeksli |
5000 SELECT indexli |
PostgreSQL |
4.900 |
3.629 |
1.739 |
61.364 |
1.316 |
4.614 |
MySQL |
2.184 |
2.760 |
8.410 |
1.537 |
2.262 |
1.270 |
SQLite |
0.914 |
2.494 |
0.637 |
2.787 |
2.068 |
1.121 |
SQLite (nosync) |
0.757 |
2.526 |
0.638 |
1.599 |
0.752 |
1.162 |
SQLite üzerinde daha geniş araştırma yapmak isteyenler www.sqlite.org daki wiki'de kullanım, yönetim, bakım hakkında çok yararlı makaleler bulabilirler.
Kaynaklar
[1] www.mysql.com
[2] http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
[3] http://en.wikipedia.org/wiki/Public_Domain
[4] http://sqlite.org/mostdeployed.html
[5] M. Ali Vardar, Linux ve UNIX Sistemler İçin Açık Kaynak Kodlu Yazılım Geliştirme, Temmuz 2008
[6] http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
[7] http://www.sqlite.org/speed.html
[8] http://gurcanyavuz.wordpress.com/2009/04/15/sqlite-veritabani/
Hamza Apaydın
AYNI BİLGİSAYAR DA RAC İÇİN VMWARE SERVER KONFİGURASYONU KURULUMU
VMWARE nedir?
Wmvare sanal bir makine yazılımı olup, kullandığımız bir işletim sistemi üzerine kurulan ve başka bir işletim sistemi ile çalışmamızı sağlayan bir makinedir.Mesela ben Windows 7 kullanıyorum, ve bazı programların kurulumunda sorun yaşıyorum. O zaman wmvare üzerine Windows XP yada Linux türevlerini rahatça kurup istediğim ve bu işletim sistemiyle sorunu olmayan programları da o sanal makinenin üstüne kurabiliyorum. Wmware bana bunları yapma imkanı sunuyor.
Rac ile ilgili olarak; aynı bilgisayar üzerinde birden fazla nod kullanarak uygulama geliştirebileceğiz.
REAL APPLICATION CLUSTERS’ın PAYLAŞILAN DİSK BİLEŞENLERİ
Selamlar.
Bu makalemizde Rac mimarisi içersinde RAC disk paylaşımını ne şekilde ve nasıl yapıyor onu inceleyeceğiz.Umarım faydalı bir yazı olur.
Real Application Clusters veritabanları, tek Oracle instance’ına sahip Oracle veritabanları ile aynı bileşenlere sahiptir. Bu durum, bir yada daha fazla kontrol dosyalarını, bir dizi online redo log dosyalarını, isteğe bağlı arşiv log dosyalarını, veri dosyalarını ve bunun gibilerini kapsamaktadır. Böylece, her redo log grubunun herbir online redo log üyesi için, herbir kontrol ve veridosyası için, paylaşılan diske giriş imkanı sağlamanız gerekir. Paylaşılan diski,undo tablespace(geri alımtablo alanı) veri dosyasının tavsiye edilen otomatik geri alım yönetimi özelliğini kullanması için konfigüre etmeniz de gereklidir.
Windows NT ve Windows 2000 işletim sistemlerinde(sadece bu sistemlerde), Oracle’ın küme konfigürasyonu bilgilerini depoladığı bir voting yada quorum disk’ e ortak erişim imkanı sağlamanız gereklidir. Bu diski bir Cluster File System (CFS) üzerine veya bir işlenmemiş makine üzerine yerleştirebilirsiniz. Düğüm monitor(gözleyicisi) küme konfigürasyonlarını yönetebilmesi için quorum disk konfigürasyonunu kullanır.
Cluster File System(Küme Dosya Sistemi)/Küme Veritabanı işlemi
Selamlar...
Rac ile ilgili ne kadar çok şeyden bahsedersek edelim aslında iş dönüp dolaşıp mimariye geliyor. Ve ben de aklıma geldikçe mimari ile ilgili yazılarımı paylaşmayı düşünüyorum. Çünkü işin özü mimaride...
Aslında database ve özellikle Datawarehouse zaten mimari ile güçlenmişlerdir.Zaten bu işin Dünyada onlardan sorulduğu kişi bu şekilde(modelleme üzerine) çalışmalarla ön plana çıkmışlardır.
Onlardan biri olan Dr. Kimball incelemek isterseniz:
http://www.rkimball.com/ tavsiye ederim.
her neyse konumuza dönecek olursak:
RAC(Real Application Cluster) ARCHITECTURE(MİMARİSİ) uygulama
Oracle'ın Yüksek Kullanılabilirliği(High Availability/HA) Çözüm Yığını
Paylaşılan Depolama Seçenekleri
- NFS Monte Depolama (Netapp)
- SCSI Paylaşılan depolama; OCFS, OFS, Raw Cihazlar ile
- Yapı Mimarisi ile Fiber Kanal depolama
RAC(Real Application Cluster) Architecture(Mimarisi)
İKİ NODE MİMARİSİ, KORUMASIZ
Dijital Dünya Sorgulanıyor
Oracle Data Integrator(ODI) Genel Bakış
OLAP VE ORACLE DATA INTEGRATOR(ODI)
Olap ve Oracle Data Integrator arasinda, tablolama konusunda ortaklik bulunuyor.Aslinda ODI yeni bir teknoloji degildir. Yani bildigimiz manada. Asagida tablolardan da anlasilacagi gibi, ODI sadece yöneticidir. Kendisinin yaptigi bir sey yoktur.Oracle, SQL gibi database sistemlerde bu toollari kullanir.OLAP ile ise zaten OLAP'in kendisi veri bütünlestirme yöntemidir. Oracle'da da ODI ile bu teknolojiyi kullanabiliriz.
ODI Nedir?
ODI: Oracle Data Integrator
ODI daha sonra hedeflere yüklenecek çok sayida verinin saglar.Yeni set edilmis bilesenlere veya herhangi heterojen kaynak(çesitli veriler)lara uzaktan erisimi saglar. Yani onlarin(verilerin) tanimlariyla baglantilar kurar. Kendileri offline olsalar bile; onlarla ilgili islemler yapabilir. Bunu sürükle birak mantigi ile ama yine de bir kod tabani üzerinden yapar.Süreç akisi ve veri haritalama kullanarak,ELT isleme benzer veri entegrasyonu ODI ile gerçeklestirilebilir. Veri birden fazla kaynaktan, çesitli dönüsüm süreçleri gönderilerek ve ayiklanan bir nihaî hedefe yüklenerek; olusturmak istedigimiz tablo kriterlerine uyacak kadar esnek bir yapi ile ODI de(daha dogrusu; yine Oracle'in kendisinde) islenebilir.Dönüsümler kaynak sistemleri veya platformu üzerinden, hedef ortamda özel kodu dahil bilgi modülleri tarafindan tanimlanarak olusabilir.
Oracle Data Integrator(ODI) , yüksek performansli hareket ve veri dönüsümü durumlarina göre; heterojen sistemlerde senkron ve asenkron modlarla gerçek zamanli toplu islemler yaparak; modüler tasarim yaklasimi ile kullanici verimliligini artirir.ODI, grafik modülleri ve yazilim prensipleriyle buna izin verir.Oracle Data Integrator, grafik modulleri ve yazilim maddeleri ile buna izin verir(verimlilik artimina).
• Ters mühendislik uygulama modelleri.
• Veri tutarliligi kontrolu.
• Arabirimleri uygulamalari arasinda Tasarim, test, isletmek ve korumak
• Kontrol edilmis veri arayüzler tarafindan, hata izolasyonu ve/veya geri dönüsüm ile islenmis olarak akmasi • Eksik veri girisi tanimlamak
Oracle Data Integrator(ODI) için tasarlanmistir.
ORACLE DATA INTEGRATOR(ODI) MIMARISI
Mimari Durumu(görünüsü)
ODI mimarisi bilesenlerle, client-server tarzinda bi moduler ambar etrafinda organize edildi. Grafik modülleri ve uygulama araçlari ile bütünüyle java da yazildi.Kullanicilar bilgiye bir arayüz vasitasiyla(designer), mimariye dahil bir web uygulamasi ile erisebilirler.
1 GRAFIK MODULLERI
4 tane grafik Modülü vardir. i)Designer, ii)Operator, iii)Topoloji Yöneticisi ve iiii)Güvenlik Yöneticisi.Bu moduller Java Virtual Machine 1.5(J2SE), grafik platformunda kurulabilir. Windows uygulamalari, Linux, HP-UX, Solaris, AIX ve Mac OS digerlerinin ortasinda dahil edilebilir. Bu topolojilerin grafiksel pozisyonlarina sekilden genel olarak ulasabiliriz.
Designer, data dönüstürümü ve data güvenligi için deklaratif kurallari tanimlar. Tüm proje gelistirmeleri bu modülde alan götürür.Bu alan database ve uygulama metadata getirtilir ve tanimlanir. Designer modül üretim senaryolari olusturmak için kurallar ve metadata kullanir.Bu metadata yönetimi ve gelistirimi isin özendeki ve önemi ciddi seviyede olan bir modüldür.
Operator, üretimi denetler ve yönetir. Üretim operatoru için design edlimistir ve uygulama logaritmalarini hatali sayimlar ile gösterir.
Topology Manager, altyapi sisteminin fiziksel ve mantiksal mimarisini tanimlar. Serverlar, Semalar ve Araçlar bu modulde genellikle altyapi sistemini veya Proje yöneticileri kayitlidir.
Security Manager, kullanici profilleri ve onlarin özel erisimlerini yönetir. Bu modul genellikle güvenlik yöneticileri tarafindan kullanilir.
2 RUNTIME PARÇALARI
Sekil de designer, Operator, Repository(ambar), Sheduler Agent iliskisel çalismalari anlasilabiliyor. Veri ambari raporlama aninda Sheduler Agent iliskisi Designer ve Operator kavramsallasmasi görülüyor.
Senaryo uygulanmasini Sheduler Agent koordine eder.Sheduler Agent herhangi Java platformunda kurulabilir. Sheduler Agent almak-yüklemek seklinde dönüstürmek ile arada bir perform eder ve tasir. Uygulama ambarindan kodu basit bir sekilde alir, düzeltir ve sonra database server'ina, uygulama alanlarina cevap döner.
Veri Ambarı ile OLTP Sistemler Arasındaki Farklar
Veri Ambari
Veri Ambari, veritabani hareketinden çok sorgulama ve analiz için kullanilmak üzere dizayn edilmis iliskisel bir veritabanidir. Genelde
hareket verisinden elde edilmis tarihi bilgiler içerdigi gibi baska kaynaklardan gelen bilgiler de içerebilir. Veritabani hareketlerinden
kaynaklanan is yüküyle analiz yükünü birbirinden ayirir ve bu sayede degisik kaynaklardan toplanan bilgilerin daha kolay bir sekilde
organize edilmesine olanak saglar.
Veri Ambari ile OLTP Sistemler Arasindaki Farklar
Veri Ambari ve OLTP sistemlerin ihtiyaçlari birbirinden çok farklidir.Tipik bir veri ambari ile OLTP sistemler arasindaki bazi farklar sunlardir:
Veri Ambarı ve Veri Madenciliği Nedir?
VERİ AMBARI NEDİR?
Veri ambarının ne olduğu sorusuna yanıt verebilmek için öncelikle bazı kavramlardan bahsetmek gerekmektedir. Ancak kaba bir tanımla, veri ambarı “işletimsel sistemlerin çıktısı olan verilerin yönetildiği bilgi ortamıdır” denilebilir.