İlişkisel ve İlişkisel Olmayan Veritabanı Nedir, Farkları Nelerdir?

Günümüz teknoloji dünyasında bıraktığımız her müsaade, birer data olduğunu bilirsiniz. Yazılımların temelini oluşturan veritabanları, kelam konusu bu dataların yönetilmesinde değerli bir öge olarak karşımıza çıkıyor. Geçmişi uzun vakte dayanan, klasik 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. Pekala bu iki veritabanı çeşidinin ayrıntıları neler, birbirlerinin alternatifi mi yoksa bir yapbozun iki kesimi gibiler mi? Bu makalemizde siz okurlarımızla bir arada veritabanı dünyasına ayrıntılı bir bakış atacağız.

Her şeyden evvel temelden başlamamız gerekirse veritabanı, elektronik ortamda tutulabilen her türlü bilginin depolandığı koleksiyonlardır. Tek başına veritabanı aslında pek bir şey söz etmez, örneğin Excel’de tuttuğumuz tabloları da veritabanına benzetebiliriz. Fakat bilgilerin boyutu ve ölçüsü arttığında bunları organize etme, gerektiğinde ekleme, silme, güncelleme, sorgulama üzere süreçler yapma ve yedekleme muhtaçlığı doğar. Bununla birlikte uygulamalar ve hasebiyle kullanıcıların veritabanlarıyla etkileşime geçmesi de hayli elzem bir durum. Bu mevzuya uygun bir öbür örnek vermemiz gerekirse, rastgele 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ı idare sistemi. Bu yazılımlar veritabanıyla bütünleşik olarak çalışan, tuttuğumuz bilgilerin idaresi ile güvenliğini sağlama, gerektiğinde ekler ve güncellemeler yapma, erişimleri denetim etme ve tahminen de en değerlisi tertipli olarak yedek alma üzere fonksiyonları data tabanı koleksiyonuna kazandırıyor. Ekseriyetle de veritabanından bahsedilirken de veritabanı idare sistemiyle birlikte olan bu paket kastedilir.

İlişkisel veritabanları ve ilişkisel olmayan veritabanları  depoladıkları bilgi tipleri ve bunları organize etme formları açısından farklılık gösteriyor. İlişkisel olan yapılandırılmış, ilişkisel olmayan ise yapılandırılmamış bilgilere mesken sahipliği yapar. Bu kıymetli 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ış data; dengeli bir formatı ve tipi olan, şemaya nazaran düzenlenmiş bilgi manasına geliyor. Örneğin, bir firmanın müşterilerinin ismi, soyadı, doğum tarihi, yaptıkları harcamalar üzere bilgiler yapılandırılmıştır.

İşte bu dataları satır ve sütunlardan oluşan ve birbirleriyle bağlı tablolarda tutan koleksiyona ilişkisel veritabanı diyoruz. Yapılandırılmış datalar evvelce tanımlanmış formatlara ve kategorilere uyduğundan, nizamlı tablolar halinde çarçabuk söz edilebilir. İlişkisel bir veritabanındaki bilgiler birebir vakitte sorgulanabilir ve üzerlerinde ekleme, silme, güncelleme üzere süreçler yapılabilir. Burada varsayım edeceğiniz üzere kelam konusu fonksiyonları katan yapının ismi ilişkisel veritabanı idare sistemidir. (Relational Database Management System)

Veritabanı anlatılırken sıkça verilen bir öteki örneği ele alalım: Bir havayolu şirketinin uçuş bilgilerini düşünün. Her bir uçuşun numarası, kalkış ve varış saatleri, kalkış ve varış havalimanları, uçak tipi, yolcu sayısı vb. üzere çok çeşitli yapılandırılmış dataları vardır. Bu datalar, uçuş rezervasyonunu yaptığımız web siteleri, havaalanındaki monitörler, müşteri hizmetleri üzere 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ı idare sisteminden diğeri değil.

İlişkisel Veritabanları Dataları Nasıl Depolar?


Örnek Bir Tablo Yapısı

