GİRİŞ
• Bu dökümanda aşağıdaki konular ele alınacaktır
- Veritabanı tanımı
- SQL nedir?
- Veritabanlarının kullanım alanları
- Relational veritabanlarının açıklanması
- Veritabanı çeşitleri ve açıklamaları
- Hangi veritabanı nerede kullanılmalıdır?
- e-posta listeleri
Veritabanı nedir?
http://www.m-w.com/ adresindeki Merriam-Webster sözlüğünde bir veritabanı :
“a usually large collection of data organized especially for rapid search and retrieval (as by a computer)” olarak tanımlanır. Şuanda çalışmakta olduğum ortramdan çıkardığım tanımıysa “You know DB is most complicated arena , just behind Operating system” olarak değerlendirilmesi gerken en karmaşık ve önemli yapılardandır.
• Kitaplıklar, uygulamalar ve yardımcı programların birleşmesinden oluşur.
• Verilerin saklanması ve yönetilmesi ile ilgili konulardaki ayrıntılardan veritabanı yöneticilerini kurtarır.
• Kayıtların güncellenmesi ve kayıtlar üzerinde araştırma yapılması da mümkündür.
• SQL (Structured Query Language)
• Veritabanı dilidir. Program geliştiriciler, bir veritabanına veri eklerken, silerken, güncellerken veya sorgularken bu dili kullanırlar.
• ANSI ve ISO standardıdır.
• Select, Delete, Update, Where
SQL Nedir?
• SQL (Structured Query Language)
• Veritabanı dilidir. Program geliştiriciler, bir veritabanına veri eklerken, silerken, güncellerken veya sorgularken bu dili kullanırlar.
• ANSI ve ISO standardıdır.
• Select, Delete, Update, Where
Neden Veritabanı?
• Gerçekten veritabanına gereksinmeniz var mı?
• Veritabanları, verilerin saklanması ve yönetilmesi için kullanılmalıdır.
• Küçük bilgiler için metin dosyaları yeterli olabilir.
• Amacınızın iyi belirlenmesi gerekir.
• Veri sadece bir konuyu içeren bir listenin içinde mi?
• Sorun karmaşık mı?
• İstatiksel bir analiz mi yapmak istiyorsunuz?
• Bir yönetim mi yapacaksınız?
• Metinsel veritabanları
• Kullanım kolaylığı
• Bilimsel formüllere gereksinmeniz olacak mı?
• Veriyi paylaşma gereksinmeniz olacak mı?
• Veriyi webde sunacak mısınız?
Relational Database Modeli (RDBMS)
• Tablolardaki kayıtlar matematiksel açıdan tuple olarak tanımlanırlar.
• Bir tuple tanımlanmış bir veri tipi olan bileşenlerden oluşan sıralı grup olarak tanımlanır.
• Tüm tuplelar aynı sayıda ve tipte bileşenlerden oluşur.
• {“ab01”, “Aydın”, “2001”}.
• {“ab02”, “İstanbul”, “2002”}
• Örnekteki her bir tuple da 3 bileşen bulunmaktadır:
• Kaçıncı akademik bilişim olduğu (string)
• Hangi ilde yapıldığı (string)
• Yıl (numeric)
• Relational veritabanlarında bu “kümeye” ya da tabloya eklenen tüm kayıtlar aynı biçemde olmalıdırlar
• {“ab02”, “Aydın”}
• – eksik bileşen
• {“ab02”, “Aydın”, “2002”, “Şubat” }
• – fazla bileşen
• {2002, “ab02”, “Aydın”}
• – yanlış bileşen tipleri (yanlış sırada)
• Ayrıca tuple lardan oluşan bir tabloda aynı veriler bulunmaz.(No duplicate record). Dolayısıyla relational veritabanlarındaki herhangi bir tabloda birbiriyle tamamen aynı iki kayıt (row or record) bulunamaz.
• Bu, çok gereksiz bir sınırlama olarak görünebilir. Örnek vermek gerekirse, aynı kullanıcının aynı malı iki kez sipariş etmesi görünürde engellenmiştir. Bunu da tabloya bir bileşen ekleyerek çözebilirsiniz.
• Bir kayıttaki her bir bileşen “atomik”, yani bir veri olmalıdır; başka bir kayıt ya da diğer bileşenlerin listesi olamaz.
• Tablodaki bileşenlerin veri tipleri de üsttekilerle ve dolayısıyla tablo tanımlarındakilerle aynı olmalıdır. (Veritabanı tarafından desteklenen veri tiplerinden biri olmalıdır.).
• Birbiriyle eş kayıtları ayırmak için kullanılan bileşenlere key denir.
• referential integrity.
• Tablodaki bir kaydı diğer tüm kayıtlardan ayırmak için kullandımız bileşene, primary key adı verilir. Primary key, o kaydı “unique” yapar. Tüm relational veritabanlarında her bir tablo ya da relationda mutlaka primary key olmalıdır.
Veritabanı çeşitleri
• Öncelikle ne yapılacağına karar verilmelidir:
- Bu veritabanı ile neler yapacaksınız? Küçük bir şirket çalışanlarının özel bilgileri mi tutulacak, yoksa büyük bir şirketin binlerce müşterilerinin bilğileri mi?
- Sitenizi günde kaç kişi ziyaret edecek?
- Aynı anda kaç işlem yapılacak?
- Güvenlik ne ölçüde olacak?
Verilerinizin güvenliği ne ölçüde olacak?
Yanlış bir kanı : “Paralı ürünler iyidir, ücretsiz ürünler iyi değildir!”
Linux, bu tezi çürüten, bilgisayar sektöründeki son yıllardaki en iyi konudur.
Bir veritabanının ücretsiz olup olmamasından çok işinizi görüp görmeyeceği önemlidir.
- Microsoft Access (Hala bankalarda kullanılan m.ö’den kalan db)
- MySQL (tam anlamıyla sp yazamadığın nasa’nın nasıl kullandığına hayret ettiğim db)
- IBM DB2 (Yetenekleri hiçbirzaman Oracle kadar olamayacak pahalı db)
- Informix
- Microsoft SQL Server (Her ms ürünü gibi kullanmaya mecbur kalacağım db)
- PostgreSQL (Favorim – Open Source’un en kral db’si)
- Oracle (Hala var olan en yetenekli ve gelişmis db)
- Interbase
MS Access
• Microsoft Office ürünüdür.
• Küçük ölçekli uygulamalar içindir.
• Tablo başına 2 GB a kadar veri depolayabilir.
• Aynı anda 255 bağlantıya izin verebilir.
• Linux/MAC sistemlerinde kullanılamaz.
• “Transaction locking” özelliğine sahiptir, ancak “trigger” ve “stored procedure” özelliklerine sahip değildir.
MySQL
• MySQL Inc.
• Windows, Linux, OS/2,Solaris, AIX vb.
• “trigger” ve “stored procedure” özelliklerine sahiptir, ancak “Transaction locking” özelliği bulunmamaktadır.
• Tablo başına 2 GB veri depolayabilir.
IBM DB2
• IBM
• Access ve MySQL e göre daha performanslı, ancak küçük işletmelere göre daha yüksek maliyete sahiptir.
• *nix ve Windows üzerinde çalışabilir.
• Transaction locking”, “trigger” ve “stored procedure” özelliklerine sahiptir.
Informix
• Illustra
• Ücretli ve güçlü bir veritabanıdır.
• Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitededir.
• 1994’deki Postgres kodundan geliştirilmeye başlanmıştır.
MS SQL Server
• Microsoft
• Dezavantajı: Sadece Windows üzerinde çalışabilir. Yüksek maliyet
• Kullanım kolaylığı, güvenilirliği,işlem gücü
• Maliyeti diğer veritabanlarına göre yüksektir.
• Tablo başına 4 TB veri depolayabilmektedir.
• “Transaction locking”, “trigger” ve “stored procedure” özelliklerine sahiptir.
PostgreSQL
• PostgreSQL Global Development Group
• Linux, Unix, BSD, Windows, AIX vb.
• Ücretsiz, akademik bir veritabanı
• Çok güçlü işlem yapısı
• Veri güvenliği ön planda
• Tablo başına 64 TB veri tutabilme özelliği
• “Transaction locking”, “trigger” ve “stored procedure” özelliklerine sahiptir.
• Anlıyacağınız Oracle’ın ücretsiz haline yakındır, 14tb veri tuttuğunu gözlerimle gördüm :)
Oracle
• Oracle, Inc.
• Dünyanın en güçlü ve güvenilir veritabanı olarak gösterilmektedir.
• Support konusunda sorunu olmayacak, yüzlerce tool’u olan bir efsanedir.
• Çok yüksek maliyetlidir
• Windows, Unix, Linux
• Oracle, sınırsız sayıda tabloları desteklemektedir.
Hangi Veritabanını Seçmeli?
Çok derin ve stratejik bir karar olmakla birlikte çok çok sığ bakarsak olaya;
• Küçük yoğunlukta trafik: MySQL ya da Access
• Daha büyük ve orta ölçekli uygulamalar içinse, MS SQL ya da Linux makineler ve Server'lar üzerinde PostgreSQL kullanılabilir.
• Oracle ise çok yüksek güvenilirlik ve işlem gücü gerektiğinde tercih edilen bir veritabanı sunucusudur.