joomla templates Data Warehouse Türkiye

Sat08202011

Last update07:32:32 PM GMT

PLSQL
Çarşamba, 10 Ağustos 2011 06:41

PLSQL DE BİLİNEN CURSOR TİPLERİ VE KULLANIMI

Yazan&Gönderen Ercan Yazgan

1)Implicit Cursor

 

Kullanımı Oracle Database’ ine ait olan cursor tipleridir. Bu tip cursor’ları kullanıcı(developer) lar aktif olarak kullanamazlar. Open/fetch/Close işlemi database tarafından ihtiyaç halinde gerçekleştirilir. Konuyu biraz detaylandırarak aşağıdaki şekile bir göz atalım :

Salı, 29 Mart 2011 08:50

SQLite

Yazan&Gönderen Yusuf Arslan

SQLite

Hamza henüz yazarlar kısmında yer almadığı için yazısını Yusuf Arslan altında yayınlıyoruz.En kısa zamanda Hamza adına yayınlayacağız

 

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 J

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 " ile SQLite'in başlık dosyası kaynak koda eklenir. sqlite3_open() ile VT dosyası açılır, sqlite3_exec() ile SQL komutu işletilir ve sqlite3_close() ile VT bağlantısı kapatılır. [5]

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

Pazar, 13 Şubat 2011 12:48

Veri Tipleri ve Temel SQL Queryleri

Yazan&Gönderen Ogan Ozdogan


ORACLE VERİ TİPLERİ


Kullandığımız veritabanında, verileri saklayabilmemiz için tablolar yaratmamız gerekmektedir. Bu tablolarında bünyesinde de birtakım veri tipleri mevcuttur. Bu veri tipleri, saklanabilecek verinin bir anlamda kimliğini açığa çıkartmaktadır.

Veri tipleri arasında;

- CHAR(X): Büyüklüğü 1 byte ile 2000 byte arasındadır ve bu aralıktaki karakter değerlerini saklayabilmek için kullanılır. CHAR'ın özelliği, tablo yaratılırken eğer CHAR(5) olarak bir değişken yarattıysak, verilen değelerin tamamı doldurulacak demektir. Eğer 5'ten büyük bir karakter girmeye çalışırsanız hata alırsınız fakat düzeltemenin yoluda modify etmektir.

- VARCHAR2(X): Büyüklüğü 1 byte ile 4000 byte arasındadır. CHAR'dan en büyük farkı ve en büyük kullanılma sebeplerinden biri ise, VARCHAR(200) ile VARCHAR(2)'nin yaratıldıkları zaman aynı yeri kaplıyor olmasıdır. Yani, bir değer girilene kadar veritabanında aynı miktarda yeri işgal ediyorlar. Burada gelebilecek soru; neden varchar değilde varchar2 olabilir. varchar reserved keyworddür ve ileriki bir zamanda kullanılmak üzere saklanmıştır.

Pazar, 13 Şubat 2011 12:45

İlişkisel Veritabanı, Oracle ve SQL -ORACLE KURULUMU

Yazan&Gönderen Ogan Ozdogan


ORACLE KURULUMU

Oracle veritabanının kurulumu ile yazılarımıza başlıyoruz. Yapılacak örnekler Oracle 10g üzerinde olacaktır ve Windows XP (32 bit) kullanılacaktır.

OTN (Oracle Technology Network) adresinden Win32 Database'i indirelim. Java tabanlı olan Oracle Universal Installer (OUI) başlatılmadan önce, bölgesel dil ayarlarımızın İngilizce'de olduğundan emin olalım. Türkçe olarak ayarlı ise kurulum sırasında problem yaşayabilirsiniz.

OUI çalıştırdıktan sonra Oracle kurulum dizinini seçiniz. Veritabanınız buraya kurulacaktır. Kurulum tipleri arasında Enterprise (bütün özellikleri), Standard (belirli bir kısmı kurulmaz) ve Personal (tek kullanıcı) vardır.

Install dedikten sonra ilk önce yazılımı, ardından veritabanını kuracaktır. Yükleme tamamlandıktan sonra Exit diyerek OUI'dan çıkıyoruz.

Pazar, 13 Şubat 2011 12:40

SQL NEDİR ?

Yazan&Gönderen Ogan Ozdogan

SQL NEDİR ?

Merhaba,

RDBMS (Relational DataBase Management Systems), yani "İlişkisel veritabanı yönetim sistemleri"'nin temeli 1980'li yıllarda atılmıştır. IBM tarafından Oracle tarafında geçen ve 2003 yılında vefat eden Dr. Edgar J. Codd bu temelin atılmasında çok büyük rol oynamıştır.

İlişkisel veritabanının mantığı veriye daha hızlı ve sağlam ulaşmaktan geçer, diyebiliriz. Veri modelleri arasındaki bağlar birbirleri ile ilişkilendirildiği zaman mantıklı ve stabil sonuçlar elde edildiği anlaşılmıştır.

Bu andan itibaren SQL (Structured Query Language)'in önemi o yıllardan başlayarak hızlı bir şekilde artmıştır. Devamında gelen PL/SQL (Procedural Language) ile de günlük veritabanı yönetimi işlemlerimiz için de bir dönüm noktası olmuştur.

Aslında bu yazımda SQL'den bahsetmek istiyorum. SQL'i nerelerde, neden, ne zaman ve ne için kullanıyoruz ona bakalım.

Sayfa 1 / 2