ilişkisel veritabanlarının bilgileri satırlar ve sütünlardan oluşan tablolarda tuttuğuna az evvel değinmiştik. Aklınıza bunun Excel tablosu mantığından ne farkı olduğu sorusu gelebilir. İşte tam bu noktada ilişkisel bilgi tabanlarındaki kısıtlayıcı (constraints) kavramı karşımıza çıkıyor. Bunlar tablolardaki dataların bütünlüğünü, doğruluğunu ve tutarlılığını sağlamak için işletilen kurallardır. Artık örnek bir tablo yapısında yer alan bütün elemanları unsur husus ele alalım:

  • Tablo sütunları: Her sütün, girilecek bilginin niteliğini belirler. Örneğin, havayolu şirketinin uçuş seferlerindeki kalkış saati, iniş saati, yolcu sayısı üzere ayrıntılar tabloyu oluşturan birer sütundur.
  • Tablo satırları: Satır ise sütünlara girilen eşsiz, özgün bir kaydı temsil eder. Örneğin, İstanbul – Ankara ortası bir uçuş seferinin yer aldığı satırda; kalkış saati, iniş saati yolcu sayısı, kalkış ve varış havalimanları üzere dataları görebiliriz. Bir alt satırda mesela Antalya – İzmir seferinin ayrıntıları yer alabilir.
  • Birincil anahtar (Primary Key): Biz data tabanındaki tablo yapısını incelediğimizde satırlar ortasındaki farkı görebiliriz, lakin yazılım ortamında her satırı birbirinden eşsiz bir halde ayırmak için sayısal bir temsil tanımlamak gerekir. Birincil anahtar olarak bilinen kısıtlayıcılar sayesinde tablodaki her satır birbirinden başka özellikleri taşıyan kimliğe (ID) bürünürler. Örneğimizden devam etmek gerekirse, seferlerin uçuş numarasının yer aldığı sütun, tablonun birincil anahtarı olabilir. Bu numara seferler tablosundaki tek bir kayda işaret eder.
  • Yabancı Anahtar (Foreign Key): İlişkisel veritabanındaki ilgiden kastımız bir tablodaki satırın birincil anahtarı üzerinden öteki bir tablodaki sütunda temsil edilmesi, yani tabloların birbirleriyle ilişkili hale gelmesidir. Bu ilişkiyi sağlayan ise yabancı anahtar kısıtlayıcısı.
    • Şu ana kadar örnek verdiğimiz havayolu şirketinin uçuş seferleriyle birlikte şirketin sahip olduğu uçakların marka, model, üretim yılı, son bakım tarihi üzere datalarını tutan başka bir uçaklar tablosu olduğunu da düşünün. Seferlerde kullanılan uçakların tüm datalarını direkt seferler tablosunda tutmak performans ve yönetilebilirlik açısından pek yanlışsız sayılmaz. İşte bu yüzden uçaklara atanmış birincil anahtar numaralarını seferler tablosu üzerinde yabancı anahtar olarak kullanarak ilişki sağlayabiliriz. Böylelikle her seferde kullanılan uçağın bilgilerine münasebet üzerinden ulaşmak mümkün hale gelir.

Not: Kısıtlayıcılar yalnızca bu ikisinden ibaret değildir; Unique, Check, Default üzere 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ı bilgileri Havalimanları tablosundan gelmekte olup; uçuşta kullanılan uçağın bilgileri 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 bilgi bütünlüğü korunur ve idare kolaylaşır. Çünkü Uçaklar tablosunda olmayan bir uçak Uçuslar tablosunda yer alamaz. Birebiri havalimanları için de geçerli.


İlişkisel Veritabanı Diyagramı

En Tanınan İlişkisel Veritabanı İdare Sistemleri (RDBMS) Nelerdir?

db-engines.com’un bu ay için paylaştığı datalara nazaran dünya genelinde en çok kullanılan beş ilişkisel veritabanı idare sistemi ve öne çıkan yanları şu halde:

  • Oracle Database: Yüksek performanslı, son derece inançlı ve ölçeklenebilir kurumsal düzey ilişkisel veritabanı tahlili.
  • MySQL: Web uygulamaları için optimize edilmiş, süratli ve sağlam açık kaynaklı veritabanı sistemi.
  • Microsoft SQL Server: Windows ekosistemiyle kusursuz entegre olan, güçlü iş zekası özellikleri sunan kapsamlı bir veritabanı platformu.
  • PostgreSQL: Neredeyse Oracle düzeyinde gelişmiş özellikler ve güçlü bilgi bütünlüğü sunan açık kaynaklı ilişkisel veritabanı idare sistemi.
  • Snowflake: Otomatik ölçeklendirme ve çoklu bulut dayanağı ile öne çıkan, esnek ve kullanımı kolay bulut tabanlı bilgi ambarı tahlili.

