Veri Tabanı Türleri
Günümüzüde birçok veri tabanı kullanılmaktadır. Veri tabanı üretici sayısı yaklaşık 30 tanedir. Veri tabanları çok farklı şekillerde kategorize edilebilir. En yaygın olarak kullanılan kategoriler şunlardır:
• Kaynak Koduna(Source Code) Göre Veri Tabanı Türleri
• Lokasyona Göre Veri Tabanı Türleri(Cloud Database, On-Premise Database)
• Sorgulama diline göre Veri Tabanı Türleri(SQL,NoSQL)
• Mimarisine Göre Veri Tabanı Türleri(DBMS, RDBMS)
• Yaygın Kullanıma Göre Veri Tabanlarının Gruplanması
➤ Kaynak Koduna(Source Code) Göre Veri Tabanı Türleri
Genellikle ücretsizlerdir. Ücreti olanlar azınlıktadır. İndirilmeye, değiştirilmeye ve yeniden kullanıma açıktır.
Verileri kuruluşun kontrol edebileceği yazılımlarla yönetir.
Kullanıcıların benzersiz ihtiyaçlarına ve iş ihtiyaçlarına göre bir sistem oluşturulmasına imkan tanır.
Kaynak kodu herhangi bir kullanıcı tercihine uyacak şekilde değiştirilebilir.
Genellikle gönüllü topluluklar tarafından geliştirilir.
Kısaca; Kaynak koduna müdahale edilebilir, genişletilebilir veri tabanlarına “Open Source Database” yani açık kaynaklı veritabanı denir.
Neden ihtiyaç duyulmuştur ?
– Güvenlik endişelerinden dolayı ortaya çıkmıştır. Arka Kapı – Backdoor sıkıntısı yani verilerin haberimiz olmadan arka kapıdan çıkması temel sebebidir. Açık kaynaklı yazılımlarda verileri yönetmek bizim kontrolümüzde olduğu için verilerimizin çalınması söz konusu değildir.
Örneğin işletim sistemlerinden Windows açık kayaklı değildir. Yani kodları makine diline çevrilmiş ve derlenmiştir, okuyamayız ayrıca müdahale de edemeyiz.
Linux işletim sistemlerinin ortaya çıkmasının sebebi de bu güvenlik endişelerden kaynaklıdır. Linux açık kaynak kodlu bir işletim sistemidir. Kaynak kodu hem okunabilir görülebilir hem de müdahale edilebilir.
• Açık Kaynak Kodlu (Open Source) Veri Tabanları
Yukarıdaki veritabanlarının çoğunun mimarisi farklıdır bazılarının mimarisi benzer olabilir. Ve özelliklerine göre farklı gruplara girebilir.
Örneğin MySQL ve PostgreSQL verileri ilişkisel tablolarda tutarken mongoDB gibi ilişkisel olmayan veritabanlarında veriler tablolarda değil koleksiyonlarda tutulur ve daha çok JSON ve XML formatında saklanır. Yani veritabanlarının veriyi saklama şekli farklı olabilir.
• Kapalı Kaynak Kodlu (Closed Source) Veri Tabanı Nedir ?
Verileri bizim ya da kuruluşların kontrol edemeyeceği yazılımlarla yani veritabanı yönetim sistemleriyle yönetir.
Açık kaynak kodları olmadığı için erişemez, kodları göremez ve değiştiremeyiz. Kaynak koduna müdahale edilemediğinden bu tür yazılımlar içerisinde güvenlik açısından Backdoor yani arka kapı endişesi vardır. Bu endişe genellikle sözleşmelerle giderilir.
Ticari şirketler tarafından geliştirildiği için diğer ismi Ticari(Commerical) veri tabanıdır.
Open Source - Commerical Database Karşılaştırması
➤ Lokasyona Göre Veri Tabanı Türleri
Verilerin yönetilme biçimi, güvenlik ve maliyetleri baz alınarak aşağıdaki lokasyona göre veritabanı türleri seçilebilir.
– Geleneksel Veri Tabanları(Şirket İçi)(Traditional – On-Premise Databases)
– Ortak Veri Barındırma Merkezlerinde Veri Tabanları(Cloud Databases)
• Geleneksel Veri Tabanları(Şirket İçi)(Traditional - On-Premise Databases)
– Verilerin depolandığı veritabanlarının ve uygulamaların, donanım ve yazılımlar dahil tüm ekipmanların tamamen şirketin/kurumun sahip olduğu veri merkezleridir.
Dışarıdan herhangi bir yer kiralamadan başka bir server kullanmadan kendi şirketimizde bir bilgi işlem merkezi oluştururuz. Sunucuları, veritabanlarını ve çevre ekipmanlarını tamamen kendimiz kurarız ve yönetiriz.
– Veri merkezindeki bakım, onarım, işletim gibi tüm işler tamamen şirketin/kurumun sorumluluğundadır.
Geleneksel veritabanlarında sunucu şemada görüldüğü üzere ortaya kurulmuştur. Şirket içerisindeki diğer client(uç) bilgisayarlar LAN(Local Area Network) bağlantısı ile içerideki veritabanına bağlanarak işlemlerini gerçekleştirirler.
• Ortak Veri Barındırma Merkezlerinde Veri Tabanları(Cloud Databases)
Son yıllarda veri merkez hizmeti veren şirketler çoğaldığı için tercihler bu türdeki veritabanına kaymaktadır. Verilerin depolandığı veritabanlarının ve uygulamaların, donanım dahil tüm ekipmanlarını bu hizmeti veren firmalardan kiralanarak kullanıldığı veri merkezleridir. Bu veri merkezindeki lisans, donanım bakım, onarım, işletim gibi tüm iş ve işlemler tamamen kiraya verenin sorumluluğundadır.
Ortak veri barındırma merkezi hizmetinden faydalandığımızda şema biraz daha değişmektedir. WAN(Wide Area Network) yani internet bağlantısı sayesinde ile şirketimiz üzerindeki bilgisayarlar aracılığıyla veri merkezindeki veritabanına bağlanıp işlemlerimizi gerçekleştirebiliriz. Güvenlik, bakım, onarım ve sürdürülebilirlik hizmetleri otomatikmen sağlanacağı için ayrıca bir personel bulundurmamıza gerek yoktur.
➤ Lokasyona Göre Veri Tabanı Türleri
Bir veritabanı seçerken yapacağımız işlemlere göre veritabanı seçmeliyiz.
Eğer veritabanında tutacağımız veriler arasındaki ilişkiler veri bütünlüğü, primary key, foreign key, tutarlılık ve veri bütünlüğü önde ise ve dokümanlarımızın veri tipleri belli ise SQL veritabanlarını seçmeliyiz. Örneğin bir şirketteki maaş hesabı, personel takibi gibi işlemler sabit alanlardan ve sabit işlemlerden oluşacağı için ilişkisel yani SQL veritabanları kullanılır.
Saklayacağımız verilerimizin tipleri ve büyüklükleri net değil ise NoSQL veritabanlarını seçmeliyiz. Örneğin sosyal medyada çeşitli veriler olduğu için (metin, resim, video, ses,..) NoSQL veritabanları kullanılır.
• SQL - NoSQL Veritabanları Karşılaştırması
SQL Databases:
– Esnek satırlı ve sütunlu tablolardan oluşmaz. İçlerinde saklayacakları verilerin boyutları sabittir.
– Yapısal sorgulama dili kullanılır, bazı küçük söz dizimi farklılıkları vardır.
– Veri tekrarını azaltmaya odaklanarak ortaya çıkmıştır.
– İlişkisel veritabanlarıdır.
– Oracle, MySQL, Microsoft SQL Server, IBM DB2, PostgreSQL
– Genel amaçlı işler için kullanılan veritabanlarıdır.
– Dikey (vertical) büyüyebilir. Tablo genişletme dikey büyümeye örnek olarak verilebilir.
– ACID -> Çoklu kayıt işlemlerini destekler.
* ACID: Bir işlemi tanımlayan 4 temel özellik kümesini tanımlayan bir kısaltmadır.
A -> Atomicity-Atomiklik
C -> Consistency-Tutarlılık
I -> Isolation-Yalıtım
D -> Durability-Dayanıklılık
– Birden fazla tablo yaptığımızda ilişkiler(relations) önemlidir. Primary Key, Foreign Key ve index’ler veri bütünlüğünü sağlamak için genellikle gereklidir.
– ORM (object-relational-mapping) yani nesne eşleştirme gereklidir.
NoSQL Databases:
-Esnek satırlı ve sütunlu koleksiyonlardan oluşur. JSON belgeleri, Anahtar/Değer: anahtar/değer çiftleri, Geniş sütun: satırlar ve sütunlar içeren tablolar .
– Paket komutlarıyla işlemler gerçekleştirilir.
– Ölçeklendirilmeye odaklanarak ortaya çıkmıştır.
– İlişkisel olmayan veritabanlarıdır. İçindeki veri türüne göre veritabanı seçilir.
Document: MongoDB, CouchDB
Key – value: Redis, DynamoDB
Wide – column: Cassandra, HBase
Graph: Neo4j, Amazone Neptune
– Document: Genel amaçlı işler için kullanılan veritabanlarıdır.
Key – value: Basit arama sorgularıyla büyük miktarda veri depolama amaçlı veritabanıdır.
Wide – column: Öngörülebilir sorgu kalıplarına sahip büyük miktarda veri depolama amaçlı veritabanı
Graph: Bağlı veriler arasındaki ilişkileri analiz etmek ve geçiş yapmak amaçlı veritabanıdır.
– Yatay (horizontal) büyüyebilir. Koleksiyon oluşturduğumuzda içerisine herhangi bir tipte veri ve herhangi bir uzunlukta veri atmak yatay büyümeye örnek olabilir.
– ACID -> Çoklu kayıt işlemlerini bir tek MongoDB destekler, geri kalanlar desteklemez.
* ACID: Bir işlemi tanımlayan 4 temel özellik kümesini tanımlayan bir kısaltmadır.
A -> Atomicity-Atomiklik
C -> Consistency-Tutarlılık
I -> Isolation-Yalıtım
D -> Durability-Dayanıklılık
– İlişki(relations) kurulabilir fakat gerekli değildir.
– ORM (object-relational-mapping) yani nesne eşleştirme çoğu için gerekli değildir.
➤ SQL-NoSQL Veritabanlarından Hangisini Seçmeliyim ?
Birinin seçilmesi zorunlu değildir. İş ve işlemlerin gereği hibrit yapı (hem SQL hem NoSQL veritabanları) kurulabilir.
➤ Veri Mimarisine Göre Veri Tabanı Türleri
• SQL (RDBMS) Veri Tabanları
– Veriler ilişkili tablolarda tutulur.
– Alfanumeric, String, Date, Image, Dokuman, JSON, XML, … gibi veri formatlarına sahiptir.
– Oracle, MsSQL, MySQL, PostgreSQL, … örnek veritabanlarıdır.
• NoSQL Veri Tabanları
• SQL (RDBMS) Veri Tabanları
– Veriler farklı formatlarda tutulur.
– Koleksiyonlar, kolon aileleri, düğümler, … gibi veri formatlarına sahiptir.
– MongoDB (Collection – JSON)
Cassandra (Columns Family)
Neo4J (Nodes)
➤ Yaygın Kullanımına Göre Veri Tabanı Türleri
Bu veritabanları birbirlerine geçiş yapabilirler.
Merkezileştirilmiş Veri Tabanı (Centralized Database)
Tüm bilgiler tek bir veritabanında tutulur. Saklanan verilere farklı lokasyonlardan ulaşılabilir.
Örn: Üniversitedeki kütüphane verisi. İster SQL ister NoSQL veritabanları kullanılabilir.
2) Dağıtık Veri Tabanı (Distributed Database)
Veriler bir kuruluşun farklı veritabanı sistemleri arasında dağıtılır. İletşim bağlantılıarı aracılığıyla birbirlerine bağlanır. Buna en iyi örnek BlockChain uygulamalarıdır ve en başarılı veritabanı sistemleri BigChainDB, Apache Cassandra, HBase, Ignite,…
3) Nesne - Odaklı Veri Tabanı
Veri depolamak için nesne tabanlı veri modeli yaklaşımı kullanan veritabanı türüdür. Veriler nesne şeklinde saklanır.
ObjectDatabse++, ObjectStore, GemStone/S, Perst, ZODB, Wakanda, ObjectDBi ODABA, Objectivity/DB
4) Ağ Veritabanı
Tipik olarak ağ veri modeline benzer. Veriler temsili olarak bağlantılar aracılığıyla birbirlerine bağlanan düğümlerdir. Hiyerarşik veritabanlarından farklı olarak genelleştirilmiş bir grafik yapısı oluşturmak için her kaydın birden fazla alt düğüme ve üst düğüme sahip olmasına imkan tanır.
MariaDB, BigchainDB
5) İlişkisel Veri Tabanları
Kurumların, şirketlerin ERP kullanarak tüm kaynaklarını planlaması ve yönetmesidir.
Tüm SQL yazılımları: Oracle, MsSQL, PostgreSQL,SYBASE,IBMDB2,…