Günümüz dijital dünyasında veri, önemli bir kaynak haline gelmiştir. Hayatımızın her alanında, farklı yönlerden muazzam bir veri akışına maruz kalmaktayız. Veri, her şeyin doğru çalışması için vazgeçilmez bir anahtardır. Veri dediğimizde aklımıza, isimlerimiz, adreslerimiz, araba markalarımız, telefonlarımızdaki resim dosyaları, banka hesaplarımız ve daha birçok bilgi gelir. Günümüzde başarı, şirketlerin sahip oldukları veya elde ettikleri verileri nasıl yönetip yapılandırarak işlediğine bağlıdır. Bir günde dünyada üretilen veri miktarı oldukça etkileyicidir; 2022 itibariyle günde 2.5 trilyon byte’dan daha fazla veri üretilmekte, bu da tam iki buçuk milyar gigabyte’a denk gelmektedir. Bu devasa veri miktarı, günümüz dünyasında verinin ne kadar önemli bir rol oynadığının bir göstergesidir.
Bu kadar büyük bir veri üretimi karşısında, verilerin depolanması ve yönetilmesi büyük bir önem kazanmıştır. İşte burada devreye veri tabanları girmektedir. Veri tabanları, üretilen bu devasa bilgilerin depolandığı yapılar olarak işlev görür ve verilerin tekrar kullanılabilir ve yönetilebilir hale getirir. Peki, veri tabanları ne zaman ortaya çıkmıştır ve nasıl gelişmiştir?
Veri tabanlarının Tarihçesi
Veri tabanları, tarih boyunca farklı şekillerde kullanılmıştır. İlk veri tabanı örneklerinden biri, milattan önce 1760 yılında Mezopotamya’nın Babil ülkesinde ortaya çıkan Hammurabi Kanunlarıdır. Bu, tarihin en eski ve en iyi korunmuş yazılı yasalarından biridir ve aynı zamanda bir veri tabanı örneğidir. Daha sonra, kütüphanelerdeki kart kataloglarını da düşünebiliriz; bu kataloglar, koleksiyoncuların envanterlerini tutmak için veri tabanı işlevi görürler.
Ancak, bilgisayarların hayatımıza girmesiyle birlikte verilerin depolanması ve işlenmesi dijital ve otomatik hale gelmiştir. İlk veri tabanları “flat file model” dediğimiz, alt alta sıralanmış ve belirli bir düzeni olan bilgi satırlarından oluşmaktaydı. Ancak bu model, büyük veri hacimlerini verimli bir şekilde yönetmekte yetersiz kalmaktaydı. Herhangi bir arama işlemi için tüm dosyanın başından başlayarak gezinme gereksinimi, büyük performans sorunlarına yol açmaktaydı. Bu nedenle, daha verimli, hızlı ve güvenilir veri tabanlarına olan ihtiyaç arttı.
Relational Database ve SQL
IBM’nin 1960’ların ortasında geliştirdiği IMS sistemi için hiyerarşik model veri tabanı kullanılmıştır. Daha sonra, Charles Beckman tarafından Network Model adında daha esnek bir veri tabanı modeli ortaya atılmıştır. Ancak, günümüzde hala yaygın olarak kullanılan Relational Database modeli, Ted Codd tarafından 1970 yılında tasarlanmıştır. Relational Database modeli, farklı tablolarda hazırlanmış ve birbiriyle ilişkili olan verilerin bütünüdür. Bu model, birbiriyle ilişkili verileri göstermek için pointers (göstergeçler) kullanmaz; tablolar sadece veri bilgileri ile birbirleriyle ilişkilendirilirler. Relational Database modeli, günümüzde hala en çok tercih edilen veri tabanı modelidir.
Bu modele göre veri tabanlarını yönetmek ve sorgulamak için SQL (Structured Query Language) adı verilen bir programlama dili kullanılır. SQL, veri işlemlerini kolayca gerçekleştirmeye olanak sağlar ve günümüzde en çok kullanılan sorgulama dillerinden biridir. Örneğin, Oracle şirketi bu modeli kullanarak tasarladığı veritabanını ticari kullanıma açmış ve büyük bir başarı elde etmiştir. Ancak, 2000’li yılların başlarına gelindiğinde, Relational Database sistemleri, özellikle internet çağının gereksinimlerini karşılamakta yetersiz kalmıştır.
NoSQL Veritabanları ve Veri Tabanı Modelleri
2000’li yılların sonlarına doğru, ölçeklenebilir bir veri tabanı tasarımına ihtiyaç duyulmuş ve NoSQL veritabanları ortaya çıkmıştır. NoSQL (Not Only SQL), SQL’in yerine geçmeyen ama SQL dışında da kullanılabilen veri tabanlarına verilen genel bir isimdir. Bu veritabanları, ilişkisel veri tabanlarına uymayan ve geleneksel veri yapılarına alternatif olarak düşünülmüştür.
NoSQL veritabanları, büyük veri işleme gücüne cevap verebilen dağıtık yapılar üzerine inşa edilmiştir. Bu yapılar, veri tabanlarının bir tek makinede çalışması yerine, esnek bir şekilde büyüyebilmesine olanak tanır. Bu sayede, internet çağının gerektirdiği büyük veri iş gücüne yanıt verilebilir hale gelmiştir.
NoSQL veritabanları, çeşitli veri tabanı modelleri kullanır ve Relational Database modelinin sınırlamalarını aşarak farklı senaryolara yönelik çözümler sunar. Şimdi, NoSQL veritabanlarının bazı temel modellerini açıklamak istiyorum.
- Key-Value Database: Bu model, sadece iki bölümden oluşur: anahtar (key) ve değer (value). Her bir anahtar, benzersiz bir değerle eşleştirilir ve bu şekilde basit bir veri tabanı yapısı oluşturulur. Key-Value veritabanları genellikle bilgileri bilgisayarın hafızasında tutar, bu nedenle hızlıdırlar. Ancak kapasiteleri sınırlı olabilir. Redis, Memcached ve Hazelcast gibi örnekler verilebilir.
- Wide Column Database: Bu model, Key-Value modelini daha da genişleterek sütun (column) veya sütun ailesi (column family) adı verilen gruplandırmalar kullanır. Bu sayede, veriler benzer bir şekilde bir relational database’deki gibi düzenlenir ve aynı çatı altında toplanır. Wide Column veritabanları genellikle veri depolama hızının yüksek, veri okuma hızının ise düşük olduğu senaryolarda tercih edilir. Cassandra ve HBase bu tür veritabanlarına örnek olarak gösterilebilir.
- Document-Oriented Database: Bu modelde, veriler document olarak adlandırılan yapılarla temsil edilir. Her bir document, key-value çiftleri içeren bir konteyner görevi görür. Bu tür veritabanlarında herhangi bir yapısal şema kullanımı zorunlu değildir ve veriler JSON formatında tutulur. Document-Oriented veritabanlarında bilgiyi okumak hızlıdır, ancak bilgiyi değiştirmek performanslı değildir. MongoDB, Firestore ve CouchDB bu tür veritabanlarına örnek olarak verilebilir.
- Graph Database: Bu modelde, veriler “node” ve “edge” olarak adlandırılan bileşenlerle temsil edilir. Node’lar veri noktalarını, edge’ler ise veriler arasındaki bağlantıları gösterir. Bu yapı, veriler arasında hızlı ve verimli join işlemleri yapmayı mümkün kılar. Graph Database’ler, ağırlıklı olarak birbiriyle ilişkilendirilen verilerle çalışmak için tercih edilir. Neo4j ve Amazon Neptune gibi veritabanları bu modeli kullanır.
Günümüzde veri tabanı seçimi, uygulamanın büyük veri hacmi, düşük gecikme süresi ve esnek veri modelleri gibi gereksinimlerine en iyi cevap verecek türü seçmeye bağlıdır. Her bir veri tabanı modeli, belirli bir kullanım senaryosunda daha uygun ve etkili olabilir. Dolayısıyla, bir uygulamanın ihtiyaçlarına en uygun veri tabanını belirlemek, başarılı bir proje için önemli bir adımdır.
Sonuç olarak, NoSQL ve SQL veritabanları, farklı yapılar ve avantajlar sunarlar ve farklı kullanım senaryolarında etkili olabilirler. Bu nedenle, uygulamanın ihtiyaçlarına ve veri yapılarına göre doğru veri tabanı seçimi büyük bir öneme sahiptir. Teknoloji dünyasında sürekli gelişen bu alanı takip etmek ve uygun çözümleri uygulamak, veri yönetiminde başarılı bir adım olacaktır.
Bu makalenin daha geniş halini video olarak youtube kanalımdan izleyebilirsiniz.