Verinin Kadim Lisanı: 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 lisanını kullanıyoruz. 1970’lerde Edgar F. Codd‘un ilişkisel veritabanı modelini tanıtmasıyla doğan SQL ile bilgiler üzerinde sorgulama, ekleme, güncelleme, silme süreçleri yapmakla birlikte veritabanı yapısını tanımlayabiliyoruz. SQL temel olarak SELECT, INSERT, UPDATE, DELETE üzere data manipülasyon komutları ile CREATE, ALTER, DROP üzere bilgi tanımlama komutlarını içerir ve bir programlama lisanından çok daha sade bir sözdizimine (syntax) sahiptir.


SQL Sorguları

Pek çok kaynakta SQL’den bir programlama lisanı olarak bahsedilse de kendisinin programlama lisanı sınıfına dahil edemeyiz. İsmi üstünde bu sorgu lisanının tek gayesi ilişkisel veritabanlarıyla etkileşime geçmek. Öte yandan, rastgele bir lisanı programlama lisanı olarak ele almak için iki temel yapının bulunması koşuldur: 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 üzere 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ış

  • Tablolar:
    • Tablolar, bilgilerin organize edildiği temel yapılardır.
    • Her tablo, muhakkak bir data setini (örneğin, müşteriler, siparişler) temsil eder.
    • Sütunlar (alanlar) bilgi özelliklerini, satırlar ise tekil kayıtları gösterir.
  • Kısıtlayıcılar (Constraints): Veritabanında tanımlanan ve bilgi bütünlüğünü korumak için kullanılan kurallardır.
  • İlişkiler:
    • Tablolar ortasında mantıksal ilişkiler kurulur.
    • Bu temaslar birincil anahtar (primary key) ve yabancı anahtar (foreign key) kısıtlayıcıları kullanılarak oluşturulur.
  • SQL:
    • SQL, ilişkisel veritabanı idaresi için standart bir lisandır.
    • SELECT, INSERT, UPDATE, DELETE üzere temel komutları içerir.
    • Karmaşık sorgular, data birleştirme (JOIN) ve alt sorgular yapılabilir.
  • İlişkisel veritabanları ACID prensiplerine doğaldır:
    • Atomiklik (Atomicity): Bir süreç ya büsbütün gerçekleşir ya da hiç gerçekleşmez. Örneğin, banka transferi ya büsbütün yapılır ya da hiç yapılmaz.
    • Tutarlılık (Consistency): Datalar her vakit tarifli kurallara uygun kalır. Örneğin, bir hesaptan para çekildiğinde, toplam bakiye dengeli kalır.
    • İzolasyon (Isolation): Eşzamanlı süreçler birbirini etkilemez. Örneğin, iki kullanıcı tıpkı anda data güncellerken çakışma olmaz.
    • Dayanıklılık (Durability): Tamamlanan süreçler kalıcı olarak kaydedilir, sistem çökmesi durumunda bile kaybolmaz.
  • İşlemler (Transactions):
    • Birden fazla süreç sırasında data tutarlılığını sağlar.
    • Hata durumunda geri alma imkanı sunar.

İlişkisel Veritabanları Hangi Projelerde Kullanılıyor?


İlişkisel Tablo Tasarımı Örneği – Görsel Kaynağı: Google Cloud

