advanced

Cosmos DB

Глобально распределённые NoSQL-данные: partition keys, уровни consistency, request units, индексы и выбор API.

Azure Cosmos DB — globally distributed multi-model БД с API (NoSQL, MongoDB, Cassandra, Gremlin, Table). Пропускная способность задаётся в request units (RU); проектирование partition key определяет масштаб, стоимость и риск hot partition.

| Параметр | Эффект | |----------|--------| | Partition key | Маршрутизация документов; плохой выбор даёт hot partition | | Consistency level | Latency vs устаревание между регионами | | Autoscale RU/s | Контроль стоимости с запасом на burst | | TTL | Автоистечение для эфемерных документов |

					await container.items.create({
  id: userId,
  partitionKey: userId,
  profile: { name: 'Ada' },
});
				

На интервью: выбор partition key для ленты или заказов; session vs strong consistency; стоимость RU запросов без partition key; change feed для event projection; когда Cosmos избыточен vs PostgreSQL или Blob Storage.

Типовые ошибки: cross-partition scan на hot path; игнор 429 throttling; multi-region writes без понимания conflict resolution; peak RU/s там, где хватит autoscale.

Компромисс — глобально низкая latency чтения и elastic scale против строгого моделирования, прозрачности стоимости RU и более крутой кривой обучения, чем у relational stores.

Чеклист:

  • Partition keys из high-cardinality access patterns.
  • Consistency level под допустимое устаревание данных.
  • Point read и partition-scoped queries на hot path.
  • Мониторинг 429, потребления RU и нагрева partition.
  • Проверка restore и multi-region failover на staging-аккаунте.