Öğ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