Veri bütünlüğünü sağlamanın değerli olduğu çabucak hemen her alanda ilişkisel veritabanları kullanılır. Toplumsal medya platformlarında ilişkisel olmayan sistem dizaynının muhakkak bir kısmında bile ilişkisel veritabanlarının rol aldığını biliyoruz. Öbür yaygın örnekler ise şu halde:

  • E-Ticaret Siteleri: Eser, müşteri, sipariş ve ödeme bilgilerinin tertipli ve dengeli bir halde saklanması için kullanılır. Amazon, eBay üzere büyük e-ticaret platformları, ilişkisel veritabanlarını kullanır.
  • Bankacılık ve Finans Sistemleri: Hesap idaresi, süreç takibi, kredi kartı süreçleri ve müşteri bilgileri üzere kritik finansal bilgilerin saklanmasında ilişkisel veritabanları kullanılır.
  • Sağlık Bilgi Sistemleri: Hasta kayıtları, randevular, tedavi planları ve tıbbi dataların idaresi için ilişkisel veritabanları kullanılır.
  • Eğitim İdare Sistemleri: Üniversiteler ve okullar, öğrenci bilgileri, ders kayıtları, notlar ve öğretmen bilgilerini yönetmek için ilişkisel veritabanları kullanır.
  • Lojistik ve Tedarik Zinciri İdaresi: Envanter, sevkiyat, tedarikçi bilgileri ve sipariş idaresi üzere süreçleri yönetmek için ilişkisel veritabanları kullanılır.
  • İnsan Kaynakları İdare Sistemleri: Çalışan bilgileri, maaş ödemeleri, performans değerlendirmeleri ve işe alım süreçlerinin idaresi için ilişkisel veritabanları kullanılır.
  • İnternet Forumları ve Blog Sistemleri: Kullanıcı içerikleri, yorumlar ve üyelik bilgileri üzere dataların saklanması için ilişkisel veritabanları kullanılır.

İlişkisel olmayan veritabanları, ekseriyetle NoSQL olarak bilinir ve sık sık değişen dataları saklamak için ilişkisel model yerine esnek bilgi modelleri (anahtar-değer, doküman, sütun, grafik) kullanırlar. NoSQL kavramının açılımı “Not Only SQL” olarak tabir edilir ve SQL’in yapılandırılmış bilgi, performans ve ölçeklenebilirlik konusundaki sınırlamasından ötürü 2000’li yılların başında doğmuştur. İlişkisel veritabanlarının yapılandırılmış datalar 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ış bilgiler için tasarlanmıştır.


NoSQL Veritabanı Modelleri

Bu veritabanları, büyük bilgi, yüksek performans ve ölçeklenebilirlik gerektiren uygulamalar için ülküdür, zira evvelden tanımlanmış bir şema gerektirmezler ve yatay olarak kolaylıkla ölçeklenebilirler. Gerçek vakitli web uygulamaları, büyük bilgi analitiği, içerik idare sistemleri ve arama motorları üzere alanlarda yaygın olarak kullanılırlar. İlişkisel veritabanlarından farklı olarak, tutarlılık ve esneklik ortasında bir istikrar sunduklarını söyleyebiliriz. Lakin NoSQL’de tutarlılık ana odak değildir ve bu sebeple data hareketlerinde dengesizlikler yaşanabilir.

İlişkisel Olmayan Veritabanları Dataları Nasıl Depolar?

NoSQL veritabanları dataları, SQL veritabanlarına nazaran tablo üzere katı olmayan farklı alternatif modellerle depolarlar. Bu modeller, fotoğraf, ses yahut sensör bilgileri üzere 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:

  • Anahtar-Değer (Key-Value) Model: Bu yapıda bilgiler, eşsiz anahtarlar ve bu anahtarlara karşılık gelen bedeller olarak saklanır. Her anahtar bir bedeli gösterir ve bu bedel rastgele bir bilgi tipi olabilir (JSON, string…). Bu model, süratli okuma ve yazma süreçleri için ülküdür.
  • Belge Odaklı (Document-Oriented) Model: Bilgiler, çoklukla JSON, BSON yahut XML formatında dokümanlar olarak saklanır. Her doküman, belli bir bilgi yapısını temsil eden alan ve bedel çiftlerinden oluşur. Bu model, hiyerarşik ve esnek data yapıları için uygundur.
  • Sütun Odaklı (Column-Family) Model: Burada ise datalar satırlar ve sütunlar biçiminde organize edilir, lakin ilişkisel veritabanlarından farklı olarak, her satır, birbirinden bağımsız sütun aileleri içinde saklanabilir. Bu model, büyük bilgi kümeleri üzerinde süratli sorgulama yapmak için optimize edilmiştir.
  • Grafik Tabanlı (Graph) Model: Bilgilerin düğümler (nodes) ve bu düğümler ortasındaki kenarlar (edges) olarak temsil edildiği bir data modelidir. Bu model, karmaşık alakaları ve temasları verimli bir formda yönetmek için kullanılır.

Ö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 bilgiler, uçuş sırasında yapılan kayıtlar, GPS haritalama bilgileri üzere yarı yapılandırılmış yahut yapılandırılmamış dataları depolar.

En Tanınan NoSQL Veritabanı Nelerdir?

  • MongoDB: Esnek, JSON gibisi evraklarla data depolayan, doküman odaklı bir veritabanıdır.
  • Apache Cassandra: Büyük data kümelerini sütun aileleriNo içinde organize eden ve yüksek ölçeklenebilirlik sunan sütun odaklı bir veritabanıdır.
  • DynamoDB: AWS tarafından büsbütün yönetilen, düşük gecikme müddeti ve yüksek erişilebilirlik sunan bir NoSQL veritabanıdır.
  • Redis: Bilgileri bellek içi saklayarak yüksek sürat ve düşük gecikme sunan bir anahtar-değer veritabanıdır.
  • Couchbase: Hem doküman odaklı hem de anahtar-değer data modellerini destekleyen, tam metin arama yeteneklerine sahip dağıtık bir veritabanıdır.
  • Neo4j: Bilgileri düğümler ve kenarlar olarak grafik yapıları içinde modelleyen bir grafik veritabanıdır.
  • HBase: Hadoop üzerine inşa edilmiş, büyük bilgi kümelerini sütun odaklı bir yapı içinde depolayan bir veritabanıdır.

İlişkisel Olmayan Veritabanlarının Özellikleri Nelerdir?


Görsel Kaynağı: Blazeclan

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 halde açıklayabiliriz:

  • BASE: NoSQL veritabanlarında ACID prenspilerinin yerini alan bir yaklaşımdır. BASE’in aslında NoSQL anlayışını özetlediğini de söyleyebiliriz, prensipleri şunlar:
    • Temel Erişilebilirlik (Basically Available): Sistem çoklukla erişilebilir durumdadır.
    • Yumuşak Durum (Soft State): Sistem durumu, bilgi değişikliklerine açık olabilir ve mutlaka dengeli olmayabilir.
    • Sonunda Tutarlılık (Eventually Consistent): Bilgiler, vakitle dengeli hale gelir.
  • Yüksek Esneklikte Şemalar: SQL veritabanlarının katı yapısının bilakis, NoSQL veritabanlarının şeması vakit içinde evrilebilir. Bu, yapılandırılmamış ve vakitle değişmesi beklenen dataları depolarken yararlıdır, zira bu bilgiler her vakit tıpkı katı şemaya uymayabilir. Bu noktada, eventual consistency (sonunda tutarlılık) devreye girer ve yapılan değişikliklerin vakit içinde düğümler ortasında yayılmasını sağlar.
  • Yüksek Ölçeklenebilirlik: NoSQL veritabanları çoklukla yatay olarak ölçeklenebilir. Bu, data yükünü ve süreç hacmini artırmak için ek sunucuların sisteme basitçe entegre edilmesi manasına gelir, böylelikle yüksek performans ve kapasite sağlanır.
  • Yerleşik Replikasyon: NoSQL veritabanlarının bilgiyi düğümler ortasında çoğaltma ve dağıtma yeteneği, bu veritabanlarına yüksek erişilebilirlik kazandırır ve birebir vakitte bir arıza yahut kesinti durumunda failover ve yanılgı toleransı sağlar.
  • Düşük Gecikme Müddeti: Data okuma ve yazma süreçleri, bellek içi (in-memory) depolama yahut süratli indeksleme teknikleri sayesinde düşük gecikme müddetiyle gerçekleştirilir. Bu, gerçek vakitli uygulamalarda yüksek performans sağlar.
  • Sharding (Parçalama): Bu özellik, bilgilerin bölünerek sunucuya dikey olarak yayılmasını sağlar, böylelikle yük dengelemesi yapılmış olur, performans artar.

İlişkisel Olmayan Veritabanları Hangi Projelerde Kullanılıyor?

