34,5858$% 0.09
36,4003€% 0.97
2.914,65%-3,01
4.950,00%-2,29
19.740,00%-2,28
2.625,73%-2,96
9.659,96%1,15
Günümüz teknoloji dünyasında bıraktığımız her izin, birer veri olduğunu bilirsiniz. Yazılımların temelini oluşturan veritabanları, söz konusu bu bilgilerin yönetilmesinde önemli bir öge olarak karşımıza çıkıyor. Geçmişi uzun zamana dayanan, klâsik hale gelmiş ilişkisel veritabanlarıyla birlikte yüksek performans ve düşük gecikme merkezli uygulamalar için ilişkisel olmayan veritabanları da yayılmaya devam ediyor. Peki bu iki veritabanı cinsinin ayrıntıları neler, birbirlerinin alternatifi mi yoksa bir yapbozun iki parçası gibiler mi? Bu makalemizde siz okurlarımızla bir arada veritabanı dünyasına ayrıntılı bir bakış atacağız.
Her şeyden önce temelden başlamamız gerekirse veritabanı, elektronik ortamda tutulabilen her türlü datanın depolandığı koleksiyonlardır. Tek başına veritabanı aslında pek bir şey ifade etmez, örneğin Excel’de tuttuğumuz tabloları da veritabanına benzetebiliriz. Ancak dataların boyutu ve miktarı arttığında bunları organize etme, gerektiğinde ekleme, silme, güncelleme, sorgulama gibi süreçler yapma ve yedekleme ihtiyacı doğar. Bununla birlikte uygulamalar ve dolayısıyla kullanıcıların veritabanlarıyla etkileşime geçmesi de epeyce elzem bir durum. Bu konuya uygun bir başka örnek vermemiz gerekirse, herhangi bir siteye kaydolduğunuzda veritabanına kullanıcı isminiz, şifreniz, e-posta adresiniz eklenir.
İşte tam bu noktada tabir yerindeyse veritabanına bir ruh katan bir yapı karşımıza çıkıyor: Veritabanı yönetim sistemi. Bu yazılımlar veritabanıyla bütünleşik olarak çalışan, tuttuğumuz dataların yönetimi ile güvenliğini sağlama, gerektiğinde ekler ve güncellemeler yapma, erişimleri kontrol etme ve tahminen de en kıymetlisi düzenli olarak yedek alma gibi fonksiyonları veri tabanı koleksiyonuna kazandırıyor. Genellikle de veritabanından bahsedilirken de veritabanı yönetim sistemiyle birlikte olan bu paket kastedilir.
İlişkisel veritabanları ve ilişkisel olmayan veritabanları depoladıkları veri çeşitleri ve bunları organize etme halleri açısından farklılık gösteriyor. İlişkisel olan yapılandırılmış, ilişkisel olmayan ise yapılandırılmamış verilere ev sahipliği yapar. Bu önemli tasarım farkı, onları çok çeşitli kullanım alanlarına uygun hale getirmekte.
İlişkisel veritabanını tanımlamak için öncelikle yapılandırılmış datadan bahsedelim. Yapılandırılmış veri; dengeli bir formatı ve tipi olan, şemaya göre düzenlenmiş veri anlamına geliyor. Örneğin, bir firmanın müşterilerinin adı, soyadı, doğum tarihi, yaptıkları harcamalar gibi veriler yapılandırılmıştır.
İşte bu verileri satır ve sütunlardan oluşan ve birbirleriyle bağlı tablolarda tutan koleksiyona ilişkisel veritabanı diyoruz. Yapılandırılmış veriler önceden tanımlanmış formatlara ve kategorilere uyduğundan, düzenli tablolar halinde çarçabuk ifade edilebilir. İlişkisel bir veritabanındaki veriler aynı zamanda sorgulanabilir ve üzerlerinde ekleme, silme, güncelleme gibi süreçler yapılabilir. Burada tahmin edeceğiniz üzere söz konusu fonksiyonları katan yapının ismi ilişkisel veritabanı yönetim sistemidir. (Relational Database Management System)
Veritabanı anlatılırken sıkça verilen bir başka örneği ele alalım: Bir havayolu şirketinin uçuş datalarını düşünün. Her bir uçuşun numarası, kalkış ve varış saatleri, kalkış ve varış havalimanları, uçak tipi, yolcu sayısı vb. gibi çok çeşitli yapılandırılmış verileri vardır. Bu veriler, uçuş rezervasyonunu yaptığımız web siteleri, havaalanındaki monitörler, müşteri hizmetleri gibi farklı kullanıcılar tarafından çekilir, filtrelenebilir ve değişikliğe uğrar. Buradaki süreci işleten ise elbette ilişkisel veritabanı yönetim sisteminden oburu değil.
İlişkisel Veritabanları Verileri Nasıl Depolar?
ilişkisel veritabanlarının verileri satırlar ve sütünlardan oluşan tablolarda tuttuğuna az önce değinmiştik. Aklınıza bunun Excel tablosu mantığından ne farkı olduğu sorusu gelebilir. İşte tam bu noktada ilişkisel veri tabanlarındaki kısıtlayıcı (constraints) kavramı karşımıza çıkıyor. Bunlar tablolardaki bilgilerin bütünlüğünü, doğruluğunu ve tutarlılığını sağlamak için işletilen kurallardır. Şimdi örnek bir tablo yapısında yer alan bütün elemanları madde madde ele alalım:
Not: Kısıtlayıcılar sadece bu ikisinden ibaret değildir; Unique, Check, Default gibi farklı kısıtlayıcıların da olduğunu belirtelim.
Aşağıdaki diyagramı inceleyerek ilişkisel veritabanı mantığını rahatlıkla kavrayabilirsiniz. Uçuştaki kalkış ve varış havalimanı verileri Havalimanları tablosundan gelmekte olup; uçuşta kullanılan uçağın verileri de Uçaklar tablosundan geliyor. Bunu yapmamızı sağlayan nokta kendi tablolarında birincil anahtar olan sütunların (HavalimaniID ve UcakID) Uçuşlar tablosunda yabancı anahtar olarak temsil edilmesidir. Bu dizaynda veri bütünlüğü korunur ve yönetim kolaylaşır. Çünkü Uçaklar tablosunda olmayan bir uçak Uçuslar tablosunda yer alamaz. Birebiri havalimanları için de geçerli.
En Popüler İlişkisel Veritabanı Yönetim Sistemleri (RDBMS) Nelerdir?
db-engines.com’un bu ay için paylaştığı verilere göre dünya genelinde en çok kullanılan beş ilişkisel veritabanı yönetim sistemi ve öne çıkan yanları şu şekilde:
Verinin Kadim Dili: Structured Query Language (SQL)
Şu ana kadar temel bir bakış attığımız ilişkisel veritabanlarını yönetmek ve sorgulamak için 50 yaşını devirmiş SQL dilini kullanıyoruz. 1970’lerde Edgar F. Codd‘un ilişkisel veritabanı modelini tanıtmasıyla doğan SQL ile veriler üzerinde sorgulama, ekleme, güncelleme, silme işlemleri yapmakla bir arada veritabanı yapısını tanımlayabiliyoruz. SQL temel olarak SELECT, INSERT, UPDATE, DELETE gibi veri manipülasyon komutları ile CREATE, ALTER, DROP gibi veri tanımlama komutlarını içerir ve bir programlama lisanından çok daha sade bir sözdizimine (syntax) sahiptir.
Pek çok kaynakta SQL’den bir programlama dili olarak bahsedilse de kendisinin programlama dili sınıfına dahil edemeyiz. Adı üstünde bu sorgu dilinin tek amacı ilişkisel veritabanlarıyla etkileşime geçmek. Öte yandan, herhangi bir dili programlama dili olarak ele almak için iki temel yapının bulunması kuraldır: Bunlar döngüler, şartlı sözlerdir. Standart SQL’de bu yapılar bulunmazken; SQL’in genişletilmiş versiyonlarında vardır. Oracle PL/SQL, Microsoft T-SQL gibi SQL’ın özelleştirilmiş halleri prosedürel özellikleri de içerir ve tam teşekküllü programlama lisanları olarak kabul edilebilir.
İlişkisel Veritabanlarının Özelliklerine Genel Bakış
İlişkisel Veritabanları Hangi Projelerde Kullanılıyor?
Veri bütünlüğünü sağlamanın önemli olduğu hemen hemen her alanda ilişkisel veritabanları kullanılır. Sosyal medya platformlarında ilişkisel olmayan sistem dizaynının belli bir kısmında bile ilişkisel veritabanlarının rol aldığını biliyoruz. Diğer yaygın örnekler ise şu şekilde:
İlişkisel olmayan veritabanları, genellikle NoSQL olarak bilinir ve sık sık değişen verileri saklamak için ilişkisel model yerine esnek veri modelleri (anahtar-değer, doküman, sütun, grafik) kullanırlar. NoSQL kavramının açılımı “Not Only SQL” olarak ifade edilir ve SQL’in yapılandırılmış veri, performans ve ölçeklenebilirlik konusundaki sınırlamasından dolayı 2000’li yılların başında doğmuştur. İlişkisel veritabanlarının yapılandırılmış veriler için kullanıldığından bahsetmiştik. NoSQL veritabanları da tablolara tam olarak sığmayan yarı yapılandırılmış ve yapılandırılmamış veriler için tasarlanmıştır.
Bu veritabanları, büyük veri, yüksek performans ve ölçeklenebilirlik gerektiren uygulamalar için ülküdür, çünkü önceden tanımlanmış bir şema gerektirmezler ve yatay olarak kolayca ölçeklenebilirler. Gerçek zamanlı web uygulamaları, büyük veri analitiği, içerik yönetim sistemleri ve arama motorları gibi alanlarda yaygın olarak kullanılırlar. İlişkisel veritabanlarından farklı olarak, tutarlılık ve esneklik arasında bir denge sunduklarını söyleyebiliriz. Ancak NoSQL’de tutarlılık ana odak değildir ve bu sebeple veri hareketlerinde dengesizlikler yaşanabilir.
İlişkisel Olmayan Veritabanları Verileri Nasıl Depolar?
NoSQL veritabanları verileri, SQL veritabanlarına göre tablo gibi katı olmayan farklı alternatif modellerle depolarlar. Bu modeller, fotoğraf, ses veya sensör verileri gibi değişik biçimlerdeki yapılandırılmamış bilgilerin gruplandırılması, saklanması ve gerektiğinde çekilmesi konusunda daha esnek bir yaklaşım sunuyorlar. Bahsettiğimiz modeller ise şunlar:
Önceki örnekte bahsettiğimiz havayolu şirketinin veritabanını tekrardan ele alırsak, bir NoSQL veritabanı bu durumda, uçak sensörlerinden ve göstergelerinden alınan veriler, uçuş sırasında yapılan kayıtlar, GPS haritalama bilgileri gibi yarı yapılandırılmış veya yapılandırılmamış verileri depolar.
En Popüler NoSQL Veritabanı Nelerdir?
İlişkisel Olmayan Veritabanlarının Özellikleri Nelerdir?
NoSQL veritabanlarının çağdaş uygulamaların ölçeklenebilirlik, çeşitlilik ve esneklik ihtiyaçlarını karşılamak için tasarlandığını söylemiştik. Bu tipteki veritabanlarının özelliklerini kısaca şu şekilde açıklayabiliriz:
İlişkisel Olmayan Veritabanları Hangi Projelerde Kullanılıyor?
Veri boyutunun aşırı derecede arttığı durumlarda, anlık olarak değişkenlik gösteren veri cinslerinde ve dağıtık mimarilerde NoSQL veritabanlarıyla sıklıkla karşılaşırız. NoSQL’in kullanıldığı bazı örnek senaryolar ise şu şekilde:
Makalemizin bu kısmına kadar SQL ve NoSQL veritabanları hakkında ayrıntılara hakim olduktan sonra bu iki veri tabanı paradigmasını karşılaştırabiliriz.
SQL veritabanları ilişkisel veri modeline dayanır ve verileri tablo şeklinde organize ederler. Bu veritabanları, sıkı bir şemaya sahip olup, ACID (Atomiklik, Tutarlılık, İzlenebilirlik ve Dayanıklılık) prensiplerine uyarlar, böylece yüksek veri bütünlüğü ve güvenilirlik garanti edilir. Performansı artırmak için genellikle dikey ölçeklenirler, yani sunucuya gerektikçe daha güçlü donanım (CPU, RAM, disk…) eklenir. Özellikle finans sektöründeki para akışı örneğini göz önünde bulundurursak veri hareketliliği esnasında bu sürecin doğru ve yanılgısız tamamlanması elzem bir durum. İşte SQL veritabanlarının bu iş için biçilmiş bir kaftan olduğunu söyleyebiliriz.
Öte yandan, NoSQL veritabanları ise çeşitli tiplerde esnek veri modellerine sahip (anahtar-değer, doküman, sütun, grafik). Şemalar dinamik olarak değiştirilebilir, bu da yapılandırılmamış ve daima değişen veri kümeleri ile başa çıkabilmeyi sağlar. NoSQL veritabanları genellikle yatay ölçeklenebilirlik sunar, yani daha fazla sunucu ekleyerek performansı artırabilirsiniz. Bu veritabanları, büyük veri uygulamaları, gerçek zamanlı tahliller, sosyal medya gibi dinamik ve büyük bilgilerin idaresini gerektiren uygulamalar için uygundur. NoSQL, ACID yerine BASE (Temel Erişilebilirlik, Yumuşak Durum, Sonunda Tutarlılık) prensibini benimser, böylece NoSQL daha geniş ölçeklenebilirlik ve performans sunmakla bir arada veri tutarlılığında her zaman hata payı olabileceğini de kabul eder.
Yaptığımız kıyaslama sonucunda SQL ve NoSQL’in birbirini tamamlayan modüller olduğunu görüyoruz. İkisinin de öne çıkan yanları var ve uygun senaryolarda ikisi de şahane sonuç veriyorlar. Hatta çoğunlukla, uygulamanın ihtiyaçlarına ve veri yapısına bağlı olarak, SQL ve NoSQL veritabanları birlikte kullanıldığını söyleyebiliriz. Örneğin, bir e-ticaret platformu, sipariş datalarını dengeli ve güvenilir bir şekilde yönetmek için SQL veritabanı kullanırken, kullanıcı davranışlarını izlemek ve teklif sistemlerini güçlendirmek için NoSQL veritabanı kullanabilir. Bu kombinasyonla, her iki teknolojinin en iyi özelliklerinden yararlanarak, daha esnek ve güçlü veri yönetimi tahlilinin kapılarını aralayabiliyoruz.
Bu makalemizde yazılımların temeli niteliğindeki veritabanlarını ayrıntılıca ele aldık. Gelecek yazılarımızda tekrardan görüşmek dileğiyle, esen kalın.
Diğer Teknoloji Haberleri İçin Tıklayın / Bursa Haber – Bursa Gündem – Bursa Gündem Haber – Bursa Haberleri – Bursa Son Dakika
Bizi İnstagram’da Takip Edebilirsiniz / @BursaGündemHaber
Bizi X’de Takip Edebilirsiniz / @BursaGündemHbr
Bizi Facebook’da Takip Edebilirsiniz / @BursaGündemHaber
Bizi Youtube’da Takip Edebilirsiniz / @BursaGündemHaber
Bizi Linkedin’de Takip Edebilirsiniz / @BursaGündemHaber
Tıpkı İnsanlar Gibi Birbirlerine İsim Veriyorlar! Sırf 3 Hayvan Tipinde Görüldü