Wybór bazy danych

RDBMS

  • Oracle

  • MySQL

  • Microsoft SQL

  • PostgreSQL

  • IBM Db2

NoSQL

  • Document - MongoDB

  • Key-Value - Redis

  • Wide-Column - Cassandra

  • Graph - Neo4J

  • Timeseries - InuxDB

NewSQL

  • Spanner

  • CockroachDB

  • YugaByte

  • MemSQL

  • VoltDB

Kryteria wyboru

Dostępność w CAP

  • poprawna odpowiedź

  • zdrowy węzeł

  • odpowiedź w skończonym czasie

Wysoka dostępność (HA)

  • uptime

  • cały system

  • odpowiedź w zadanym czasie

Wysoka dostępność - strategie

  • master-slave (leader-follower)

  • multi-master (multi-leader)

  • hot-standby

Latencja vs model danych

Relacyjne bazy danych

Model relacyjny jest uniwersalny ale:

  • transakcje kosztują

  • analiza i wykonanie zapytań kosztuje

  • relacje kosztują

Jeśli to nam przestaje wystarczać (za mała latencja), albo zbyt duży ruch, należy szukać rozwiązania w baz No-sql.

Key-value (Redis)

Szukanie tylko po kluczu:

  • cache

  • sesje

  • liczniki (HyperLogLog)

  • tablice wyników

Wide column (Cassandra)

  • szukanie po kluczu

  • proste zapytania po wartościach

Dokumenty (MongoDB)

  • nieustrukturyzowane dane

  • modele hierarchiczne

  • synchronizacja (Google Firestore)

Grafy (Neo4j)

  • rekomendacje

  • sieci społecznościowe

  • wykrywanie oszustw

  • role i uprawnienia

Koszty operacyjne

  • utrzymanie

  • konfiguracja

  • infrastruktura

Wielo-modelowe bazy danych

  • CosmosDB

  • Yugabyte

  • FaunaDB

  • PostgreSQL

  • FoundationDB

Podsumowanie

  • z RDBMS jesteśmy w stanie zajść bardzo daleko

  • skalowanie przez modularyzację

  • latencja jest kluczowa

    • spójność

    • model danych

  • koszty operacyjne

Last updated