Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 5.8 KB

06-db-01-basics.md

File metadata and controls

53 lines (36 loc) · 5.8 KB

Задача 1

  • Электронные чеки в json виде - PostgreSQL с типом данных JSON или MongoDB
  • Склады и автомобильные дороги для логистической компании - т.к. возможна какая-то связанность между данными о дорогами и складах, то подойдут реляционные БД (MS SQL, PostgreSQL, MySQL)
  • Генеалогические деревья - теоретически подходят иерархические БД, но т.к. они давно устарели, то связанность можно вполне обеспечить в реляционной БД.
  • Кэш идентификаторов клиентов с ограниченным временем жизни для движка аутенфикации - по всем описаниям подходит Redis
  • Отношения клиент-покупка для интернет-магазина - реляционная БД

Задача 2

Вы создали распределенное высоконагруженное приложение и хотите классифицировать его согласно CAP-теореме. Какой классификации по CAP-теореме соответствует ваша система, если (каждый пункт - это отдельная реализация вашей системы и для каждого пункта надо привести классификацию):

  • Данные записываются на все узлы с задержкой до часа (асинхронная запись)

    • По теореме CAP: AP. Система доступна и возможно устойчива к разделению, но большая задержка делает данные несогласованными.
    • По теореме PACELC: PA/EL. В нормальном режиме - низкая задержка, но данные не согласованы. При разделении данные доступны, но также не согласованы.
  • При сетевых сбоях, система может разделиться на 2 раздельных кластера

    • По теореме CAP: система устойчива к разделению. Предполагаем, что 2 раздельных кластера - это 2 доступных кластера. Значит, AP: система доступна, но данные между ними не согласованы.
    • По теореме PACELC: либо PA/EC, либо PA/EL.
  • Система может не прислать корректный ответ или сбросить соединение - неоднозначное условие!

    • По теореме CAP:
      • если система в условиях разделения дает некорректный ответ, значит она несогласована, но доступна: AP
      • если система в условиях разделения сбрасывает соединение - значит, она недоступна, но наверное, данные целостны: CP
    • По теореме PACELC:
      • если система в условиях разделения дает некорректный ответ: PA/EL (считаем, что в обычном режиме она также нацелена на быстрый, но не всегда корректный ответ).
      • если система в условиях разделения сбрасывает соединение: EC/PC (считаем, что в обычном режиме она также ориентирована на целостность данных в ущерб доступности).

Задача 3

Могут ли в одной системе сочетаться принципы BASE и ACID? Почему?

  • Можно, если сочетать в одном проекте две разные СУБД, одна из которых отвечает требованиям ACID, а другая - BASE.
  • В рамках одной СУБД эти два принципа противоречат друг другу: атомарность в ACID допускает только полное применение транзакции, а Soft State в BASE - наоборот, допускает незавершенные запросы. Хотя, если СУБД позволяет выполнять одни транзакции как BASE, а другие - как ACID, то нет проблем.

Задача 4

Вам дали задачу написать системное решение, основой которого бы послужили:

  • фиксация некоторых значений с временем жизни
  • реакция на истечение таймаута

Вы слышали о key-value хранилище, которое имеет механизм Pub/Sub. Что это за система? Какие минусы выбора данной системы?

Ответ:

  • key-value хранилище, которое имеет механизм Pub/Sub - это Redis.
  • Вот здесь описаны минусы и недостатки данной системы.