Dosyalama Sistemleri

advertisement
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Dosyalama Sistemleri
Bilgisayarda veri saklama işlemi bilgisayarın ilk bulunduğu yıllardan günümüze kadar
uzanır. Veri saklama işleminde geçmişten günümüze çok farklı yöntemler kullanılmıştır.
Geleneksel dosyalama sistemleri veritabanı yönetim sistemleri öncesinde veri depolamak için
kullanılan sistemlerdir. Zamanla geleneksel dosyalama sistemleri artan veri kapasitesi, veri
işleme hızı ve kullanım alanı gibi birçok ihtiyaca cevap veremez hale gelmiştir. Dolayısıyla
artık yerini veritabanı yönetim sistemleri yazılımlarına bırakmıştır.
Geleneksel dosyalama sistemlerinde, depolanacak veri grupları bağımsız olarak
oluşturulmak zorundadır. Örneğin; kasa, satış, fatura bilgilerinin tutulması gerektiğinde bu
bilgilerin ayrı dosyalarda tutulması gerekir. Bu tür dosyalarda veri, sıralı veya doğrudan
erişim yöntemleriyle kullanılır.
Sıralı Erişimli Dosyalar
Sıralı erişimde bilgilerin tutulduğu dosya içeriği tarama yöntemiyle (sırayla) okunur.
İstenilen kayda gelindiğinde işlem yapılır.
Kullanılan programlama diline ve ihtiyaca bağlı olarak yeni eklenen veriler dosya
sonuna, dosya başına veya imlecin bulunduğu konuma eklenebilir.
Herhangi bir bilgi aranmak istendiğinde dosyanın başından itibaren okumaya
başlanarak aranan kayıt bulunana kadar devam edilir.
Sıralı erişimli dosyaların en büyük dezavantajı istenilen bilgiye anında
ulaşılamamasıdır. Ancak yine de bazı durumlarda sıralı bir şekilde işlem yapmamız
gerekebilir. Öğreğin müşteri bilgileri belirli bir müşteri numarasına göre tutulduğu bir dosya
düşünelim. Müşterilerin tamamının hesap dökümünü almak uzun bir iş olmasının yanında
sıralı bir iştir. Böyle bir işlem için sıralı erişim kullanılabilir çünkü müşteriler müşteri
numarasına göre sıralı bir şekilde depolandığı için arama işlemi yapmadan sırayla döküm
işlemi yapılacaktır.
Doğrudan Erişimli Dosyalar
Bu tür dosyalarda, isminden de anlaşılacağı gibi istenilen bilgiye doğrudan erişim söz
konusudur. Dosya başından itibaren istenilen bilgiye ulaşana kadar tüm bilgilerin okunmasına
gerek yoktur.
Doğrudan erişimli dosyalar tutulduğu her satır bilgi için bir indeks numarasına
sahiptir. Bilgilerin tutulduğu veri dosyasının yanında indeks değerlerinin tutulması için indeks
dosyası oluşturulur. Bir bilgiye ulaşılmak istenildiğinde aranan bilginin karşılık geldiği indeks
değeri bulunarak karşılık geldiği disk adresi bulunur ve bu disk adresi üzerinden aranan
bilgiye erişilir.
1
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Veritabanı Nedir?
Veritabanı kavramı günümüzde hemen hemen tüm alanlarda kullanılmaktadır.
Veritabanı kullanılmayan sistemlerde bilgilerin kalıcı olması mümkün değildir. Veritabanı
istediğiniz bilgileri, istediğiniz türde, istediğiniz sürece saklanmasını sağlamaktadır.
Veritabanı, herhangi bir konuda birbiriyle ilişkili ve düzenli bilgiler topluluğudur.
Günümüzde, basit müşteri bilgilerinin tutulmasından büyük kapsamlı şirket verilerinin
tutulmasına kadar veri depolanması gereken alanların tamamında veritabanları
kullanılmaktadır. Veritabanlarında tutulan verilere erişim geleneksel dosya sistemlerine göre
daha kolay ve hızlı bir şekilde gerçekleşir ve gereksiz veri tekrarlarının oluşmasını engeller.
Günümüzde yaygın olarak kullanılan veritabanları İlişkisel Veritabanı (Relational
Database) yaklaşımında olan veritabanlarıdır. Bu yaklaşım, verileri tablo adı verilen listelerde
saklayarak listeler arasında ilişkiler tanımlar.
Veritabanı kullanışlı olmasına rağmen kullanıcı kaynaklı yapılan hatalar veritabanının
performansını düşürecek, gereksiz veri tekrarlarına sebep olacak ve istenilen verim
alınamayacaktır. Bu nedenle, veritabanı kullanılması gereken yerlerde veritabanı
organizasyonu hatasız bir şekilde yapılmalıdır.
Veritabanı, içerisinde bulunan veriler üzerinde değişiklik yapma, silme, yenisini
ekleme veya verileri istenilen kriterlere göre görüntüleme işlemleri yapılabilir. Aşağıdaki
tabloda ilişkisel veri modeline göre bir firmaya ait veritabanı, tablolar ve sütunlar verilmiştir.
FİRMA
MÜŞTERİ
Müşteri Kodu
Müşteri Adı
Adres
Telefon
Faks
Yetkili Kişi
ÜRÜN
Ürün Kodu
Ürün Adı
Alış Fiyatı
Satış Fiyatı
Birimi
 Veritabanı (Database)
