Uygulamalar ürettikleri ve sundukları veriyi saklamak için veritabanlarına ihtiyaç duyar. Bir uygulamanın verisi, farklı ihtiyaçları doğrultusunda farklı veritabanlarına yayılmış şekilde saklanabilir. Bu ihtiyaçlara ve hangi tür veritabanlarının bu ihtiyaçları karşılayabileceklerine örnekler verelim.
Bunlar en yaygın bilinen veritabanları. Mesela SQL için, PostgreSQL, MySQL; NoSQL için MongoDB, DynamoDB gibi. Bu veritabanları transactional'dır. Genelde bu veritabanlarını ana veritabanı olarak kullanırız ve tüm diğer veritabanları bu veritabanının yetişemediği veya bunları kullanmanın mantıklı olmadığı noktalarda devreye girer.
Resim/ses/görüntü dosyaları, JS/HTML/CSS vb. dosyalar bu kategoridedir. S3 bu türdeki veritabanlarının en popüleri. Bu veritabanları key/value mantığıyla çalışır, örnek senaryolar
- al bu dosyayı şu ID ile kaydet
- al şu ID'yi, bana ilgili dosyayı getir
Birbirinden çok farklı sorguları bu tür veritabanları üzerinde çalıştırabilirsiniz. Mesela Amazon'da satılan ürünlerin tanımlarını, kategorilerini, özelliklerini vs. bu tür bir veritabanında indexleyip müşterilerin farklı aramalar yapabilmesini sağlayabilirsiniz.
Bu tür veritabanları daha çok cache amaçlı kullanılır. Mesela web uygulamanızdaki session'ları cachelemek için kullanabilirsiniz. Kısa ömürlü ve zaman aşımına uğraması muhtemel veriler için uygundur.
İlişkisel sorguları destekleyebilmek için kullanılır. Mesela "Twitter'da bir kullanıcının en son like'ladığı tweet'i atan kullanıcının tüm takipçilerini getir" gibi bir sorguyu graph veritabanlarında kolayca gerçekleyebilirsiniz.
Log ve metric'ler gibi zamana bağlı veriler üzerinde analiz yapabilmenizi sağlar. Örnek olarak, "01/2021-02/2021 tarihleri arasında sensörlerden aldığımız ölçümlerin ortalaması nedir" gibi sorgular için kullanabilirsiniz.
Bunlar veri analizi için kullanılır. "Son çeyrekte yaptığımız satışlardan ne kadar kâr ettik" gibi analitik sorguları destekler.
Graph (Neo4j) örnek olarak, Trendyol'da sahtekarlık ve dolandırıcılık aktivitelerini tespit etmek için, promosyon kötüye kullanımı engellemek gibi senaryolarda da kullanıyoruz, bir promosyonu kullanan userların bağlı olduğu diğer userları getir gibi