Modern veri tabanları türleri şu şekildedir;
- İlişkisel veri tabanları (Relational)
- İlişkisel olmayan veri tabanları (Non-Relational)
İlişkisel Veri Tabanları (RDBMS) Nedir ?
İlişkisel veri tabanları, en popüler ve en çok kullanılan veri tabanlarıdır. Veriler, satır(row) ve sütun(column) şeklinde tablo(table) içerisinde depolanır. Her tablodaki değerler birbiriyle ilişkilidir. Ayrıca tablolar da diğer tablolarla ilişkili olabilir. Kayıt ekleme, güncelleme, silme ve arama da dahil olmak üzere kullanılan dile de Structured Query Language (SQL) denir. SQL bileşenleri, Veri Manipülasyon Dili (Data Manupilation Language – DML) ve Veri Tanımlama Dili (Data Definition Language – DDL) ifadelerinden oluşur.
Pek çok ilişkisel veri tabanı olmasına rağmen en popüler ilişkisel veri tabanları şunlardır;
İlişkisel veri tabanlarında veri bütünlüğü özel bir öneme sahiptir ve tablolarınızdaki verilerin tutarlı (data consistency) olmasını sağlamak için bir dizi kısıtlama kullanır.
İlişkisel tüm veri tabanları, ACID ilkelerine bağlı kalmaktadır. Verilerin, tutarlı kalmasını ve işlemlerin(transaction) yönetiminin yapılmasını sağlayan özelliklere sahiptir.
ACID nedir ?
Atomicity(Bölünmezlik), Consistency(Tutarlılık), Isolation(İzolasyon), Durability(Dayanıklılık) kelimelerinin akronimidir. ACID, işlem odaklı veri tabanı kurtarma ilkeleri olarak tasarlanmıştır. Dolayısıyla, verilerin bir çeşit başarısızlık sonucu bozulmamasını sağlamak için veri tabanı işlemlerinin(transactions) uyması gereken ilkeleri sağlar.
Atomicity: Ya hep ya da hiç anlamına gelmektedir. Bir transaction (işlem) içinde bütün işlemler yapılır veya biri dahi gerçekleştirilemiyorsa diğer işlemler de gerçekleştirilmez.
Consistency: Her bir işlemin gerçekleştirilmesi sonrasında alınan çıktı, girdi ve yapılan işlemler ile olan tutarlılığını, tanımlanan kurallara uygunluğunu ifade eder.
Isolation: Bir transaction gerçekleştirilirken, transaction’ın çalışmış olduğu alana müdahale edilemeyeceğini ifade eder.
Durability: Kullanıcıya, transaction’ın başarıyla gerçekleştirildiğini belirtmeden önce, gerçekleştirdiği işlemin ileri zamanda geri alınabilecek (recovery) şekilde loglanmasını ifade eder. İşlem sonucunda alınan “Başarılı” cevabının kesinliğine güvenilmelidir.
İlişkisel Olmayan Veri Tabanları (Non-Relational – NoSQL) Nedir ?
NoSQL adı ” Not Only SQL” den gelmektedir yani sadece SQL değil, ne demek bu ? RDBMS sistemlerden farklı bir yapı olan ilişkisel olmayan veri tabanları olmalarıdır.
İlişkisel veri tabanları ACID kurallarına uymak zorundadır. Fakat ilişkisel olmayan veri tabanlarında böyle bir zorunluluk bulunmuyor. NoSQL sistemler benim daha performanslı olmamı ve hızlı işlem yaptırmamı istiyorsan biraz nazımı da çekip bazı kurallarda bana tolerans göstereceksin diyor.
NoSQL, göreceli olarak senaryonuza bağlı olarak RDBMS sistemlerden çok daha performanslı çalışabilir fakat güvenlik ve veri bütünlüğü konusunda şuan için RDBMS’lerden daha geride bulunuyorlar.
NoSQL Veri Tabanı Türleri
- Anahtar / Değer (Key / Value) tabanlı: Bu sistemlerde anahtara karşılık gelen tek bir bilgi bulunur. Yani kolon kavramı yoktur. Örneğin; Redis, MemcacheDB vb.
- Sütun (Column) tabanlı: Sütun ailesi veritabanları genellikle belirli bir sütunun tüm değerlerini disk üzerinde bir araya getirir ve bu da büyük miktarda belirli bir özniteliğin hızlı bir şekilde alınmasını sağlar. Örneğin; Cassandra, HBase vb.
- Doküman (Document) tabanlı: Bu sistemlerde bir kayıt doküman olarak isimlendirilir. Dökümanlar genelde JSON formatında tutulur. Bu dökümanların içerisinde sınırsız alan oluşturulabilir. Örneğin; MongoDB, CouchDB vb.
- Grafik (Graph) tabanlı: Grafik veritabanları, düğümler(node) arasındaki bağlantılardan veya kenarlardan(edge) oluşur. Örneğin; Neo4J, OrientDB vb.
Yatay(Horizontal) – Dikey(Vertical) Büyüme
Küçük veriler üzerinden çalışıyorsanız belki orta ölçekli bir sunucu işinizi görebilir fakat çok büyük verilere sahip sistemler düşünüldüğünde sunucu açısından uğraş ve maliyet gerektirebilir.
Dikey büyüme: Sunucu özelliklerini arttırma anlamına gelmektedir. RDBMS sistemler dikey büyümektedirler. Elimizde bulunan mevcut sunucunun özellikleri(CPU, Memory, Disk vb.) arttırılır. Bu çok maliyetli olabilir ve ayrıca bir sunucunun özelliklerinini ne kadar arttırabilirsiniz ki …
Yatay büyüme: Sunucu arttırma anlamına gelmektedir. NoSQL sistemler yatay büyümektedirler. Bu işlemde ise mevcut sunucunuz üzerinde herhangi bir değişiklik ve özellik arttırımı yapmakla uğraşmadan aynı özelliklerde ya da ihtiyaç doğrultusunda farklı özelliklerde bir sunucuyu daha sunucunuza bağlayarak ihtiyacınızı giderebilirsiniz.
Yazı için teşekkür ederim. Açıklayıcı olmuş.