ALIM
Fatura_No
Alış_Tarihi
Müşteri Kodu
Ürün Kodu
Miktar
Tutar
SATIŞ
Fatura_No
Satış_Tarihi
Müşteri Kodu
Ürün Kodu
Miktar
Tutar
 Tablolar (table)
 Sütunlar (alanlar)
Veritabanı Programlama Nerelerde Kullanılır?
Veritabanı programlama ile birçok türden proje geliştirilebilir. İngilizce-Türkçe
Sözlük, e-ticaret sitesi, Kütüphane Takip Otomasyonu, Hastane Otomasyonu, Muhasebe
Programları ve daha birçok otomasyon programı temelde bir veritabanı projesidir.
Günlük hayata veritabanı programlama özellikle çok veri üreten şirketler tarafından
sıklıkla kullanılmaktadır. Kullanım amacına göre veritabanı çözümlerini iki gruba ayırabiliriz;
2
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
OLTP (Online Transactional Processing)
Kullanıcıların sürekli olarak veri üretmeye, veriler üstünde değişiklik yapmaya devam
ettiği sistemlerdir. Telekom şirketindeki veritabanı bu tür kullanıma en güzel örnektir. Her
dakika birileri telefonla konuşur ama telefon şirketinin bu konuşmaların süresini bir yere
kaydedip daha sonra faturaya yansıtması gerekmektedir.
OLAP (Online Analitical Prcessing)
OLAP’ta temel amaç verilerden neticelere varmaktır. Karar destek sistemleri gibi veri
yorumlayan sistemler VTYS’leri bu amaçla kullanırlar.
SQL
SQL (Standart Query Language), ilişkisel veritabanını sorgulamak için kullanılan
yegane dildir. BU dil ANSII ve ISO gibi kuruluşlar tarafından belirlenmiş standartlarla
tanımlıdır. Bu standartların Microsoft SQL Server için gerçeklenmiş haline Transact SQL
denir ve kısaca T-SQL olarak anılır. T-SQL, veri tanımlama, veri işleme ve veri kontrol
olmak üzere 3 temel işleve sahiptir.
Temel Veritabanı Kavramları ve Nesneleri
Veritabanı
Veriler fiziksel hafızada Veri Dosyaları (data files) halinde saklanır. SQL Server
verileri ve veriler hakkındaki logları tutan en az iki dosyadan oluşan yapıları bir veritabanı
olarak ele alır.
Şema (Diagram)
SQL Server’da tanımlı veritabanları içerisinde SQL99 standardına uygun olarak
tabloları, tablolar arasındaki ilişkileri, stored procedure gibi nesneleri görebileceğimiz şemalar
tanımlayabiliriz.
Tablo (Table)
Veritabanı içerisinde tutulacak verileri taşımak için kullanılır. Günlük hayatta
kullandığımız listeler gibi düşünülebilir. Veritabanı üzerinde birden fazla tablo kullanılabilir.
Oluşturulacak tablolar özellikle barındırılacak veri gruplarına göre belirlenir. Oluşturulacak
tablolar arasında çeşitli ilişkiler bulunabilir.
Hazırlanacak projeye başlamadan önce veritabanı tasarımı iyi yapılmalıdır. Sonradan
tablolar ve sütunlar üzerinde yapılacak önemli değişiklikler projenin tamamını etkiler ve
tekrar düzenlemeler gerektirebilir.
3
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Satır ve Sütun (Row, Colomn)
Tabloyu oluşturan temel kavramlardır. Bir tablo satır ve sütunlardan oluşmaktadır.
Sütun, bir tablo içerisinde tutulan her bir veri türüne verilen isimdir. Örneğin öğrenci
bilgilerinin tutulduğu bir tabloda öğrencilerin numarası, adı, soyadı gibi bilgilerin her biri
tablomuzda bir sütun ile gösterilecektir. Bazı kaynaklarda sütun yerine aynı anlama gelen alan
(field) ifadesi de kullanılmaktadır.
Satır ise her bir öğrencinin tüm bilgileridir. Satır ifadesi yerine kayıt (record) ifadesi
de kullanılmaktadır.
Sonuç Kümesi (Result Set)
Bir seçme işlemi gerçekte veritabanında olmayan bir tablo döndürür. Bir sorgunun
neticesinde anlık olarak üretilen tabloya sonuç kümesi (result set) denir.
Veri Tipleri (Data Types)
Oluşturulan veritabanındaki tutulan verilerin hepsi aynı türde değildir. Tutulacak
veriye göre değişiklik gösterir. (örneğin sayısal veri, metinsel veri veya resim için farklı veri
tipleri kullanmak gerekir.) Bir veri tabanı oluşturulurken önce tablolar, sonra sütunlar ve
sütunların veri türlerinin ne olacağı tanımlanır. Ayrıca bir sütunun ne kadar olacağı ve en
fazla kaç karakter alacağı da belirlenmelidir.
NULL
NULL değer, tablo içerisinde bir sütuna hiçbir değer girilmediği durumda oluşur.
Boşluk tuşunun kullanımı NULL değer değildir.
Anahtar (Key)
Tabloda bulunan kayıtları birbirinden ayırt edebilmek için kullanılır. Ayırt etme işlemi
bir sütun üzerinden yapılabileceği gibi birden fazla sütun üzerinden de yapılabilir. Örneğin
öğrencileri birbirinden ayırt etmek için öğrenci numarası kullanılabilir.
Tablolarda anahtar sütun kullanma zorunluluğu yoktur ama kullanılması tavsiye
edilmektedir. Bir tablo içerisinde Birincil Anahtar, Tekil Anahtar ve Yabancı Anahtar olmak
üzere üç farklı anahtar tanımlaması yapılabilir.
Birincil Anahtar (Primary Key)
Tabloda tutulan verilerden benzersiz yani aynı değeri iki kez içermeyecek olan sütun
Birincil anahtar olarak belirlenir.
Birincil Anahtar olan sütun NULL (boş) değerleri veya birbirinin aynı olan değerleri
içeremez.
Birincil Anahtar, kayıt silme ve düzeltme gibi işlemlerde büyük kolaylık sağlar.
Silinmek istenen kaydın birincil anahtarı verildiğinde başka sütunların kontrol edilmesine
gerek yoktur.
4
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Yabancı Anahtar (Foreign Key)
Başka bir tablo ile ilişki kurabilmek için kullanılır. Yabancı Anahtarlar sütunu aynı
tablodaki veya başka bir tablodaki Birincil Anahtar olan bir sütunla ilişkilendirebilir. Birbiri
arasında ilişki bulunan iki tablodan birisinden diğer tablodaki Birincil Anahtara başvuran
sütun Yabancı Anahtar olarak adlandırılır.
Yabancı Anahtar olan sütun başvurduğu Birincil Anahtar olan sütunun değerlerini
içermelidir ve NULL (boş) olmamalıdır. Aynı değeri içeren birden fazla satır bulunabilir.
Yabancı Anahtar bir veya birden fazla sütunun birleşmesinden oluşabilir.
Bir tabloya girilebilecek değerleri sınırlandırmak için de kullanılabilir. Örneğin not
tablosuna, tanımlanmamış bir öğrenci için not girişi bu yöntemle engellenebilir.
Tekil Anahtar (Unique Key)
Birincil anahtarda olduğu gibi Tekil Anahtar olarak tanımlanmış sütunlarda bir değer
yalnız bir kere girilebilir yani benzersizdir. Birincil Anahtar’dan farklı olarak Tekil Anahtar
sütunlar NULL değeri alabilir. Bir tabloda birden fazla Tekil Anahtar kullanılabilir.
İndeks (Index)
Tablodaki belirli sütunları kullanarak tablo içerisindeki verilere hızlı erişim ve
verilerin belirlenen sütuna göre sıralanmasını sağlamaktır. Bir tablo birden fazla indeks
içerebilir.
İlişkilendirme (Joining)
Tek sorgu ile birden fazla tablodan bilgi alma işlemine ilişkilendirme denir. Öğrenci
ve Bölüm bilgilerinin ayrı ayrı tablolarda tutulduğu bir veritabanında öğrenci bilgileri ve
öğrencinin kayıtlı olduğu bölümün adını öğrenmek için ilişki kurulması gerekmektedir.
İlişkilendirme ayrıca veri tutarlılığını sağlamak için de kullanılmaktadır. Örneğin,
bölüm tablosunda olmayan bölüm konunun öğrenci tablosunda kullanılmasının engellenmesi,
öğrenci tablosundan öğrenci silindiğinde diğer tabloda o öğrenciye ait tüm bilgilerin silinmesi
veya değiştirilmesi için kullanılabilir.
Geçerlilik Kuralı (Rule)
Herhangi bir sütun içerisine girilebilecek veriyi sınırlamak için kullanılır. Sistem,
geçerlilik kuralında belirtilen den farklı veri girişine izin vermeyecektir. Örneğin, öğrenci
notları girilen bir tabloda not sütununa 0 ile 100 arası not girişine izin vermek için
kullanılabilir. İstenirse kullanıcının NULL değer girişi de engellenebilir.
Belirlenecek kurallar ile veritabanına yanlış bilgi girişi engellenmiş olur. Kullanıcı
yanlış bilgi girdiğinde hata ile karşılaşır. Böylece veri tutarlılığı sağlanmış olur.
Kısıtlayıcı (Constraint)
Herhangi bir sütuna girilebilecek verileri zorlayıcı kurallara kısıtlayıcı denir. Birincil
Anahtar Kısıtlayıcısı, Tekil Kısıtlayıcı, Default Kısıtlayıcısı, Yabancı Anahtar Kısıtlayıcısı,
Kontrol Kısıtlayıcısı olmak üzere 5 tür zorlayıcı vardır.
5
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Kaydedilmiş Yordamlar (Stored Procedures)
Daha önce değerlendirilmiş ve derlenmiş toplu SQL ifadelerini VTYS uzayında
saklayabiliriz. Bu türden nesnelere Stored Procedures (Kaydedilmiş Yordamlar) denir. T-SQL
ile yazılabildiği gibi C# veya başka bir .NET dili ile de yazılabilir.
İmleçler (Cursor)
Bazı durumda kayıtlara satır satır erişmek gerekebilir. Bu durumda imleçler kullanılır.
Genellikle veritabanı üzerindeki veriler üstünde tamirat yaparken kullanılır.
Tetikleyici (Trigger)
Tetikleyiciler, tablolara kayıt ekleme, değiştirme veya tablodan kayıt silme esnasında
otomatik olarak devreye giren özel bir çeşit Stored Procedure’lerdir.
Kullanıcı Tanımlı Fonksiyonlar (User Defined Functions)
Karmaşık hesaplamaların bir defa fonksiyon olarak tanımlandıktan sonra tekrar tekrar
erişilebilir olmalarını sağlarlar. Stored Procedure’lardan farklı olarak, bir SQL ifadesinin
içerisinde, onun bir parçası olarak kullanılabilirler.
6
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
VTYS (Veritabanı Yönetim Sistemleri)
Veritabanı Yönetim Sistemi (Database Management System – DBMS), kuruluşlar ile
ilgili verileri tutmak ve yönetmek için kurulan yazılımlara denir. Bir VTYS’nin yaptığı
işlerden bazıları şunlardır;
•
Yeni bir veritabanı oluşturmak
•
Var olan veritabanı üzerinde değişiklik yapmak
•
Veritabanının bakımını ve yedeklemesini gerçekleştirmek
•
Verilerin tutulduğu tablolar arasındaki ilişkileri kurmak
•
Kullanıcı yetkilerin belirlemek
Veritabanı Yönetim Sistemleri işletim sistemleri kadar popüler ve olmazsa
olmazlardandır. Farklı isimler altında olsalar da aynı prensiple çalışan birçok VTYS yazılımı
mevcuttur. Bunların bir kısmı lisans gerektirirken bir kısmı da ticari olmamak kaydıyla
ücretsiz olarak kullanılabilir.
Günümüzde kullanılan Veritabanı Sistemlerinin büyük çoğunluğu istemci-sunucu
mimarisini kullanmaktadır. Örneğin bir muhasebeci bünyesinde birden fazla bilgisayar
kullanılıyorsa her bilgisayarda kullanılan verilerin aynı olması gerekir. Verilerin merkezi bir
yerde depolanması gerekir. Bilgilerin depolandığı merkezi bilgisayar sunucu (server) olarak
hizmet vermektedir. Diğer kullanıcı bilgisayarları veritabanından bilgi okumak, veritabanına
bilgi yazmak gibi işlemleri sunucu üzerinden gerçekleştirecektir. Bu bilgisayar istemci (client)
olarak adlandırılır.
VTYS’nin Sağladığı Yararlar;
Veri Tekrarı (data redundancy)
Bir uygulamaya ait veriler tek bir veritabanında birden fazla tablo içerisinde tutulur.
İlişkiler kullanılarak bir tabloya girilen bilginin diğer bir tabloya tamamen girilmesi
engellenebilir. Böylece veri tekrarı engellenmiş olur.
Veri Tutarlılığı (data consistency)
Aynı veri farklı tablolarda bulunduğunda, bir yerdeki veri güncellenirse diğer
tablolardaki verinin de güncellenmesi gerekir. Bu işlem gerçekleşmezse veritabanı içerisinde
veri tutarsızlığı oluşacaktır.
Veri Paylaşımı (data concurrency)
Veritabanı yönetim sistemleri sunucu-istemci mimarisi kullanarak tek bir veritabanını
ağ üzerinde birden fazla istemci için kullanıma açabilir.
7
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
VTYS kullanılmazsa birden fazla kullanıcı veriye aynı anda erişemez. VTYS
kullanıldığında ise aynı anda birden fazla kullanıcı aynı veriye erişebilir. Birden fazla
kullanıcı aynı veri üzerinde değişiklik yapmak isterse yetki önceliğine veya bağlantı
önceliğine göre VTYS birini belirler ve diğerlerini bekletir.
Veri Bütünlüğü (data integrity)
Veritabanlarında bir veri birden fazla tabloda tutulabilir. Veri bütünlüğü, bir verinin
birden fazla parçaya bölündüğünde bir bütün olarak kullanılmasını sağlar. Veri bütünlüğü
özellikle silme işlemlerinde tehdit altında kalmaktadır. Bir veri silindiğinde o verinin ilişkili
olduğu tüm tablolardan o veri silinmelidir.
Veri Güvenliği (data security)
VTYS, veritabanı yönetiminin yanı sıra kullanıcıların veritabanlarına erişimlerini de
düzenleyerek verinin güvenliğini sağlamaktadır. Kullanıcıların verilen yetki ve sorumluluk
dâhilinde verileri görebilmesi, yetkisiz kişilerin girişinin engellemesi, yedekleme ve bakım
işlemlerinin gerçekleştirilmesi VTYS’nin yapabildiği işlerdendir.
Veri Bağımsızlığı (data independence)
Veritabanı fiziksel yapısı kullanıcılardan gizlenir. VTYS, veritabanı yapısını
kullanıcılara göstermeden çeşitli terimlerle veritabanı üzerinde işlem yapılmasını sağlar.
Böylece kullanıcı karmaşık verileri gösterimleri ve algoritmalarla ilgilenmeden isteklerini
kolayca gerçekleştirebilir.
Veritabanı Kullanıcıları
Veritabanı Yöneticisi (DBA - database administrator)
Kullanılacak olan veritabanının tasarımı, oluşturulması ve işletiminden birinci
derecede sorumlu olan ve veritabanı üzerinde en fazla yetkiye sahip olan kullanıcıdır.
Görevlerinden bazıları şunlardır;






