Списком
Вибір та управління базою даних є одним із найскладніших архітектурних рішень у хмарних системах. Традиційно бази даних вимагали значних зусиль з налаштування, резервного копіювання, патчингу та масштабування. DBaaS (Database as a Service) передає ці операційні турботи хмарному провайдеру, дозволяючи командам зосередитись на схемі даних та запитах, а не на адмініструванні.
| Завдання | Self-managed (EC2) | DBaaS |
|---|---|---|
| Встановлення СУБД | Клієнт | Провайдер |
| Патчинг ОС та СУБД | Клієнт | Провайдер |
| Резервне копіювання | Клієнт | Автоматично |
| Multi-AZ реплікація | Клієнт | Автоматично |
| Моніторинг та алерти | Клієнт | Частково провайдер |
| Вертикальне масштабування | Клієнт | Через консоль/CLI |
| Read Replicas | Клієнт налаштовує | Кілька кліків |
| Аварійне відновлення | Клієнт | Автоматично (Multi-AZ) |
Обмеження DBaaS:
Amazon RDS — керована реляційна СУБД AWS, що підтримує 6 движків:
| Движок | Ліцензія | Особливості |
|---|---|---|
| MySQL | Open-source | Найпоширеніша веб-СУБД |
| PostgreSQL | Open-source | Розширена відповідність SQL, JSON |
| MariaDB | Open-source | Форк MySQL |
| Oracle | Комерційна | Ентерпрайз-функції; BYOL або включена ліцензія |
| SQL Server | Комерційна | Інтеграція з Microsoft-екосистемою |
| Amazon Aurora | AWS-власна | До 5× швидше MySQL, до 3× швидше PostgreSQL |
Ключові можливості RDS:
Amazon Aurora — революційна архітектура:
Aurora відокремлює рівень обчислень від рівня зберігання:
┌──────────── Compute Layer ────────────────┐
│ Writer Instance (Primary) │
│ Reader Instance 1 Reader Instance 2 │
└────────────────────┬──────────────────────┘
│ Рубликований по 6 копіях
┌────────────────────▼──────────────────────┐
│ Aurora Storage Layer │
│ AZ-1: [Seg1][Seg2] AZ-2: [Seg3][Seg4] │
│ AZ-3: [Seg5][Seg6] │
└───────────────────────────────────────────┘
Azure SQL Database — керована версія Microsoft SQL Server у Azure.
Моделі розгортання:
Рівні сервісу:
Hyperscale:
Cloud SQL — підтримує MySQL, PostgreSQL, SQL Server.
AlloyDB for PostgreSQL:
| Тип NoSQL | Модель даних | AWS | Azure | GCP | Застосування |
|---|---|---|---|---|---|
| Key-Value | Ключ → значення | DynamoDB | Cosmos DB | Cloud Bigtable | Сесії, кеш, profile |
| Document | JSON-документи | DynamoDB | Cosmos DB (MongoDB API) | Firestore | CMS, каталоги |
| Wide-Column | Рядки з динамічними стовпцями | DynamoDB | Cosmos DB | Bigtable | IoT, часові ряди |
| Graph | Вершини та ребра | Amazon Neptune | Cosmos DB (Gremlin) | — | Соцмережі, рекомендації |
| In-Memory | Ключ → значення RAM | ElastiCache (Redis) | Azure Cache for Redis | Memorystore | Кеш, сесії |
Amazon DynamoDB — повністю керована NoSQL БД від AWS, що забезпечує:
Модель даних DynamoDB:
Таблиця: Orders
┌────────────────┬───────────────┬────────────────┬───────────────┐
│ PK (user_id) │ SK (order_id) │ amount │ status │
├────────────────┼───────────────┼────────────────┼───────────────┤
│ user#123 │ order#2024001 │ 149.99 │ delivered │
│ user#123 │ order#2024002 │ 89.50 │ processing │
│ user#456 │ order#2024003 │ 299.00 │ shipped │
└────────────────┴───────────────┴────────────────┴───────────────┘
Partition Key (PK) — розподіляє дані між серверами (sharding); Sort Key (SK) — впорядковує записи всередині партиції.
DynamoDB Streams + Lambda — event sourcing: при змінах у DynamoDB → автоматичний виклик Lambda-функції.
Режими ємності:
Azure Cosmos DB — глобально розподілена MultiModel NoSQL БД.
Унікальні особливості Cosmos DB:
Рівні консистентності Cosmos DB:
Сильніша Слабша
Strong ──► Bounded Staleness ──► Session ──► Consistent Prefix ──► Eventual
(найповільніший) (найшвидший)
Cloud Firestore: Document NoSQL БД, повністю кероване, real-time синхронізація з клієнтами (Web/Mobile SDK). Ідеально для мобільних застосунків та real-time features.
Cloud Bigtable: Wide-column БД для надвеликих навантажень (petabytes). Тим самим движком Google обслуговує Gmail, Google Analytics, Google Maps. Ідеально для IoT, фінансових даних та часових рядів.
| Характеристика | OLTP | OLAP |
|---|---|---|
| Призначення | Транзакції (INSERT, UPDATE) | Аналітика (SELECT агрегати) |
| Запити | Прості, короткі | Складні, тривалі |
| Обсяг даних | Гігабайти–терабайти | Терабайти–петабайти |
| Паттерн доступу | Звертання до рядків | Сканування стовпців |
| Приклади | RDS, DynamoDB | Redshift, BigQuery, Synapse |
Amazon Redshift — хмарне сховище даних (Data Warehouse) з колумнарним зберіганням:
Google BigQuery — serverless аналітична платформа першого класу:
Azure Synapse — уніфікована платформа для аналітики:
Чи потрібні JOIN та транзакції (ACID)?
│
├── Так → Реляційна БД (RDS/Aurora, Azure SQL, Cloud SQL)
│ Чи потрібна максимальна продуктивність?
│ ├── Так → Aurora / AlloyDB
│ └── Ні → RDS MySQL/PostgreSQL
│
└── Ні → Який патерн доступу?
│
├── Прості читання/записи за ключем? → DynamoDB / Cosmos DB
│
├── Документи (JSON, нефіксована схема)? → DynamoDB / Firestore / Cosmos DB
│
├── Часові ряди / IoT (мільярди рядків)? → Bigtable / Timestream
│
├── Граф (відносини між сутностями)? → Neptune / Cosmos DB Gremlin
│
├── Кеш (in-memory, low latency)? → ElastiCache Redis / Memorystore
│
└── Аналітика великих даних? → BigQuery / Redshift / Synapse
Сучасні архітектури часто використовують Polyglot Persistence — різні типи БД для різних частин системи:
Приклад: E-commerce платформа:
DBaaS знімає операційне навантаження з команди (патчинг, резервне копіювання, реплікація), дозволяючи зосередитись на схемі даних і бізнес-логіці.
Amazon Aurora є революційним рішенням серед реляційних СУБД у хмарі — відокремлення обчислень від зберігання забезпечує p99 продуктивність і 6-разове реплікування у 3 AZ.
DynamoDB є стандартом для key-value та document-навантажень, що вимагають мілісекундної затримки та необмеженого горизонтального масштабування.
Azure Cosmos DB унікальна мультимодельністю та 5 рівнями консистентності — дозволяє обирати точний баланс між узгодженістю та затримкою для кожного застосунку.
Polyglot Persistence — стандартна практика у великих системах: кожна частина системи використовує оптимальний тип БД для свого патерну доступу.