2. Database Sistemi Konsepti ve Mimarisi (Database System Concepts and Architecture) 2.1. Data Modelleri, Şemaları ve Örnekleri (Data Models, Schemas and Instances) 2.1.1. Data Modelin Katogorileri (Categories of Data Models) 2.1.2. Şemalar, Örnekler ve Database Durumu (Schemas,Instances and Database State) 2.2. Üç Şemalı Mimari ve Data Bağımsızlığı (Three-Schema Arcitecture and Data Independence) 2.2.1. Üç Şemalı Mimari (The Three-Schema Arhitecture) 2.2.2. Veri Bağımsızlığı (Data Independence) 2.3. Database Dili ve Arayüzü (Database Languages and Interfaces) 2.3.1. DBMS Dili (DBMS Languages) 2.3.2. DBMS Arayüzü (DBMS Interfaces) 2.4. Database Sistem Ortamı (The Database System Environment) 2.4.1. DBMS Bileşen Modülleri (DBMS Component Modules) 2.4.2. Database Sistemi Yararları (Database System Utilities) 2.4.3. Araç, Uygulama Ortamı ve İletişim Olanakları (Tools, Application Enviroments and Communications Facilities) 1 2.5.DBMS için Merkezi İstemci/Sunucu Mimarisi (Centralized and Client/Server Architectures for DBMSs) 2.5.1.Merkezi DBMS Mimarisi (Centralized DBMSs Architecture) 2.5.2. Basit İstemci/Sunucu Mimarisi (Basic Client/Server Architectures) 2.5.3.DBMS için Çift Katmanlı İstemci/Sunucu Mimarisi (Two-Tier Client/Server Architectures for DBMSs) 2.5.4.Web Uygulama için Üç ve n Katmanlı Mimari (Three-Tier and n-Tier Architectures for Web Applications) 2.6. DBMS’in Sınıflandırılması (Classification of Database Management Systems) 2 2.Database Sistemi Konsepti ve Mimarisi (Database System Concepts and Architecture) DBMS package (paket) mimarisi, bir adet sıkıca birbirine entegre edilmiş tekil mimariden, client/server (istemci/sunucu) olarak tanımlayabileceğimiz modern DBMS package mimarisine doğru gelişmiştir. Bu gelişim bilgisayar alanında büyük bir değişime neden olmuş, büyük merkezi bir bilgisayar yerine yüzlercesine ayrılmış ve kişisel bilgisayarlar web server, database server, file server (dosya server), application server (uygulama server) gibi bir çok bilgisayar ile iletişim halinde olmaya başlamışlardır. DBMS mimarisi 2 modüle ayrılır. Client Module; İş yerleri veya kişisel bilgisayarlar bu gurptadır. Uygulama ve arayüzler üzerinden database’e bağlananlardır.Client modül kullanıcı etkileşimini elinde bulundurur ve GUI (grafical user interface) (grafiksel kullanıcı arayüzü) gibi kullanıcı dostu bir arayüz sağlar. Server Module; Veri saklama,ulaşım,arama ve diğer fonksiyonları sağlar. 2.1. Data Modelleri, Şemaları ve Örnekleri (Data Models, Schemas and Instances) Database Approach'ın temel özelliği bir çok data abstracion seviyesi sağlamasıdır.Data abstraction genellikle veri organizasyonu ve depolamasının detaylarının gizlenmesi ve verilerin daha iyi anlaşılması için önemli özelliklerinin vurgulanması anlamına gelir. Database approachın temel özelliklerinden biri farklı kullanıcıların tercih ettikleri ayrıntı düzeyinde veri alabiliyor olmasını sağlayan data abstraction'u desteklemesidir. Bir database 3 yapısını tanımlamak için kullanılan kavramların bir derlemesi olan data modeli bu abstractionu başarmak için gerekli araçları sağlar. Data modeli tarafından sağlanan temel işlemlere ek olarak, bir veritabanı uygulaması dinamik yönünü (dynamic aspect) veya davranışını (behavior) belirlemek için data model içinde konseptler içermesi daha yaygın hale gelmektedir.Bu, database designer’a bir dizi database objeleri üzerinde geçerli user-definition (kullanıcıtanımlama) operation tanımalamasına izin verir. User-definition’un bir örneği STUDENT objesi üzerinde tanımlı COMPUTE_GPA (ortalamayı hesaplayan fonksiyon) 2.1.1. Data Modelin Katogorileri (Categories of Data Models) Kullandıkları database yapısı tanımlamalarının çeşidine göre kategorize edilebilecek birçok data model önerilmiştir. Üst seviye yada kavramsal data modelleri, kullanıcılara data çıkarımı yapmak için iyi bir yol sağlarken, alt seviye veya fiziksel data modelleri, manyetik disklerde nasıl depolama yapıldığını detaylı şekilde açıklayan kavramlar sağlar. Alt seviye data modellerin sağladığı bu kavramlar son kullanıcılar için değil bilgisayar uzmanları içindir. Conceptual data model, entity (varlık), attribute (nitelik), and relationship (ilişki) gibi kavramları kullanır. Entity ; gerçek dünya objesi veya kavramı olarak tanımlanabilir. Örneğin işçi veya öğrenci gibi.(employee or student) Attribute; Bu entitylerin çeşitli özelliklerini tanımlar.Örneğin öğrencinin numarası veya işçi adı gibi. (Student_number or Employee_name) Relationship; Bu entitylerin birbiri arasındaki ilişkiyi tanımlar. Örneğin Student ve Course arasındaki ilişki gibi. 4 Daha sonra detaylı olarak işleyeceğimiz, Entity-Relationship model çok kullanılan üst seviye konceptual data modeldir. 2.1.2. Şemalar, Örnekler ve Database Durumu (Schemas,Instances and Database State) Her data modelde database’in tanımının ve database‘in kendisinin ayrılması önemlidir. Database tanımına database schema (database şeması) denir.Database in dizayn aşamasında tanımlanır ve fazla değiştirilmesi beklenmez. Çoğu data modelde schemaların gösterimi için belirli kurallar vardır; diagramlar gibi.Buna schema diagram denir. Schema diagram her bir recordun yapısını verileri olmaksızın gösterir. Her bir objeye schema construct (yapı) denir. Student, course gibi. Aşağıdaki örnekte schema diagramın data typeları ,relationları veya constraintleri (kısıtları) belirtilmemiş. Gerçek data, database içinde sürekli değişkendir.Update veya insertler ile. Figure 1.2 deki örnekte database in o andaki bir kısmından bahsetmiştik. Bu anlık gösterimlere database state (durum) veya snapshot denir. 5 2.2. Üç Şemalı Mimari ve Data Bağımsızlığı (Three-Schema Arcitecture and Data Independence) Database Approach’ın 4 önemli özelliğinden 3’ü bölüm 1.3 de sıralanmıştı.Biri , database tanımlaması (schema) için katalog kullanılması , diğeri data abstraction (program-data independence and programoperation independence), bir diğeri ise çoklu kullanıcıya imkan sağlayan viewlerdi. Bu bölümde bu özellikleri görselleştirmeyi ve gerçekleştirmeyi hedefleyen three-schema mimarisi denilen database sisteminin mimarisini göreceğiz. 2.2.1. Üç Şemalı Mimari (The Three-Schema Arhitecture) Üç şemalı mimarinin amacı, kullanıcı uygulaması ile fiziksel database’in ayrılmasıdır. Internal level; internal schema (iç şema)içerir.Bu şema database’in fiziksel depolama yapısını belirtir.Fiziksel data modelini kullanır ve data depolanması ile ilgili tüm detayları ve database’e erişim için tüm yolları açıklar. 6 Conceptual level; conceptual schema içerir. Tüm kullanıcılar için database’i tanımalar.Fiziksel depolama detaylarını gizler, yalnızca entity, data type, relationship, user operation ve kısıtlamalara yoğunlaşır. External or view level (dış veya görünüş); external schema veya user view içerir. Belirli bir kullanıcı grubuna database’in grubun ilgilendiği kısmını gösterir, kalan kısmını gizler. Bu yüzden birden fazla olabilir. DBMS external schema içinde verilen bir requesti (istek) conceptual schema şekline dönüştürmeli , sonra da database üzerine işlenmesi için internal schemaya dönüştürmelidir.Eğer bu istek veri elde edilecek bir sorgu ise databaseden çıkarılan veriler, kullanıcının external view ile eşleştirmek için yeniden biçimlendirilmesi gerekiyor. Bu istek ve sonuçlar arasındaki dönüştürme işlemine mapping denir. 2.2.2. Veri Bağımsızlığı (Data Independence) 3 şemalı mimari data independence ‘ı daha iyi anlamak için kullanabiliriz. Data independence, bir üst seviye schemada değişiklik yapmaya gerek olmadan o şemada değiştirme yapabilme kabiliyeti olarak tanımlanabilir. 7 Logical data independence; External schemayı veya uygulama programını değiştirme gereği olmaksızın conceptual schemayı değiştirme kabiliyetidir. Database’i genişletmek (örneğin record type yada data item ekleyerek) için , kısıtları değiştirmek için veya database’i azaltmak için conceptual schemayı değiştirmemiz gerekebilir.Fakat bu değişiklerden external schema etkilenmemelidir. Örneğin 1.5(a) daki external schema Grade_report tablosundaki değişimden etkilenmemelidir. Sadece DBMS içinde view tanımlama ve mappingte değişime gerek duyulur. 8 Physical data independence; conceptual şemayı değiştirmeden internal schemayı değiştirme kabiliyetidir. Update veya sorgu cevap hızını geliştirmek için fiziksel tablolar tekrar organize edildiğinden (örneğin ek ulaşım yapısı yaratılması) internal schemayı değiştirmek gerekebilir . Örneğin; DBMS, yeni ulaşım yolu kullanarak sorguyu çok daha verimli çalıştırabilecek olmasına rağmen, sömestr ve yıl bazında section recordlarının aktarım hızının iyileştirilmesi için ulaşım yolu sunulması , 2008 bahar döneminde açılan tüm sectionların listesi gibi bir sorgunun değiştirilmesini gerektirmemelidir. Genellikle fiziksel veri bağımsızlığı,verinin disk üzerindeki kesin yerini, depolanmış verinin kodlamanın,yerleştirmenin, sıkıştırmanın, bölme ve birleştirmenin detayları gibi fiziksel detayların kullanıcıdan gizlendiği çoğu database ve tablo yapısınında bulunmaktadır. Uygulama bu göz ardı edilen detayları sürdürür. Öte yandan mantıksal veri bağımsızlığının elde edilmesi daha zordur. Çünkü uygulamaya dokunmaksızın çok gerekli yapısal ve kısıtlama değişikliklerine izin verir . Schema bir seviyede değiştirildiğinde, bir yüksek seviyedeki schema değişmeden kalır.Sadece iki seviye arasındaki mapping değiştirilir.Böylece yüksek seviyedeki schemaya atıfta bulunan uygulama programı değiştirilmek zorunda kalmaz. 9 2.3. Database Dili ve Arayüzü (Database Languages and Interfaces) Daha önce DBMSin çok çeşitli kullanıcılara destek verdiğini tartışmıştık. Bunu sağlamak için her kullanıcı için uygun dil ve arayüz geliştirilir. 2.3.1. DBMS Dili (DBMS Languages) Database dizayni tamamlandığında ve database'e uygulamak için DBMS seçildikten sonra, ilk adım conceptual ve internal schemanın ve schemalar arasındaki her bir mapping yapısının belirlenmesidir. Seviyeleri arasında kesin ayrım oluşturulmamış DBMSlerde data definition language –DDL (veri tanımlama dili) denilen bir dil kullanılır. DBA ve Database designer’lar tarafından bu iki schemayı oluşturmak için kullanılır. DBMS, şema yapılarının tanımlarını belirleyen ve DBMS kataloğunda şema tanımlarını depolayan fonksiyonlara sahip bir DDL compiler ‘i(derleyicisi) olacaktır. Seviyeleri arasında kesin ayrım oluşturulmuş DBMSlerde ise DDL sadece conceptual schemayı tanımlamak için kullanılır. İnternal schemayı tanımlamak için storage definition language-SDL (depolama tanımlama dili) kullanılır.İki şema arasındaki mapping bu iki dilden biri ile tanımlanabilir. Bugün birçok ilişkisel DBMSde, SDL rolünü gerçekleştiren özel bir dil yoktur. Bunun yerine internal schema, fonksiyonların,parametrelerin ve depo ilgili özelliklerin bir kombinasyonu ile tanımlanmıştır.Bunlar DBA’e indeksleme seçeneklerinde kontrol ve verilerin depolanması için mapping imkanı sağlar.Üç şemalı mimari için üç dile ihtiyaç duyar.View definition language –VDL (View tanımlama dili) kullanıcı viewleri ve conceptual schema için kullanılacak mappingleri sağlar. Fakat bir çok DBMSte DDL, conceptual ve external schemaların 10 tanımlanması için kullanılır. İlişkisel DBMSde SQL, user ve uygulama viewlerini tanımlayan VDL rolünü gerçekleştirir. Veri alma, ekleme,silme değiştirme işlemlerini içeren manipulation işlemini gerçekleştiren dile data manipulation language-DML (veri işleme dili) denir. Günümüz DBMSlerde, bu diller ayrı diller olarak değerlendirilmezler.Daha doğrusu kapsamlı birleştirilmiş bir dil, conceptual schema ve view tanımlaması ve veri manipulation için kullanılır. Bunun tipik bir örneği, SQL ilişkisel veritabanı dilidir. DDL, VDL ve DML yapılarını içerisinde barındırır. SDL, ilk sürümlerinde SQLin bir parçasıydı fakat sonra sadece conceptual ve externel seviyede kullanılmak üzere bu dilden çıkarıldı. 2.3.2. DBMS Arayüzü (DBMS Interfaces) Web İstemcileri veya Tarama için Menü Tabanlı Arayüzler (Menu-Based Interfaces for Web Clients or Browsing); Bu arayüzler kullanıcıya seçenek listeleri (menüler) sunar. Menü belirli komutların ve sorgu dilinin syntax(Yazım dili)ının ezberlenme zorunluluğunu ortadan kaldırır. Daha doğrusu sorgu, menüden seçenekleri seçerek adım adım oluşturulmuştur. Pull-down (aşağı doğru açılan checklist) menüler Web tabanlı kullanıcı arayüzleri için çok popüler bir tekniktir. Forms-Based Interfaces (Form Tabanlı Arayüzler); Kullanıcıya bir çok form sunar. Kullanıcılar tüm alanları yeni verilerle doldurabilir yada belirli verileri doldurup kalan veriler için DBMS eşleştirme işlemi yapabilir. Formlar genelde acemi kullanıcılar için önceden kaydedilmiş işlemler ile tasarlanmış ve programlanmışlardır. Birçok DBMS programmerlara yardımcı olacak şekilde tanımlanmış özel dillere sahiptirler. SQL Formlar ilişkisel veritabanı şeması ile birlikte tasarlanmış bir formu kullanarak sorguları belirten form tabanlı bir dildir. Oracle Forms, formları kullanarak tasarım yapmak ve uygulamalar oluşturmak için geniş bir özellikler kümesi 11 sağlayan Oracle ürün paketinin bir bileşenidir. Graphical User Interfaces (Grafiksel Kullanıcı Arayüzü); Genellikle kullanıcıya diagramsal bir formda şema gösterir. Kullanıcı daha sonra diyagramı işleyerek bir sorgu tanımlayabilir. GUI çoğu uygulamada form ve menüleri beraber kullanır. Natural Language Interfaces (Doğal Dil Arayüzü); Bu arayüz ingilizce ve bazı belli başlı dillerde yazılmış istekleri kabul etmektedir. Genellikle, conceptual schemaya benzeyen ve önemli kelimeler sözlüğü içeren kendi şemasına sahiptir. Bu kelime yorumlama doğru olursa, arayüz bu isteğe karşılık yüksek seviye sorgu üretir ve işlenmesi için DBMSe gönderir. Aksi takdirde, bu işlem kullanıcının isteği yeniden tanımlamasıyla ile başlar. Doğal dil arayüzünün kabiliyeti hızlı gelişmiş değil. Bugün, ingilizce ve ispanyolcadaki doğal dil dizisini kabul eden localde (yerelde) veya web sayfalarında (Google gibi) arama motorlarını görürüz. Kelimeler üzerinde önceden tanımlanmış indeksler ve sıralanan fonksiyonlar kullanılır. Anahtar kelime tabanlı sorgulama denilen araştırma alanı ilişkisel veritabanları için ortaya çıkmış olmasına rağmen,bu tür "Free form" metinsel sorgu arayüzleri, yapılandırılmış ilişkisel veya eski modeli veritabanlarında henüz yaygın değildir. Speech Input and Output (Konuşma giriş ve çıkışı); Bir soruya cevap olarak veya bir isteğin sonucu olarak yapılan sınırlı konuşma kullanımı yaygın hale gelmeye başlamıştır.Telefon rehberi, uçuş kalkış veya kredi kartı bilgileri için sunulan sınırlı sözcüklü uygulamalar input veya output olarak kullanılabilir.Konuşma inputu için önceden tanımlanmış kelimeler ile bir kütüphane oluşturulur ve verilen parametreler sorguda kullanılır.Output için de benzer bir dönüşüm (yazı veya sayıların konuşmaya) gerçekleştirilir. 12 Interfaces for Parametric Users; Banka memuru gibi parametric kullanıcılar, sık sık ve art arda operasyonlar yapmak zorundadırlar.Bu yüzden onlara yönelik olarak yaptıkları işler kısaltılmış komutlar dizisi haline getirilir. Interfaces for the DBA ; Çoğu veritabanı sistemleri sadece DBA personeli tarafından kullanılabilecek ayrıcalıklı komutlar içerir.Bunlar, hesap oluşturma, sistem parametrelerini ayarlama, yetkilendirme, şema değişikliği ve depolama yapısı yeniden düzenlenmesidir. 2.4. Database Sistem Ortamı (The Database System Environment) DBMS karmaşık bir yazılım sistemidir. Bu bölümde, DBMSi oluşturan ve DBMS ile etkileşim halinde olan yazılım bileşenlerinin çeşitlerini tartışacağız. 2.4.1. DBMS Bileşen Modülleri (DBMS Component Modules) Figür 2.3 de basitleştirilmiş bir formda DBMS bileşenlerini göreceğiz. Şekil iki bölüme ayrılmıştır. Şeklin üst kısmı, veritabanı ortamının ve arayüzlerinin çeşitli kullanıcılarına değinmektedir. Alt kısım, işlem ve veri depolanması için DBMSin sorumluluklarının iç yapısını gösterir. Canned Transaction 13 Veritabanı ve DBMS katalog genellikle diskte depolanır. Diske erişim, diskten okuma ve diske yazma programı olan işletim sistemi (operating system-OS) tarafından kontrol edilir. Çoğu DBMS, disk okuma/yazma işlemi için kendi buffer (tampon-geçici hafıza) yönetim modülüne sahiptir, çünkü performans üzerinde önemli etkisi vardır. Maliyetli bir işlem olduğundan disk okuma / yazmasının azaltılması önemli ölçüde performansını artırır. DBMSin yüksek seviye depolanmış veri yönetimi (stored data manager) modülü, DBMSde depolanmış bir verinin veritabanı veya kataloğun bir parçası olup olmadığını DBMS erişimini kontrol ederek anlar. Figür 2.3’ün üst kısmını ele alalım. Bu kısım, DBAler, sorguları formüle etmek için interaktif arayüzler ile çalışan casual (geçici) kullanıcılar,uygulama programcılar ve önceden tanımlanmış işlemlere veri girişi sağlayan parametric kullanıcılar için oluşturulmuş arayüzü gösterir. DDL derleyici, şema tanımlama, özelleştirme ve DBMS kataloğundaki şema tanımlarının (meta-data) depolama işlemlerini yürütür. Katalog, tablonun ismi ve boyutu, sütunların data type ve isimleri, her bir tablonun depolama detayları, şemalar arası mapping bilgileri ve kısıtlar gibi bilgileri içerir. Geçici kullanıcılar, interaktif sorgu arayüzü olarak isimlendirilen arayüz ile etkileşim halindedir. Her interaktif sorgu ile oluşturulan menü tabanli ve form tabanli etkileşimi açıkça gösteremeyiz. Bu sorguların, syntax bakımından doğruluğu, tablolaların ve sütunların ismi onaylanmıştır, daha sonra sorgu derleyici (query compiler) tarafından internal form içinde derlenir. Bu internal sorgu üzerine sorgu optimizasyonu (query optimizer ) uygulanır. Sorgu optimizasyonunu; yeniden düzenleme, fazlalıkların elenmesi, çalıştırılması sırasında doğru 14 algoritmanın ve indexlemenin kullanılması oluşturur. Bu optimizasyon, depolanmış veri ve çalıştırılabilir kod gibi konularda istatistiksel ve diğer fiziki bilgiler için sistem kataloguna başvurur. Uygulama geliştiricileri, programın ilk önce ön derleyiciye gönderildiği (precompiler) JAVA,C veya C++ gibi ana programlama dillerinde program yazarlar. Precompiler bu dillerde yazılan programlardan DML komutları ayıklar.Bu komutlar object koduna derlenmesi için DML derleyiciye gönderilir. Programın geri kalan kısmı bu programlama dili derleyicisine gönderilir. DML komutları için oluşturulan object kodu ve programın geri kalanı bağlantılıdır ve canned transaction (kaydedilmiş, tamamlanmış işlem) oluştururlar. Bu transaction'ın codu runtime database processor (esas anlık database işlemcisi diyebiliriz.) için çağrı içerir. Bu canned transactionlar, transactiona parametre veren parametric kullanıcılar tarafından tekrar tekrar execute edilirler (çalıştırılırlar). Her bir execution ayrı bir transaction olarak değerlendirilir.Örneğin bankadan para çekme işlemi için hesap numarası ve para miktarı bir parametredir. Figür 2.3ün alt kısmında, runtime database processor öncelikli komutları, çalıştırılabilir sorgu planlarını ve runtime parametreli canned transactionları çalıştırır.Bu sistem, sırayla disk ve ana bellek arasında düşük seviyeli giriş / çıkış (okuma / yazma) işlemlerini yürütmek için temel işletim sistemi hizmetlerini kullanan stored data manager ve sistem kataloğu ile birlikte çalışır.Ayrıca, ana bellekteki bufferların yönetimi gibi veri transferinin diğer yönlerini de ele alır. Diğerleri, buffer yönetimi için OS (operating system)'a bağlı iken, bazı DBMSler kendi buffer yönetim modüllerine sahiptir. Bu figürde, ayrı ayrı modüller olarak eş zamanlı kontrol ve backup (yedekleme) ve recovery (kurtarma) sistemleri gösterilir.Bunlar, transaction yönetimi amacıyla çalışan runtime database processore entegre edilmiştir. 15 2.4.2. Database Sistemi Hizmetleri (Database System Utilities) Açıklanan yazılım modüllerinin yanında, çoğu DBMS DBA' e database yönetiminde yardımcı birçok farklı hizmete sahiptir. Yaygın hizmetler aşağıda belirtilmiştir. Loading (Yükleme); Loading hizmeti mevcut veri dosyalarının topluca database'e yüklenmesidir. Genellikle, veri dosyasının kaynak formatı ile istenilen database dosya yapısı bu hizmet için özelleştirilmiştir.Sonrasında otomatik olarak tekrar formatlanır ve database 'e depolanır. DBMS'in yayılması ile bir DBMSden diğerine yapılan transferler yaygın hale geldi.Bazı vendorlar (satıcı) verilen kaynak dosyası ve hedef database tanımlarına (internal şema) uygun loading programları içeren ürünler sunar.Bu tür araçlara conversion (dönüştürme) araçları denir. Backup(Yedekleme); Yedekleme hizmeti, tüm database'i bir banta veya başka bir depolama alanına kopyasını oluşturur. Yedek kopya herhangi bir felaket anında (deprem,sel, disk arızası veya veri kaybı) kullanılarak geri yükleme yapılr. Incremental backup (artımlı yedekleme) sadece değişiklik olduğu durumlarda kullanılır.Çünkü önceki backup kaydedilmiştir. Bu yedekleme çok daha komplekstir fakat depolama alanını minimumda tutar. Database storage reorganization (Depolamanın yeniden yapılandırılması); Bu hizmet, dosya kümeleri üzerinde yeniden yapılanma ve performansı arttırmak için yeni erişim yolları oluşturulmasına imkan sağlar. Performans izleme (Performansın izlenmesi); Bu hizmet database performansını izler ve DBA için istatistik sağlar.DBA dosyaların tekrar organize edilmesi gerekip gerekmediği veya indesklemenin eklenip silinmesi gerektiği gibi kararları vermek için istatistikleri kullanır. 16 2.4.3. Araçlar, Uygulama Ortamları ve İletişim Olanakları (Tools, Application Enviroments and Communications Facilities) Diğer araçlar database tasarımcıları, kullanıcıları ve DBMS için kullanılabilirdir. Tasarım aşamasında kullanılan araçların haricinde büyük kuruluşlarda oldukça işe yarar bir araç genişletilmiş veri sözlüğü sistemidir. Şema ve kısıtlar hakkında olan kaydedilmiş katalog bilgilerine ek olarak, veri sözlüğü de tasarım kararları, kullanım kuraları, program tanımları ve kullanıcı bilgileri gibi diğer bilgileri depolar. Böyle sistemler bilgi deposu olarak adlandırılabilir.Gerektiğinde bu bilgiler kullanıcı veya DBA tarafından doğrudan ulaşılabilir. Uygulama geliştirme ortamları, database uygulaması geliştirmek için bir ortam ve veritabanı tasarımı, GUI geliştirme, sorgulama ve güncelleme ve uygulama programı geliştirme de dahil olmak üzere çok yönlü olanaklar sağlar. DBMS,database sisteminden uzak kullanıcılara erişim izni veren iletişim yazılımı arayüzüne gerek duyar. Bunlar, internet yönlendirileri,telefon hatları, uzun menzilli ağlar,yerel ağlar veya uydu iletişim cihazları gibi veri iletişim donanımları sayesinde database'e bağlanır. 17 2.5. DBMS için Merkezi İstemci/Sunucu Mimarisi (Centralized and Client/Server Architectures for DBMSs) 2.5.1.Merkezi DBMS Mimarisi (Centralized DBMSs Architecture) DBMS mimarileri, genel bilgisayar sistemleri mimarilerine benzer eğilimler göstermiştir. Geçmişteki mimari, DBMS işlemleri yanısıra uygulama programı, kullanıcı arayüz programı ve tüm ana işlemleri tek bir ana bilgisayardan yürütmeye çalışırdı.Bunun nedeni, çoğu kullanıcının işlem gücü ve ekran yeteneği olmayan bilgisayar terminali gibi sistemlere erişim sağlamasıydı.Bu nedenle, tüm işlem bilgisayar sistemi üzerinde uzaktan gerçekleştirildi ve sadece ekran bilgileri ve kontroller, iletişim ağlarının çeşitleri aracılığıyla ana bilgisayarlara bağlı olan ekran terminallerine bilgisayardan gönderildi. Figür 2.4 merkezi mimaride fiziksel bileşenleri göstermektedir. Kademeli olarak, DBMS sistemleri,client/server DBMS mimarisine izin veren kullanıcı tarafında mevcut işlem gücünü kullanmaya başladı. 18 2.5.2. Basit İstemci/Sunucu Mimarisi (Basic Client/Server Architectures) İlk olarak, genel hatlarıyla client/server mimarisini tartışacağız, sonrada bunun DBMS'e nasıl uygulandığını göreceğiz. Client/server mimarisi, birçok bilgisayar, iş istasyonları, yazıcılar, dosya, database, web, e-mail sunucuları gibi network ağı üzerinden birbirine bağlı olan bilgi işlem ortamının yönetilebilmesi için yaratılmıştır. Bu düşünce, belirli işlevleri olan özelleştirilmiş sunucuları tanımlar.Örneğin, birçok bilgisayar veya istemci olarak küçük bir iş istasyonu dosya sunucusuna bağlamak mümkündür. Başka bir makine çeşitli yazıcılara bağlanarak bir yazdırma sunucusu olarak belirlenmiş olabilir; istemciler tarafından tüm baskı talepleri bu makineye iletilir. Web sunucuları ya da e-posta sunucuları da özel sunucu kategorisine girer. Özelleştirilmiş sunucular tarafından sağlanan kaynaklar, birçok istemci makineler tarafından ulaşılabilirdir. İstemci makineler, uygun arayüzler ile kullanıcıya bu serverları kullanma imkanının yanı sıra yerel uygulamaları çalıştırmak için yerel işlem gücü sağlar. Figür 2.5 client/server mimarisini mantıksal seviyede gösterirken, Figür 2.6 ise fiziksel mimarisini gösteren basitleştirilmiş bir diyagramdır. 19 Client/ server mimarisi kavramı, birçok PC ve iş istasyonuna ek olarak anabilgisayarın birbirine LAN sayesinde bağlanmasıyla oluşan ana bir çerçeve sunar. Bu çerçevede istemci, kullanıcı arayüzü ve yerel işlem kabiliyetine sahip tipik bir kullanıcı makinesidir. Bir istemci, veritabanı erişimi yani makinede yok gibi ek işlevsellikerişmesi gerektiğinde, ihtiyaç duyulan işlevselliği sağlayan bir sunucuya bağlanır. İstemci ek işlevlere erişmesi gerektiğinde (mevcut makinede olmayan database erişimi örneğin) ihtiyaç duyulan işlevselliği sağlayan bir sunucuya bağlanır. Sunucu ise hem istemciye dosya, yazıcı veya database erişim servisi yapan bir yazılım hem de donanım içeren bir sistemdir. Genel olarak, bazı makineler yalnızca istemci yazılımı, diğerleri sadece sunucu yazılımı yüklenir ve Şekil 2.6 de gösterildiği gibi bazıları istemci ve sunucu yazılımını içerebilir.Ancak, istemci ve sunucu yazılım genellikle ayrı makinelerde çalıştırmak daha yaygındır.Temel DBMS mimarilerinin iki ana türü bu temel client/server çerçeve üzerinde oluşturulur: 2 ve 3 katmanlı mimari. 2.5.3.DBMS için Çift Sıralı İstemci/Sunucu Mimarisi (Two-Tier Client/Server Architectures for DBMSs) Relational database management systems (RDBMS) (İlişkisel veritabanı yönetim sistemi)inde, çoğu merkezileştirilmiş olarak başlamış ve kulanıcı tarafına geçen ilk sistem bileşenleri kullanıcı arayüzü ve uygulama programı idi. SQL, RDBMS için standart bir dil sağladığından, istemci ve sunucu arasında mantıksal bir ayrım oluşturdu.Bu nedenle, SQL işleme ile ilgili sorgu ve işlemler sunucu tarafında kalmıştır. Böyle bir mimaride bu iki işlemi sağladığından, sunucu sorgu sunucusu veya işlem sunucusu olarak adlandırılır. RDBMSde sıklıkla sunucu SQL sunucusu (SQL Server)olarak adlandırılır. 20 Kullanıcı arayüzü programları ve uygulama programları istemci tarafında çalışabilir. DBMS erişimi gerektiğinde, program (sunucu tarafında) DBMS ile bağlantı kurar; bağlantı oluşturulduktan sonra, istemci programı DBMS ile iletişim kurabilir.Standart olarak adlandırılan Open Database Connectivity (Açık Veritabanı Bağlantısı) (ODBC), hem istemci hem sunucu yazılımı yüklü olduğu zaman, istemci tarafında DBMSi çağırmasına izin veren bir uygulama programlama arabirimi (API) sağlar. Çoğu DBMS vendorları kendi sistemleri için ODBC sürücüsü sağlar. Bir istemci program birçok RDBMS'e bağlanabilir ve ODBC API kullanarak sorgu ve işlem istekleri gönderebilir.Herhangi bir sorgu sonuçları, işleyebilen ve istenildiğinde sonuçları gösterebilen istemci programa geri gönderilir.Java programlama dili için bir ilgili standart da tanımlanmıştır. JDBC denilen Java programlama dili için bir ilgili standart da tanımlanmıştır.Bu Java istemci programları standart bir arayüz üzerinden bir veya daha fazla DBMSs erişmesine olanak tanır. DBMS yazılım modülleri daha entegre bir şekilde istemci ve sunucu arasında bölünen bazı object-oriented (nesne yönelimli) DBMSler tarafından, iki katmanlı istemci/sunucu mimarisine farklı bir yaklaşım sunulmuştur.Örneğin sunucu seviyesi, disk sayfalarında veri depolaması, yerel eş zamanlılık kontrolü, buffering ve disk sayfalarının önbelleğe alınması ve diğer benzeri fonksiyonlardan sorumlu DBMS yazılım parçası içerebilir. Bu arada, istemci düzeyi kullanıcı arayüzü işleyebilir;veri sözlüğü fonksiyonları; programlama dili derleyicileri ile DBMS etkileşimleri; küresel sorgu optimizasyonu, eşzamanlılık kontrolü, ve birden çok sunucu arasında kurtarma; bufferlardaki verilerden karmaşık nesnelerin yapılanması;ve benzeri fonksiyonlar.Bu yaklaşımda, istemci / sunucu etkileşimi daha sıkı olarak bağlıdır ve kullanıcılar / programcılar yerine DBMS modülleri tarafından yapılır. İşlevselliğin tam olarak bölümü sistemden sisteme değişiklik gösterebilir. Böyle bir istemci/sunucu 21 mimarisinde, sunucu veri sunucusu olarak adlandırılır, çünkü istemciye disk sayfalarındaki verileri sağlar.Bu veriler daha sonra istemci-DBMS yazılım tarafından istemci programları için nesneleri içine yapılandırılabilir. 2.5.4.Web Uygulama için Üç ve n Katmanlı Mimari (Three-Tier and n-Tier Architectures for Web Applications) Webin ortaya çıkması, istemcilerin ve sunucuların rollerini değiştirdi; Üç katmanlı mimari. Birçok Web uygulamaları üç katmanlı mimari denilen ve istemci ve sunucu arasına ara katman eklenmiş bir mimaride kullanılır. Figür 2.7a da gösterilmiştir. Bu ara katman veya orta katman uygulamaya bağlı olarak, uygulama sunucusu veya Web sunucusu denir.Bu sunucu uygulama programlarını çalıştırarak ve veritabanı sunucusundan verilere erişmek için kullanılan iş kurallarını (prosedürleri veya kısıtlamaları) depolayarak bir aracı rol oynar.Ayrıca veritabanı sunucusuna bir istek iletmeden önce bir müşterinin kimlik bilgilerini kontrol ederek veritabanı güvenliği artırabilirsiniz. İstemciler, GUI arayüzü ve bazı ek uygulamaya özgü iş kurallarını içermektedir. Ara sunucu, istemciden gelen istekleri kabul eder, istekleri işler ve veritabanına sorgular ve komutlar gönderir.Daha sonra, müşterilerine veritabanı sunucusundan (kısmen) işlenmiş verilerinin geçirilmesi için bir kanal görevi görür. Böylece, kullanıcı arayüz, uygulama kuralları ve veri erişimi 3 katman olarak hareket eder. Figür 2.7b veritabanı ve uygulama paketi satıcıları tarafından kullanılan diğer mimariyi gösterir.Sunum katmanı kullanıcıya bilgi görüntülemeyi sağlar ve veri girişine izin verir. Veri kullanıcıya doğru yukarı veya DBMS'e doğru aşağı 22 geçmeden önce iş mantığı katmanı ara kuralları ve kısıtlamaları işler.. Alt katman tüm veri yönetimi hizmetlerini içerir. Orta tabaka da veritabanı sunucusundan sorgu sonuçlarını alan ve istemci tarafında Web tarayıcısı tarafından görüntülenebilen dinamik Web sayfaları içine biçimlendiren web server gibi hareket edebilir. Kullanıcı ve depolanan veriler arasındaki katmanları daha hassas bileşenlere ayırmak mümkündür.N, dört veya beş katman olabilir.Bu şekilde N-katmanlı mimarileri yol açacaktır. İş mantığı katmanı çok katmana ayrılmıştır. Bir ağ boyunca programlama ve veri dağıtımının yanı sıra, n-katmanlı uygulamaların bir avantajı da herhangi bir katmanın uygun bir işlemci veya işletim sistemi platformu üzerinde çalışabilir ve bağımsız olarak ele alınabilir olmasıdır.ERP (kurumsal kaynak planlama) ve CRM (müşteri ilişkileri yönetimi) paketleri vendorları genellikle bir özel bir yazılım katmanı kullanırlar. Şifreleme ve şifre çözme teknolojisindeki gelişmeler şifrelenmiş formdaki hassas verinin sunucudan istemciye daha güvenli hale getirdi.Bu teknoloji, yüksek düzeyde veri güvenliği verir ancak ağ güvenlik (network security) sorunları önemli bir endişe kaynağı olmayı sürdürmektedir.Veri sıkıştırma için üretilen çeşitli teknolojiler büyük miktarda verinin serverdan istemciye kablolu ve kablosuz ağlar üzerinden iletilmesinde yardımcı olurlar. 2.6. DBMS’in Sınıflandırılması (Classification of Database Management Systems) Çeşitli kriterler normalde DBMSs sınıflandırmak için kullanılır. İlki DBMSin taban oluşturduğu veri modelidir.Birçok mevcut ticari DBMSler kullanılan ana veri modeli ilişkisel veri modelidir (Rational data model).Nesnesel veri modeli (object data model) bazı ticari sistemlerde uygulamaya konmuştur, ancak yaygın kullanımı olmamıştır. Birçok eski uygulamalar hala hiyerarşik ve ağ veri modellerine dayanan veritabanı sistemleri üzerinde çalışır.İlişkisel DBMSler sürekli gelişim halindedir ve nesne veritabanında geliştirilmiş bir çok konsepti birleştirir.Bu gelişmeler nesnesel- ilişkisel DBMS (object-rational DBMS) 23 denilen yeni bir DBMS sınıfını oluşturmuştur.Veri modeline dayalı DBMSleri şu kategorilere ayırabiliriz; ilişkisel, nesnesel,nesnesel-ilişkisel,hiyerarşik,network ve diğerleri. Günümüzde, bazı deneysel DBMSler ağaç yapılı olarak adlandırılabilecek (hiyerarşik) XML modeline dayanmaktadır.Bu native (yerel) XML DBMS olarak adlandırılır.Çeşitli ticari ilişkisel DBMSler XML arayüzü ve depolama modüllerini de eklemişlerdir. DBMSs sınıflandırmak için kullanılan ikinci ölçüt; sistem tarafından desteklenen kullanıcı sayısıdır.Tek kullanıcılı sistemler bir seferde sadece bir kullanıcıya destek verir ve çoğunlukla PC'ler ile kullanılır.DBMS içeren çok kullanıcılı sistemler, eşzamanlı birden çok kullanıcıyı destekler. Üçüncü kriter, veritabanı dağıtıldığı alan sayısıdır.Eğer veriler tek bir bilgisayarda(serverda) depolanıyor ise DBMS merkezidir. Merkezi bir DBMS birden çok kullanıcı destekleyebilir, fakat DBMS ve database toplamda tek bir bilgisayarda olur.Bir dağıtılmış DBMS (DDBMS), bilgisayar ağları ile bağlı birçok gerçek veritabanı ve DBMS yazılımına sahip olabilir. Homojen DBMSler tüm alanlarda aynı DBMS yazılımını kullanır, oysa heterojen DBMSler her bir alanda farklı DBMS kullanabilir. Heterojen DBMS altında depolanan çok sayıda özerk ve önceden var olan veritabanlarına erişmek için özel yazılım geliştirilmesi de mümkündür. Dördüncü kriter bedeldir.Maliyete dayalı bir DBMS sınıflandırması önermek zordur. Bugün, third-party vendors tarafından desteklenen MySQL ve PostgreSQL gibi açık kaynak kodlu DBMS ürünleri ek hizmetler ile üçüncü taraf satıcılar tarafından desteklenen MySQL ve PostgreSQL gibi ürünleri DBMS var. Büyük sistemler, dağıtım, çoğaltma, paralel işleme, mobil işlemler gibi modüllerine ayrılmış formda satılmaktadır.Lisansla satılmaktadır. Bir lisans başına sınırsız sayıda kullanım oluşturulabilir. Diğer lisans türünde ise eş zamanlı kullanıcı sayısını sınırlar. Microsoft Access gibi bazı sistemlerin bağımsız tek kullanıcı sürümleri kopya başına satılır. Buna ek olarak, data warehousing (veri depolama) ve data mining (veri madenciliği) gibi modüller ek maliyet getirir. 24 Dosyaları saklamak için erişim yolu türlerinin temelinde bir sınıflandırma daha yapılabilir. Sonuç olarak genel ve özel amaçlı DBMS olarak sınıflandırılabilir. Performans temel düşünce olduğu zaman, özel amaçlı DBMS tasarlanır ve belirli bir program için inşaa edilir. Bu tür bir sistem büyük değişiklikler yapmadan başka uygulamalar için kullanılamaz. Birçok havayolu rezervasyon ve telefon rehberi sistemleri özel amaçlı DBMSler idi. Bunlar aşırı gecikme yaşanmaksızın eş zamanlı çok sayıda işlem yapılmasını gerektiren çevrimiçi işlem sistemleri (online transaction processing) (OLTP) kategorisine girer. Eski ve tarihsel olarak önemli iki veri modeli, network ve hiyerarşik modellerdir. Network modeli veriyi sınırlı türde temsil eder: set type (küme türü) denilen 1:N lik ilişki. Bu ilişki 1 kaydın birden fazla kayıtla ilişkili olabileceğini tanımlar.Bir sonraki bölümde detaylı işlenecektir. Figür 2.8 Figür 2.1deki database'in network şema diyagramını göstermektedir. Orada kayıt türleri dikdörtgenler ile set türleri ise yönlendirilmiş oklar ile gösterilmiştir. 25