Veri boyutunun çok derecede arttığı durumlarda, anlık olarak değişkenlik gösteren data tiplerinde ve dağıtık mimarilerde NoSQL veritabanlarıyla sıklıkla karşılaşırız. NoSQL’in kullanıldığı kimi örnek senaryolar ise şu biçimde:

  • Sosyal Medya Uygulamaları: Kullanıcı etkileşimleri, paylaşım geçmişi ve anlık iletileşme üzere bilgilerin yönetilmesi gerekir. NoSQL veritabanları, bu çeşit büyük ve dinamik data yapıları için çok uygundur.
  • E-Ticaret Platformları: Eser katalogları, kullanıcı yorumları, alışveriş sepetleri ve şahsileştirilmiş teklifler üzere data ögeleri için NoSQL veritabanları esneklik ve süratli erişim sağlar.
  • Gerçek Vakitli Analitik: Büyük data kümelerinden süratli tahlil ve raporlama gerektiren uygulamalarda, NoSQL veritabanları yüksek performans ve ölçeklenebilirlik sunar.
  • IoT (Nesnelerin İnterneti) Uygulamaları: Sensör dataları, aygıt bilgileri ve temas noktaları üzere büyük ve daima değişen bilgi setlerini depolamak için NoSQL veritabanları kullanılır.
  • Mobil Uygulamalar: Kullanıcı bilgileri, uygulama içi datalar ve etkileşimler üzere dataları depolamak ve senkronize etmek için NoSQL veritabanları kullanılır.
  • İçerik İdare Sistemleri: Bloglar, haber siteleri ve medya idare sistemlerinde, çeşitli formatlarda ve yapılandırılmamış dataların saklanması ve yönetilmesi için NoSQL çok uygundur.
  • Oyun Sanayisi: Oyuncu bilgileri, oyun içi etkileşimler ve başkan panoları üzere dinamik ve büyük data kümeleri için NoSQL veritabanları tercih edilir.
  • Arama ve Teklif Motorları : Tam metin arama ve büyük ölçekli bilgi indeksleme gerektiren uygulamalarda NoSQL veritabanları kullanılır.

Makalemizin bu kısmına kadar SQL ve NoSQL veritabanları hakkında ayrıntılara hakim olduktan sonra bu iki bilgi tabanı paradigmasını karşılaştırabiliriz.

SQL veritabanları ilişkisel data modeline dayanır ve dataları tablo halinde organize ederler. Bu veritabanları, sıkı bir şemaya sahip olup, ACID (Atomiklik, Tutarlılık, İzlenebilirlik ve Dayanıklılık) prensiplerine uyarlar, böylelikle yüksek data bütünlüğü ve güvenilirlik garanti edilir. Performansı artırmak için ekseriyetle dikey ölçeklenirler, yani sunucuya gerektikçe daha güçlü donanım (CPU, RAM, disk…) eklenir. Bilhassa finans kesimindeki para akışı örneğini göz önünde bulundurursak data hareketliliği esnasında bu sürecin yanlışsız 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 çeşitlerde esnek bilgi modellerine sahip (anahtar-değer, evrak, sütun, grafik). Şemalar dinamik olarak değiştirilebilir, bu da yapılandırılmamış ve daima değişen bilgi kümeleri ile başa çıkabilmeyi sağlar. NoSQL veritabanları ekseriyetle yatay ölçeklenebilirlik sunar, yani daha fazla sunucu ekleyerek performansı artırabilirsiniz. Bu veritabanları, büyük data uygulamaları, gerçek vakitli tahliller, toplumsal medya üzere dinamik ve büyük dataların idaresini gerektiren uygulamalar için uygundur. NoSQL, ACID yerine BASE (Temel Erişilebilirlik, Yumuşak Durum, Sonunda Tutarlılık) prensibini benimser, böylelikle NoSQL daha geniş ölçeklenebilirlik ve performans sunmakla bir arada data tutarlılığında her vakit yanılgı hissesi olabileceğini de kabul eder.

Yaptığımız kıyaslama sonucunda SQL ve NoSQL’in birbirini tamamlayan kesimler olduğunu görüyoruz. İkisinin de öne çıkan yanları var ve uygun senaryolarda ikisi de olağanüstü sonuç veriyorlar. Hatta çoğunlukla, uygulamanın ihtiyaçlarına ve data yapısına bağlı olarak, SQL ve NoSQL veritabanları birlikte kullanıldığını söyleyebiliriz. Örneğin, bir e-ticaret platformu, sipariş bilgilerini dengeli ve sağlam bir halde 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 yeterli özelliklerinden yararlanarak, daha esnek ve güçlü data idaresi 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.

Yorum yapın

izmir avukat puff gaziantep marangoz hd film izle film izle pubg mobile uc pubg mobile uc satın al uc satın al pubg uc uc likit kiralık konteyner kiralık yük konteyner kiralık konteyner ev kiralık şantiye konteyner yedek parçaları ucuz smm panel korsan taksi instagram takipçi satın al takipçi satın al