Veritabanının tasarımı
Veritabanı Performans Analizi
Erişim Yetkilerini Düzenleme ve Erişimi Sağlama
Yedekleme ve Geri Yükleme
Veri Bütünlüğünü Sağlama
Sistemin Sürekliliğini Sağlama
Uygulama Programcısı
Uygulama programcıları veritabanlarını doğrudan kullanmaz. Temel görevleri,
veritabanlarını kullanabilecek son kullanıcılara yönelik yazılımlar geliştirmektir. Kullanıcılar
veritabanına doğrudan erişmek yerine hazırlanan yazılımlar yardımıyla gerekli giriş çıkış
işlemlerini gerçekleştirirler.
8
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Sorgu Dili Kullanıcıları
Sorgu dili kullanıcıları, mevcut veritabanı sorgulamaları dışında ihtiyaç duyulan
sorgulamaları hazırlamak ve işletmekten sorumludurlar. Bu işlem için SQL dili kullanılır.
Bir sorgu dili kullanıcısı, üzerinde sorgular çalıştıracağı veritabanının yapısını
(tablolar, sütunlar, indeksler vb.) bilmek zorundadır.
Son Kullanıcılar
Son kullanıcılar, uygulama programcıları tarafından geliştirilen ve veritabanı üzerinde
çeşitli işlemler gerçekleştiren yazılımları kullanır. Bu kullanıcıların veritabanı yapısı hakkında
bilgi sahibi olmasına ve üst düzey bilgisayar kullanıcısı olmasına gerek yoktur.
Veritabanı Yönetim Sistemi Yazılımları
Çok kullanılan İlişkisel Veri Tabanı Yönetim Sistemleri’nden bazıları Oracle, SyBase,
MS SQL Server, Informix ve MySQL’dir. Bu VTYS’lerin işlerini daha kolay yürütmesi için
kendi adlarına standart dilden uzaklaşan tarafları vardır. Ancak genel işlemlerde kullanılan dil
tümü için ortaktır ve SQL’dir. MS SQL ve Sybase SQL Server, standartlar çerçevesinde
Transact SQL (T-SQL) denilen komut takımlarını içerir. Oracle ise PL/SQL adı verilen dili
kullanır. PostgreSQL’in yine kendi adı ile anılan bir programlama mantığı vardır. Bu diller
sayesine Stored Procedure, Trigger, Cursor gibi VTYS uzayında yer alan programlanabilir
öğeler tanımlanabilir.
Microsoft SQL Server
SQL ve T-SQL (Transact SQL)
Windows, Unix
Güncel Sürüm : SQL Server 2012 / Nisan 2012
Microsoft SQL Server günümüzde yaygın kullanılan bir Veritabanı Yönetim
Sistemidir. SQL Server’ın asıl görevi kullanıcı programlarına veritabanı desteği sağlayan,
ölçeklenebilir veritabanı sunucu sistemidir. Verinin kullanıldığı her uygulamaya, örneğin,
web tarayıcısına, muhasebe programına vb. veritabanı desteği sağlayabilir. En genel
kullanımıyla, kullanıcı uygulaması SQL Server’a bağlanarak bilgi isteğinde bulunur. Bunun
üzerine SQL Server, isteği işler ve sonuçları kullanıcıya gönderir.
SQL Server aynı zamanda büyük ölçekli bir OLTP (On Line Transaction Processing
System), veri ambarı ve e-ticaret uygulamaları için ciddi çözümler sunan bir veritabanı
platformudur. Ayrıca veri depolama, veri işleme ve analiz işlemlerini yapabilmesi için de
yetenekleri vardır.
Veritabanı geliştirme ve yönetim işleri için Studio adlandırması kullanılmıştır.
Management Studio ve Business Intellegent Development Studio gibi.
9
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Management Studio ile SQL Server Database Engine hizmeti geliştirilebilir ve
yönetilebilir. Analiz hizmetleri yönetilebilir. Tümleştirme hizmetleri paketleri yönetilip
çalıştırılabilir. Rapolama Hizmertleri raporları ve modelleri yönetilebilir.
Business Intellegent Development Studio ile ek olarak analiz hizmetleri kullanılarak
çok-boyutlu yapılar ve böylece ticari istihbarat çözümleri geliştirilebilir.
Bu her iki stüdyo da Microsoft Visual Studio ve Microsoft Office ile bütünleşik
çalışabilmektedir.
SQL Server 2008'in Bileşenleri
(1) Veritabanı Motoru (Database Engine)
Veritabanı motoru; veri depolanması, işlenmesi ve güvenliği için en önemli hizmettir.
Veri kullanan uygulamaları için vertabanı motoru kontrollü erişim ve hızlıveri işlemleri
yapabilmelerini sağlar.
(2) Analiz Hizmetleri
Hızlı veri analizi, OLAP (On Line Analytical Processing) ve veri işleme işlevselliği
için kullanılan temel özelliktir.
Sunucu analiz hizmetleri iki kısımdan oluşmaktadır.
a) Çok Boyutlu Veri : OLAP desteği ile farklı veri kaynaklarındaki verileri içeren çok
boyutlu yapılar tasarlanabilir, oluşturulabilir ve yönetilebilir.
b) Veri Madenciliği : Veri madenciliği modelleri tasarlanabilir, oluşturulabilir ve
görselleştirilebilir. Bu modeller farklı veri kaynaklarından ve farklı algoritmalar kullanılarak
yapılabilir.
(3) Tümleştirme Hizmetleri (Integration Services)
Tümleştirme hizmetleri XML veri dosyaları, metin dosyaları, ilişkisel veri kaynakları
gibi çok çeşitli kaynaklardan veri çekebilir ve çeşitli veri kaynaklarına dönüşüm yapabilir.
Tümleştirme hizmetleri, üst düzey veri bütünlüğü ve veri dönüşüm çözümleri için
kullanılan bir ortamdır. Olaylara e-post ile yanıt vermek, veri ambarlarını güncellemek, veri
temizlemek, işlemek vb. için de kullanılabilir.
(4) Çoğaltma (Replication)
Çoğaltma, verinin veya nesnelerin bir veritabanından diğerine kopyalanması ve
dağıtılması demektir. Veritabanlarının eş zamanlamasından sorumludur.
(5) Raporlama Hizmetleri (Reporting Services)
İlişkisel ve çok boyutlu veri kaynaklarından geniş kapsamlı veri raporlaması sağlayan,
sunucu tabanlı bir raporlama platformudur.
10
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Raporlama hizmetleri ile etkileşimli, tablo ya da serbest form şeklinde istenilen
verileri içeren raporlar oluşturulabilir. Tüm raporlar hem masaüstü hem de Web tabanlı
biçime dönüştürülebilir.
(6) SQL Sunucu Hizmet Acentası (Service Broker)
Farklı veritabanları arasında iletişim sağlayan veritabanı motoru bileşenlerinin
kullanan gelişmiş uygulamalar oluşturan tasarımcıların işini kolaylaştırır. Yoğun iş
görevlerini arka planda veritabanının yapabilmesini sağlar.
SQL Server 2008 Özellikleri
(1) İnternet ile bütünleşiktir.
SQL Server XML desteği sağlamaktadır. SQL Server veritabanı bileşeni FOR XML
cümleciği sayesinde veritabanı sorgulama sonuçlarını XML belgesi şeklinde alınmış olur.
Aynı zamanda XML belgeleri de OPENXML komutu sayesinde SQL Server veritabanlarına
aktarılabilir. Vb.
(2) Ölçeklenebilirlik ve Kullanılabilirlik
SQL Server ölçeklenebilir bir yapıdadır. Yani veritabanı Yönetim Sistemi şirketle
beraber büyüyebilir. Kullanıcıya hiçbir güçlük çıkarmadan diz üstü makinelerde de
çalışabilecek ayarı kendi kendine yapabilir.
SQL Server aynı anda pek çok kullanıcını erişimine izin verir.
(3) Veritabanı büyüklüğü
SQL Server 2008, terabyte’lar büyüklüğündeki veritabanlarını destekliyor.
(4) Veri Yedekleme
Veri yedekleme ve geri yükleme özelliğine sahiptir. Yedekleme işlemi veritabanını
tamamen yedekleme olabileceği gibi son yedekten itibaren değişen kısımları yedeklemek gibi
de olabilir.
(5) Paralel Sorgulama İşlemi
Paralel veritabanı mimarisini destekler. Eğer sunucuda birden fazla işlemci varsa
veritabanı komutları tüm işlemciler üzerinde eş zamanlı olarak işlenecektir.
(6) Çoğaltma
Birden fazla SQL Server aynı veriyi eş zamanlı olarak kullanabilir.
(7) Güvenilirlik
SQL SERVER hareket süreci (transaction processing), çevrim içi yedek alma (on line
backups) ve günlük gönderme (log shipping) gibi güvenlik özelliklerine sahiptir.
11
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Ayrıca SQL Server Windows Clustring’i destekler. Bu özellik, bir küme (cluster)
içinde iki adet sunucu tanımlayabilmemizi sağlar. Herhangi bir kümeleme hatası durumunda
sunucu çalışması diğer sunucu üzerinden devam edecektir.
(8) Görevlerin Otomatikleştirilmesi
İşler belli zamanlarda çalışacak şekilde programlanabilir.
(9) Merkezi Yönetim
Bütün SQL Server’lar SQL Server Management Studio Express konsolu kullanılarak
yönetilebilir.
(10) Farklı Platformları destekler
Sadece Windows değil, UNIX ya da Apple Macintosh çalıştıran üçüncü parti
kullanıcıları da destekler.
(11) SQL Sunucu ve Windows Entegrasyonu
SQL Server tam anlamıyla Windows ile bütünleşebilmektedir. Active Directory,
Güvenlik, Çoklu İşlemci Desteği, Event Viewer, Windows Bileşen Hizmetleri, Sistem
Monitörü, ISS, Windows Clustring (kümeleme)
(12) SQL Server ve Diğer Microsoft Server Uygulamaları Entegrasyonu
SQL Server en iyi şekilde diğer Microsoft Server Uygulamalarıyla
bütünleşebilmektedir. Microsoft Exchange Server, Microsoft Host Integration Server,
Microsoft System Management Server gibi.
12
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
SQL Server’da kullanılan Veri Tipleri
Veri Tipi
Açıklama
bigint
-9.233.372.036.854.775.808 ile 9.233.372.036.854.775.807 arasındaki
tam sayıları tutar. 8 byte yer kaplar.
8000 byte’a kadar sabit uzunlukta binary (ikili) veri alabilir.
0 veya 1 tamsayı değerini alır.
Alfanümerik verileri tutar. n karakter sayısını belirler. Sonuna boşluk
doldurur.
01.01.1753 ile 31.12.9999 arasında tarih ve saat tutabilir.
38 basamak uzunluğuna kadar tam sayı ve virgüllü sayı tutabilir.
-1,7E+308’den 1,79E+308’e kadar olan değerleri alabilir. Kapladığı
alan n değerine göre değişir. ( 1<= n <= 53 )
Resim, sunu, Excel dosyası gibi ikili formatta veri saklamak için
kullanılır. (2.147.483.647 byte)
-2.147.483.648 ile 2.147.483.647 arasındaki tam sayıları tutar. 4 byte
yer kaplar.
-922.337.203.685.477,5808 ile 922.337.203.685.477,5807 arasında
parasal içerikli verileri tutmak için kullanılır. 8 byte yer kaplar.
Alfanümerik verileri tutar. (UNICODE formatında)
Çok uzun alfanümerik verileri saklamak için kullanılır. 2GB’a kadar
veri girilebilir. UNICODE’u destekler.
Decimal ile aynıdır.
Alfanümerik verileri tutar. (UNICODE formatında)
float(24) ile aynı özelliğe sahiptir. (-3,4E+38 ile 3,4E+38 arasında)
Veritabanı üzerinde benzersiz bir numaradır. Bir satır güncellendiğinde
bu değer kendini günceller.
01.01.1900 ile 31.12.2079 arasında olan tarih ve saat bilgisini tutar. 4.
Byte yer kaplar.
-32.768 ile 32.767 arasındaki tam sayıları tutar. 2 byte yer kaplar.
8000 byte kadar veri tipini bilmediğimiz sütunlarda kullanabileceğimiz
veri tipidir.
Çok uzun alfanümerik verileri saklamak için kullanılır. 2GB’a kadar
veri girilebilir.
0 ile 255 arasındaki sayıları tutar. 1 byte yer kaplar.
Her çalışmada benzeri olmayan 16 byte uzunluğunda sayı üretir.
Benzersiz değerler elde etmek için kullanılabilir.
8000 byte’a kadar değişken uzunlukta binary veri alabilir.
Alfanümerik verileri tutar. n karakter sayısını belirler. Sonuna boşluk
doldurmaz.
En fazla 2 GB uzunluğunda XML türünde verileri tutmak için
kullanılır.
binary
bit
char(n)
datetime
decimal(p,s)
float(n)
image
int
money
nchar(n)
ntext
numeric(p,s)
nvarchar(n)
real
rowversion
smalldatetime
smallint
sql_variant
text
tinyint
uniqueidentifier
varbinary
varchar(n)
XML
13
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Oracle
SQL ve PL/SQL (Procedural Language / SQL)
Güncel sürüm : 12.1 / Haziran 2013
Oracle veritabanı yazılımları özellikle kurumsal alanda kullanılan yaygın bir veritabanı
sistemidir. Oracle çok sayıda araçtan oluşur ve uygulama geliştiricilerinin kolay ve esnek
uygulamalar geliştirmesini sağlar. Oracle’de diğer veritabanı yönetim sistemlerinde olduğu
gibi, stored procedure’lar, paketler, trigger’ler gibi bileşenler yer alır.
MySQL
SQL
Unix, Linux, OS/2, Windows
Ücretsiz, Açık Kaynak Kodlu
Güncel sürüm : 5.6.14 / 20 Eylül 2013
Web sunucularında en çok kullanılan veritabanıdır, asp, php gibi birçok web
programlama dili ile kullanılabilir.
MySQL, tuttuğu tablolarla çok kullanıcılı sistemlerde söz konusu olan erişim hakları
sorununu başarılı bir şekilde çözmektedir. MySQL'in 4.0 sürümü ile birlikte "transaction"
desteği, 4.1 sürümüyle birlikte de alt sorgu desteği eklenmiştir.
Ayrıca "veri tutarlılığını (referential integrity)" sağlama işinin programcıya bırakılması
tercih edilmiştir, ancak bu bir dezavantaj olarak görülmeyebilir. Çünkü pek çok veritabanı
programcısı VTYS'lerdeki veri tutarlılığının esnek olmayan, zorlayıcı bir özellik olduğunu
düşünmektedir.
SyBase
SQL ve T-SQL (Transact SQL)
Unix, Windows
SAP ile uyumlu çalışıyor.
PostgreSQL
SQL ve PostgreSQL
Unix, Linux, Windows
Ücretsiz, Açık Kaynak Kodlu
Güncel Sürüm : 9.3.0 / 9 Eylül 2013
14
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Microsoft Access
SQL
Windows
Güncel Sürüm : 2013 (15.0.4420.1017) / 2 Ekim 2012
Microsoft Access Jet veri tabanı motorunu, grafiksel kullanıcı arayüzünü ve yazılım
araçlarını aynı paketin içinde birleştirir.
Küçük ölçekli veri tabanları için kullanılır. Access'de veri tabanında bulunan
nesnelerin birçoğu sihirbazlar yardımıyla kolayca hazırlanabilir. Çoğu zaman hiç tasarım
ortamına girmeden, sadece sihirbazlar kullanılarak veri tabanı dosyaları hazırlanabilir.
Hiç programcılık bilgisi olmayan biri programcılığı öğrenmesine gerek kalmadan
kendi veri tabanı dosyalarını hazırlayabilir. Programcılık bilgisi olanlar Access'de
hazırladıkları veri tabanlarına kod yazarak daha ileri düzey işlemleri yapabilir.
IBM DB/2
SQL, ???
Unix, Linux, Windows
IBM tarafından geliştirilmiş ilişkisel veritabanı yönetim sistemidir.
Güncel Sürüm : DB2 Data Server (10.5) / 23 Nisan 2013
SQLite
SQL, ???
Android, iOS, Windows Phone 8, BlackBerry 10 OS, Symbian OS
Ücretsiz, Açık Kaynak Kodlu
Sunucu yazılımı ve konfigürasyon gereksinimi olmayan (gömülü), işlemsel ve ilişkisel
bir SQL veritabanı motorudur.
Güncel Versiyon : 3.8.0.2 / 3 Eylül 2013
15
Öğr.Gör. Erkut Tekeli
Veritabanı Ders Notları
Nereden Başlamalıyız?
Hazırlayacağınız proje ne olursa olsun veritabanı tasarımı projenin başlangıç
safhasında yapılmalıdır. Tasarımı iyi yapamazsanız ileride gereksiz bilgi yığınlarıyla dolu bir
veritabanıyla karşılaşırsınız. Veritabanı tasarımını ilk önce kâğıt üzerinde yapıp tekrar gözden
geçirdikten sonra uygulanmalıdır.
Veritabanı seçimi size ve projenin büyüklüğüne kalmıştır. Aşağıdaki sorular size
yardımcı olacaktır?
•
Projeniz kaç tablodan oluşacak?
•
Toplam kayıt sayısı en fazla kaç olabilir?
•
Projenizi aynı anda kaç kişi kullanacak?
•
Projeniz için ne kadar alan ayırdınız?
•
Projeniz için ne kadar bütçe ayırdınız?
•
Projenizde güvenlik önemli mi?
•
Projeniz hangi tür platformlarda kullanılacak?
Yaralanılan Kaynaklar
Beylan K., 2009, “Veritabanı-II / SQL 2008 Uygulamalarıyla”, Papatya Yayınevi
Gözüdeli Y., 2008, “Yazılımcılar için SQL Server 2005 ve Veritabanı Programlama”, Seçkin
Yayınevi
Özseven, T., 2011, “Veri Tabanı Yönetim Sistemleri-1”, Murathan Yayınevi
Wikipedia, 2013, www.wikipedia.org
16
Download