Skip to content

Instantly share code, notes, and snippets.

@selcukcihan
Created May 25, 2023 12:57
Show Gist options
  • Save selcukcihan/6b7e8a2571cbc86416fa09010979a06e to your computer and use it in GitHub Desktop.
Save selcukcihan/6b7e8a2571cbc86416fa09010979a06e to your computer and use it in GitHub Desktop.
Veritabanları

Veritabanları

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.

OLTP (SQL/NoSQL)

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.

Nesne Tabanlı (Object storage, örnek S3)

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

Arama (Örnek Elasticsearch)

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.

In-memory (Örnek Redis)

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.

Graph (Örnek neo4j)

İ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.

Time-series (Örnek influxdb)

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.

OLAP (Örnek Redshift, Snowflake)

Bunlar veri analizi için kullanılır. "Son çeyrekte yaptığımız satışlardan ne kadar kâr ettik" gibi analitik sorguları destekler.

@ibrahim-dogan
Copy link

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

@selcukcihan
Copy link
Author

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

Güzel use-case 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment