Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Анна Морозова “Ты просто Космос ❤️ DB”

DotNetRu
February 12, 2020

Анна Морозова “Ты просто Космос ❤️ DB”

Мы выбирали себе документную базу данных. И выбрали Cosmos DB. Расскажу почему ее, сколько она нам стоит, с какими проблемами мы столкнулись, какие фишечки узнали.

Анна Морозова
Техлид, Dodo Pizza, Нижний Новгород

DotNetRu

February 12, 2020
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Сеть №1 в России 584 пиццерий по всему миру Нашу

    пиццу можно попробовать в 13 странах В России выручка за январь - 1 823 657 814 ₽ О нас
  2. Почему мы выбрали CosmosDB Базовая архитектура Как оптимизировать запросы Настройка

    мониторинга Партицирование Моделирование данных и коллекций Особенности Подведение итогов План капкан
  3. Orders (10 Gb) Carts (20 Gb) CosmosDB Collections Your App

    Не нужно мигрировать схему В одной коллекции могут храниться документы разной структуры
  4. Orders (10 Gb) Carts (20 Gb) CRUD операции Create, Read,

    Update, Delete Your App CosmosDB Collections
  5. Orders (10 Gb) Carts (20 Gb) CRUD операции Your App

    CosmosDB Collections RU Стоит денег
  6. Consumed storage (per Gb) Provisioned throughput (max Request Units per

    second) Что покупаем? https://azure.microsoft.com/en-gb/pricing/details/cosmos-db/
  7. 200 OK 201 Created 400 Bad Request 401 Unauthorized 500

    Internal Server Error И другие… Cosmos DB status codes Status codes
  8. Shard 1 Shard 2 Shard 3 Your App CosmosDB Shard

    Key: ClientId ClientId:1-100 ClientId:101-200 ClientId:201-300
  9. OrderId:1, ClientId:1 OrderId:2, ClientId:2 ShardKey = ClientId Logical Shard 1

    Logical Shard 2 OrderId:3, ClientId:3 Logical Shard 3
  10. OrderId:1, ClientId:1 OrderId:4, ClientId: 1 OrderId:2, ClientId:2 ShardKey = ClientId

    Logical Shard 1 Logical Shard 2 OrderId:3, ClientId:3 Logical Shard 3
  11. Data modeling in Azure Cosmos DB https://docs.microsoft.com/en-us/azure/cosmos-db/modeling-data How to model

    and partition data on Azure Cosmos DB using a real- world example https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-model-partition-example Дока
  12. Data modeling in Azure Cosmos DB https://docs.microsoft.com/en-us/azure/cosmos-db/modeling-data How to model

    and partition data on Azure Cosmos DB using a real- world example https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-model-partition-example Дока
  13. В монго-апи UpdateOne не гарантирует транзакционности исполнения предиката (where) и

    последующего изменения данных. Это создаёт возможность перетирания более свежих версий документа устаревшими его версиями. FindOneAndModify работает правильно
  14. MongoDB и, как следствие, MongoAPI не поддерживают уровень консистентности Session.

    Соответственно, при его использовании c MongoAPI клиент по факту получает уровень консистентности Consistent prefix Уровни консистентности
  15. У космоса много плюшек SLA 99,999 Дешево Не нужно быть

    DevOps-ом что бы адмить Круто с точки зрения оптимизации (RU) Есть свои сложности Много коллекций - дорого Все коллекции с ShardKey Баго-фичи Выводы