Veritabanı Programlama Dersi 8. Ünite Özet

Dağınık Veritabanı Sistemleri

Giriş

Günümüzün oldukça moda konularından olan büyük veri kavramı, insanların ürettiği verinin artarak çoğaldığı ve artık verinin yönetilebilir boyutlardan çıktığı zaman ortaya çıkmış bir kavramdır. İnsanlar her gün sosyal medyada, blog sayfalarında, internet gezintilerinde milyarlarca satırlık veri oluşturmaktadır. Oluşan bu veri çöplüğünden anlamlı verilerin oluşturulması büyük veri kavramının ilgi alanına girer. Verinin bu kadar arttığı bir ortamda onu işleyecek olan yapıların da ortaya çıkması sebebiyle; verinin saklanması, işlenmesi, anlamlandırılması konusunda ucuz maliyetli çözümler sunulabilen bulut bilişim kavramı ortaya çıkmıştır. Ancak verileri saklamak ve aralarındaki ilişkileri tutmak için hâlihazırda geliştirilmiş olan ilişkisel veritabanı yapıları yetersiz kalmaktadır. Bu yetersizliği gidermek için NoSQL veritabanı yapıları geliştirilerek sorun çözülmeye çalışılmıştır.

Bulut Bilişim

Bulut bilişim İngilizce “cloud computing” terimine Türkçe’de verilen isimdir. Bulut bilişim, tek bir yerel sunucunun ya da kişisel bir cihazın kaynağına bağlı olarak yapılan hesaplama yerine birden fazla cihazın kaynaklarını beraber kullanarak hesaplama yapma işi olarak tanımlanabilir. Bulut bilişim isminde geçen “bulut” kelimesi internet ortamını kastetmektedir çünkü günümüzde uzaktaki bir bilişim kaynağını son kullanıcıya servis etmenin en kolay yolu internet üzerinden sunmaktır. Bu bağlamda bulut bilişime internet tabanlı hesaplama demek yanlış olmayacaktır. Bulut bilişim, gerek donanım kaynaklarını, gerek yazılım servislerini son kullanıcıya hizmet olarak sunabilen dinamik olarak ölçeklendirilebilen yapılardır. Bulut bilişim bu yönüyle bir ürün değil, hizmettir. Bulut bilişim sayesinde internet üzerinden veritabanı, süper hesaplama, dosya paylaşımı vb. gibi hizmetler son kullanıcıya kolaylıkla sunulabilir.

Anaçatı bilgisayar, (mainframe) yüzlerce kullanıcıya aynı zamanda farklı hizmetler verebilen içerisinde çok sayıda işlemci ve sabit disk barındıran güçlü ve pahalı bilgisayarlardır. Şirketler için anaçatı bilgisayar yatırımları oldukça maliyetli yatırımlardır. Bu sebepten dolayı şirketler, anaçatı bilgisayardan en iyi şekilde yararlanmak için işlem gücü olmayan zayıf terminalleri kullanmışlardır. Bu zayıf terminaller zaman paylaşımlı olarak birden fazla kullanıcının anaçatı bilgisayar yapılarına erişmesini ve işlemci gücünü kullanmasını sağlıyordu. Böylelikle anaçatı bilgisayarın işlemcilerinin boş kalma süreleri en aza indirilerek bu pahalı bilgisayarlardan en iyi şekilde yararlanılması sağlanmıştır.

Bulut erişim modelleri dört kategoride toplanabilir. Bunlar: Genel bulut, Topluluk bulut, Özel bulut, Karma bulut. Genel bulut yapılarında depolama, yazılım ve diğer kaynaklar hizmet sağlayan şirket tarafından genel son kullanıcılara sunulur. Sunulan hizmet kullandığın kadar öde modeli ile ya da ücretsiz olarak kullanıcılara servis edilir. Sunuculara erişim internet üzerinden sağlanır. Amazon EC2, Google AppEngine, Dropbox vb. ürünleri genel bulut yapısı içerisinde sayabiliriz. Topluluk bulut hizmeti ortak ihtiyaçları olan ve bu ihtiyaçları beraber karşılama amaçları olan çeşitli organizasyonların altyapılarını birbirleri ile paylaşarak kaynakları daha etkin bir biçimde kullandıkları bulut yapılardır. Özel bulut yapıları sadece tek bir organizasyon için işletilen yapılardır. Bu tür bulutların sadece şirket içi kullanımına izin verilmektedir, dış dünya/son kullanıcı ile herhangi bir bağlantıları yoktur. Bu tür bulut yapıları içerisinde şirkete ait her türlü hassas veri, yazılım kaynağı sadece şirket içerisinde güvenle paylaşılabilir. Karma bulut yapıları en az iki veya daha fazla özel, topluluk veya genel bulut yapılarının birleşerek oluşturduğu yapılardır. Karma bulut yapıları içerisinde hem kurumlara ait hassas bilgiler güvenli bir şekilde paylaşılabilirken hem de bazı hizmetler dışarıdaki son kullanıcı ile de paylaşılabilir.

