Lokal veritabanları
•Lokal veritabanları tek bir makinede çalışmak üzere tasarlanmış veritabanlarıdır.
•Verilere sadece sizin programınız erişecek ve başkaları bu verilere erişmeyecekse lokal veritabanı kullanılabilir.
•Paradox, Access ve dBase lokal veritabanlarına örnektir.
Client/Server veritabanları
•Veritabanınız bir server(sunucu) üzerinde durur ve birden fazla kullanıcı(client-istemci) bu verilere erişir ve işlem yaparsa Client/Server (C/S) veritabanı kullanılmış demektir.
•C/S veritabanları bir kayda birden fazla kişinin aynı anda erişmesi gibi olayları kendileri kontrol ederler ve bu tip durumların üstesinden nasıl geleceklerini bilirler.
•Interbase, Oracle, SQL Server, Sybase, Informix, DB2 kullanılan C/S veritabanlarıdır.
Client/Server Mimarisi
İstemciler
•Bir istemci yazılım modülü aracılığıyla uygun arayüzleri çeşitli sunucu kaynaklarına erişmek için kulanırlar.
•İstemciler; disksiz makineler, PC’ler veya sadece istemci yazılımının yüklü olduğu bir diske sahip workstation’lar olabilir.
•Sunucuya farklı ağ formları aracılığıyla bağlanabilirler.
–(LAN: local area network, wireless network, vb.)
VTYS Sunucusu
•İstemcilere VT sorgu ve veri işleme servislerini sağlarlar.
•İstemciler üzerinde çalışan uygulamalar, bir uygulama programı arayüzü (Application Program Interface-API) kullanarak sunucu veri tabanlarına ODBC, JDBC gibi standart arayüzler aracılığıyla erişirler.
–ODBC: Open Database Connectivity standart
–JDBC: Java programlarının erişim standartı
•İstemci ve sunucu, ODBC veya JDBC için uygun istemci ve sunucu modülünü yüklemiş olmalıdırlar.
Tek Katmanlı, İki Katmanlı ve Çok Katmanlı Veritabanı Yapıları
Tek Katmanlı (single-tier)
•Genel olarak lokal veritabanları tek katmanlıdır.
•Tek katmanlı yapıda program veritabanına direkt ulaşır ve yapılan işlemler (kayıt ekleme, silme, değiştirme vb.) anında gerçekleştirilir.
İki Katmanlı (two-tier)
•Burada program client tarafında çalışır.
•Client tarafında çalışan program gerekli sürücüleri kullanarak Server’daki veritabanına ulaşır.
Çok katmanlı (multi-tier)
•Burada program yine client tarafında çalışır.
•Program database server’la direkt bağlantı kurmaz .
•Server tarafında çalışan bir Application Server’la bağlantı kurar.
•Bu yapı genellikle güvenlik ve hız amacıyla kullanılır.
Geleneksel İki Katmanlı(2-tier) Model
•Geleneksel İki Katmanlı modelde client uygulamaları veritabanına doğrudan erişir.
•İlişkili uygulamalar da veritabanına doğrudan erişir. (Örneğin bir Muhasebe uygulaması Satış uygulamasının veritabanına erişmek ihtiyacı duyabilir.)
•Geleneksel iki katmanlı uygulamada, bütün prosesler client uygulamasında gerçekleştirilir.
•Veritabanı sunucusu sadece veriler için bir depo gibi çalışır.
Uygulamalar aşağıdakilere uygun olmalıdır:
•Uygulama sınırlı sayıda kullanıcıyı desteklemektedir.
•Uygulama network/database local’dır.(WAN veya Internet değildir)
•Normal güvenlik seviyesine ihtiyaç duyarlar(data çok duyarlı değildir)
•Dışarıdan data erişimi minimal düzeydedir.
Geleneksel İki Katmanlı(2-tier) Modelin avantajları
•Geleneksel mainframe programlara çok benzerler.
•Birçok araç iki katmanlı modelle çalışabilir. (örn.raporlama araçları)
•Birçok gelişmiş araçla çalışmaktadır. (örn.Visual Basic,PowerBuilder,Delphi)
Geleneksel İki Katmanlı(2-tier) Modelin dezavantajları
•Ölçeklenebilir değil: Her bir client kendisine ait bağlantısı ve her bir bağlantı da CPU ve belleğe ihtiyaç duyar. Bağlantı arttıkça veritabanı performansı azalacaktır.
•Zayıf Mantık Paylaşımı: Mantık, client üstünde olduğunda uygulamalar ve araçlar arasındaki mantığın yeniden kullanımı çok zordur.
•Uygulama dağılımı: Uygulama değişiklikleri herbir client’a dağıtılmak zorundadır. Çok sayıda kullanıcı varsa , bu büyük yük getirir.
•Uzaktan kullanım: Uzak kullanıcılar (örn.müşteriler) belki de uygulamanızın client’larına yüklenmesini istemeyeceklerdir.
•Veritabanı yapısı: Veritabanınıza erişen diğer uygulamalar mevcut veritabanı yapısına bağımlı olacaktır. Bu da veritabanı tasarımını değiştirmeyi zorlaştırmaktadır.
Değiştirilmiş iki katmanlı(Modified 2-tier) model
•İş mantığının yeniden kullanımını geliştirmek için kullanılan genel bir yaklaşım, iş mantığını trigger(belli bir olay olduğunda gerçekleştirilen işlem)larda veya stored procedure (depolanmış prosedür) lerde yerleştirmektir.
•Kontroller uygun bir veritabanı stored procedure’ı çağırılarak gerçekleştirilir. Ayrıca, bağlı olarak mantık, veritabanındaki bir trigger ile başlatılabilir.
•Örneğin; iş mantığı, bir talep onaylandığı zaman bir satınalma siparişini otomatik olarak oluşturacak şekilde yapılandırılabilir.
Geleneksel iki katmanlı modele karşı önemli üstünlükleri:
•Daha iyi yeniden kullanım: Aynı mantık (Stored procedure ve trigger’lardaki) pekçok client uygulamasında ve araçlarında başlatılabilir.
•Daha iyi data entegrasyonu: Veritabanı trigger’larında(örn. insert ve update’lerden önce) kontrol mantığı başlatılabilir, böylece veri entegrasyonu sağlanmış olur.
•Karmaşık kontroller için geliştirilmiş performans: İş mantığı veritabanına çok sayıda erişim içeriyorsa, tüm kontrollerin bir stored procedure içinde paketlenmesi network trafiğini önemli ölçüde düşürür.
•Geliştirilmiş güvenlik: Strored procedure’lar güvenliği artırır, çünkü detaylı iş mantığı daha güvenli merkezi bir sunucuda paketlenmiştir.
•Azaltılmış dağıtım: İş mantığındaki değişiklikler sadece veritabanında günlenir ve böylece tüm client’lara dağıtılmasına gerek kalmaz.
Saf Üç katmanlı/N katmanlı model
Saf 3-katmanlı/N-katmanlı modelde, uygulama üç katmana bölünmüştür. Sunum katmanı(veya GUI katmanı) , Orta katman(Uygulama sunucusu) ve veri katmanı.
Uygulama sunucusu uygulamanın iş mantığını paketler. N-katmanlı yapıda uygulama sunucusu bir veya daha fazla katmanda uygulanmış ve bir veya daha fazla konuma dağıtılmış olabilir.
•Sunum Katmanı: İş mantığı orta katmanda uygulandığı için , aynı fonksiyonu iki veya daha fazla ortamda sağlamak için daha az tekrarlı çaba gerekir. Örneğin, bir sipariş detayı ekranı hem client/server uygulamada hem de internet uygulamasında (iş mantığı orta katmanda paylaşılarak) sağlanır.
•Orta Katman (Uygulama Sunucusu) : Birkaç katmanda gerçekleştirilebilir. Uygulama sunucuları birkaç host makinesine dağıtılabilir. Uygulama sunucusu iş mantığını içerdiği için uygulamayı yeniden yapılandırma ihtiyacı duymadan daha fazla sayıda ve hızda uygulama sunucuları ekleyerek daha fazla kullanıcıyı desteklemek mümkündür.
•Veri katmanı: Veri katmanı, veritabanını içerir. Ayrıca veri erişim prosedürlerini de içerebilir. Veritabanı tek bir lokasyonda bulunabilir veya ihtiyaç olursa dağıtılabilir.
3-Tier modelin avantajları
•Ölçeklenebilir: Uygulama sunucuları birden çok makinede konuşlandırılabildiği için gelişmiş ölçeklenebilir özelliği vardır. Ayrıca, veritabanı artık her client’tan bir bağlantıya ihtiyaç duymaz; yalnızca az sayıda uygulama sunucusundan bağlanılması gerekir.
•Daha iyi yeniden kullanım: Aynı mantık çok sayıda client veya uygulamadan başlatılabilir.
•Geliştirilmiş veri entegrasyonu: Tüm günlemeler orta katman tarafından gerçekleştirildiği için , orta katman sadece geçerli verinin veritabanına günlenmesini garanti eder ve zararlı client uygulamasının veriyi bozması riskini ortadan kaldırır.
•Azaltılmış dağıtım: İş mantığındaki değişikliklerin sadece uygulama sunucularında güncellenmesi gerekmekte ve tüm client’lara dağıtılması gerekmemektedir.
•Görev-kritik uygulamalarda fazladan uygulama sunucuları ve fazladan veritabanı sunucuları bulundurularak network veya server hatalarında çalışacak şekilde kullanılabilir.
•Gizli veritabanı yapısı: Veritabanının asıl yapısı kullanıcıdan gizli olduğu için , veritabanı değişikliklerini şeffaf olarak yapmak mümkündür.
3-Tier modelin dezavantajları
•Artmış Karmaşıklık/Çaba: 3 katmanlı uygulamayı geliştirmek iki katmanlıya göre daha zordur.
•Daha az araç : İki katmanlı modelde daha fazla araç vardır(örn. raporlama araçları)
2 Katmanlı / 3 katmanlı model karışımı
3-tier modeldeki karmaşıklık sorunu kolayca çözülemez. Ama pek çok ortamda 3-tier modelin faydaları gereklidir.
•Datanın bakımı az sayıda kullanıcı tarafından yapılıyorsa
•Geniş bir kullanıcı kitlesi (örn.İnternet üzerindeki müşteriler) toplam uygulama mantığının küçük bir alt setine ihtiyaç duyuyorsa
•Diğer uygulamalar bu uygulamayla veri alışverişine ihtiyaç duyuyorsa
•Bazı kullanıcılar özel araçlar kullanmak yerine veriye doğrudan erişmek ihtiyacındalarsa
•Bu ihtiyaçları karşılamak için bir 2 katmanlı / 3 katmanlı model karışımı uygulanabilir. Bu durumda kullanıcıların büyük kısmı Internet client’larını ve/veya basit client/server erişimini, veriye uygulama sunucuları aracılığıyla erişmek için kullanırlar.
•Mantığın büyük kısmı 2-tier model kullanılarak kurulur. Bu da çok sayıda client/server aracının verimliliğinin optimizasyonunu sağlar. 2-tier geliştirme ayrıca daha kolay yönetilir ve koordine edilir.
Bu modellerdeki Araç bağımlılığı