Bulut bilişim hizmet modelleri üç kategoride toplanabilir. Bunlar: Hizmet olarak altyapı, hizmet olarak servis ve hizmet olarak yazılım. Hizmet olarak altyapı (IaaS: Infrastructure as a Service), teknoloji işletmeleri veya geliştiriciler için dosya saklama alanı ya da hesap yapabilme gibi kaynakları hizmet olarak sunulduğu yapılardır. Bunların yanı sıra işletim sistemlerinin sanallaştırılarak son kullanıcıya sunulması teknolojisi de bu kapsamda yer almaktadır. Bu yapılar anlık ortaya çıkan talep artışları ya da talep azalışları karşısında kiralama hizmeti dinamik olarak ölçekli yükseltilebilir ya da ölçekli küçültülebilir. Hizmet olarak altyapı ürünlerine örnek verecek olursak Amazon EC2, Amazon Web Services, BlueLock, PrimaCloud gibi uygulamaları sayabiliriz. Hizmet olarak servis (PaaS: Platform as a Service), teknoloji işletmeleri ve geliştiriciler için bulut bilişime hazır çözümler üretmesini sağlayan yapıların sunulduğu modeldir. Son kullanıcı belirli altyapılar üzerine kurulmuş olan bu yazılım platformunu kullanarak yazılım geliştirebilir ya da geliştirdiği yazılımı çalıştırabilir. Platform hizmetinin geliştiricilere en temel faydası yazılım geliştirme ve yazılım dağıtımı süreçlerini tek elden yönetebilir olmasıdır. Hizmet olarak platform ürünlerine örnek verecek olursak ActiveState Stackato, Apprenda, Amazon Elastic Beanstalk, Microsoft Azure, Centurylink Appfog, CloudControl dotCloud, Engine Yard, Google App Engine, IBM Bluemix, Pivotal Cloud Foundry, Red Hat OpenShift, Heroku gibi ürünleri sayabiliriz. Hizmet olarak yazılım (SaaS: Software as a Service), belirli bir amaç için geliştirilmiş yazılımları son kullanıcıya kiralama yöntemi ile sunmamızı sağlayan bulut yapılardır. Yazılım sağlama hizmeti ile kullanıcıların ihtiyaç duyduğu CRM, ERP, finans ve muhasebe, ofis uygulamaları, e-posta yazılımları gibi programları bulut üzerinde dağıtılır. Bu yöntem ile son kullanıcı yazılımın geliştirilmesi, çalıştırılması gibi maliyetler yazılımı kullanan müşteriler arasında paylaşılacağından bu maliyetler en aza inmiş olur. Genellikle bu modelde yazılıma web tarayıcı üzerinden erişim sağlanır, bu durum son kullanıcıya herhangi ek bir yazılım kurmadan tüm dünya üzerinden yazılımı kullanabilmesi anlamına gelmektedir. Bu modeli kullanan yazılımlara örnek verecek olursak Salesforce, Workday, Netsuite, ServiceNow, Athenahealth, Microsoft Office Online, Google Apps, Concur, Citrix GoToMeeting, Cisco WebEx gibi yazılımları sıralayabiliriz. Ayrıca Türkiye’nin en büyük internet sağlayıcısı olan TTNET; TTNET Bulutu adlı hizmeti ile Türkiye piyasasındaki yerini almıştır.

NoSQL Yapıları

NoSQL kavramı ilk defa 1998 yılında ortaya atılmıştır ve zaman içerisinde gelişerek günümüze kadar gelmiştir. Bir diğer deyişle NoSQL kavramı, internete yüklenen ve gün geçtikçe artan bu veriyi depolayabilmek, yüksek sayıdaki kullanıcıların anlık taleplerine cevap vermek amacı ile ortaya çıkmış yatay olarak ölçeklendirilebilen veritabanı sistemlerine verilen genel isimdir. NoSQL için “not only sql” tabiri yani “sadece sql değil” de kullanılmaktadır

İlişkisel veritabanları kararlı çalışması ve veri bütünlüğünün korunması için ACID (Atomicity, Consistency, Isolation, Durability) bölünmezlik, tutarlılık, izolasyon, dayanıklılık kurallarını içermektedir.

CAP kelimesi İngilizce “Consistency”, “Availability” ve “Partition Tolerance” kelimelerinin ilk harflerinden oluşturulmuştur. Türkçede sırası ile tutarlılık, ulaşılabilirlik ve bölünebilme toleransı kelimelerine karşılık gelmektedir. Eric Brewer tarafından 1998 yılında ortaya konan CAP teoremi ya da bir diğer adı ile Brewer teoremi dağıtık sistemlerin aynı anda tutarlılık, ulaşılabilirlik ve bölünebilme toleransı koşullarına sahip olamayacağını söyler. Teoreme göre yukarıda bulunanlardan sadece ikisi aynı anda bir dağıtık sistemde bulunabilir. Yani dağıtık bir sistemin her alt bileşeninden aynı veriye erişebilme, aynı anda bütün isteklere cevap verebilme, kaybedilen paket olsa bile verinin bütününü kaybetmeme özelliklerine aynı anda sahip olması mümkün değildir. Yukarıda sayılan üç özellikten birinde mutlaka problem çıkacaktır

Bu iki teoremden yola çıkarak, CAP teoremi dağıtık bir sistemin sahip olması gereken özellikleri, ACID teoremi verinin ve hareket kavramının nasıl yapılacağına dair kuralları ortaya konulmuştur. Günümüzde NoSQL sistemler de bu kavramlar göz önünde tutularak oluşturulmuştur.

Çizelge tabanlı NoSQL yapılarında, veriler, veritabanı içerisinde çizge şeklinde tutulur. Birbirleri ile ilişkili olan verilerin tutulması gerektiğinde bu tür NoSQL yapısı kullanım için oldukça uygundur. Çizge tabanlı veritabanı yapıları, en iyi sonuçları verilerin birbirleri ile ilişkili olarak tutulması gerektiği zamanlarda verir. Örneğin sosyal ağlar, öneri motoru uygulamaları, mekânsal veri ve haritalama gibi konularda oldukça iyi sonuçlar vermektedir. Ayrıca geleceğe yönelik tahmin, öneri ve sonuç analiz motorlarında da kullanılması oldukça iyi sonuçlar vermiştir.

Anahtar-Değer tabanlı olan yapılar, NoSQL veritabanlarında kullanılan en temel yöntemlerden biridir. Veri, anahtar ve buna karşı gelen değer şeklinde kaydedilir ve sorgulamalar anahtar üzerinden yapılır. Anahtar-Değer veritabanı yapılarının en zayıf oldukları taraf, anahtarlar üzerinde yapılacak arama işlemlerinin yüksek maliyetli olmasıdır. Bu zayıflığın aşılması için Google tarafından geliştirilen BigTable aracı gibi araçlarla anahtarların sıralanması ve kümelenmesi sağlanarak bu zayıflık aşılmıştır.

Sütun tabanlı NoSQL yapıları, çok miktarda veri tutmak için kullanılır. Anahtar-Değer veritabanlarında olduğu gibi burada da anahtar mevcuttur ancak anahtar tek bir kayıt yerine sütunu gösterir. Bir başka değişle sütun tabanlı yapılarda veriler satır olarak değil sütunlarda gruplanmış olan hücreler şeklinde kaydedilirler. Yapı içerisindeki sütun aileleri sanal olarak oluşturulmuş sonsuz sayıda kolonu içlerinde barındırabilirler. Okuma ve yazma işlemleri tanımlanan sütunlar üzerinden yapılır. Cassandra, Apache Hadoop HBase gibi yazılımları örnek olarak sıralayabiliriz

Belge tabanlı NoSQL yapılarının temel olarak ilgilendiği alan belgelerin yönetilmesidir. Çalışma prensibi olarak sütun temelli yapılar gibi çalışır ancak iç içe geçmiş belgeler arasında ilişki kurmak bu yapılar ile daha kolaydır. Bu tür veritabanlarına en iyi verilecek örneklerden biri MongoDB isimli üründür. Belgeler, geleneksel veritabalarındaki kayıt (satır) kavramıyla aynıdır. Her belge yani satır, koleksiyonlar içerisinde XML, JSON, BINARY JSON (BSON) gibi formatında saklanır

Google BigQuery, Google şirketinin 2012 yılında başlattığı büyük veri analiz hizmeti sunduğu yapıdır. Son kullanıcılar Google BigQuery yapısını kullanarak ücretsiz ya da kullandığın kadar öde modeli ile hizmet alabilmektedirler. Google BigQuery’nin bu kadar büyük veriler içerisinde bu kadar hızlı sorgulara cevap vermesinin altında yatan teknoloji yine Google tarafından geliştirilmiş olan Dremel altyapısıdır. Google BigQuery’ye web arayüzü üzerinden, komut satırı üzerinden ya da BigQuery REST API arayüzlerinden birini kullanarak ulaşabilirsiniz. Dremel, MapReduce’e nazaran, veri kümesi sorgu işlemlerini daha kısa zamanda gerçekleştirme yeteneğine sahiptir. Ayrıca Dremel alışıla gelmiş SQL dilinde bir sorgulama formatı kullanır.

Google BigQuery yapısı üzerinde projeler, veri bloğu, tablolar ve işler olmak üzere dört temel bileşen vardır. Projeler, Google BigQuery yapısı üzerindeki en üst düzeydeki bileşendir. Diğer iki bileşen proje içerisinde yer almaktadır. Projelere erişim hakları, erişim düzeyleri tanımlanabilir. Veri blokları içerisinde bir ya da daha fazla tabloyu barındıran yapılardır. İşlem yapabilmek için proje içerisinde en az bir tane veri bloğu oluşturulmuş olması gereklidir. Tablolar kullanıcıya ait verilerin tutulduğu yapılardır. Her tablonun kendine ait bir şeması olabilir. Google BigQuery hem görünüm hem de bulut depoda tutulan dış tabloları desteklemektedir. İşler sizin tanımladığınız ve sizin adınıza veri yükleme, veriyi dışarı aktarma, veri üzerinde analiz yapma gibi işlemleri asenkron olarak çalıştıran yapılardır.