- Электронные чеки в json виде - PostgreSQL с типом данных JSON или MongoDB
- Склады и автомобильные дороги для логистической компании - т.к. возможна какая-то связанность между данными о дорогами и складах, то подойдут реляционные БД (MS SQL, PostgreSQL, MySQL)
- Генеалогические деревья - теоретически подходят иерархические БД, но т.к. они давно устарели, то связанность можно вполне обеспечить в реляционной БД.
- Кэш идентификаторов клиентов с ограниченным временем жизни для движка аутенфикации - по всем описаниям подходит Redis
- Отношения клиент-покупка для интернет-магазина - реляционная БД
Вы создали распределенное высоконагруженное приложение и хотите классифицировать его согласно 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 (считаем, что в обычном режиме она также ориентирована на целостность данных в ущерб доступности).
- По теореме CAP:
Могут ли в одной системе сочетаться принципы BASE и ACID? Почему?
- Можно, если сочетать в одном проекте две разные СУБД, одна из которых отвечает требованиям ACID, а другая - BASE.
- В рамках одной СУБД эти два принципа противоречат друг другу: атомарность в ACID допускает только полное применение транзакции, а Soft State в BASE - наоборот, допускает незавершенные запросы. Хотя, если СУБД позволяет выполнять одни транзакции как BASE, а другие - как ACID, то нет проблем.
Вам дали задачу написать системное решение, основой которого бы послужили:
- фиксация некоторых значений с временем жизни
- реакция на истечение таймаута
Вы слышали о key-value хранилище, которое имеет механизм Pub/Sub. Что это за система? Какие минусы выбора данной системы?
- key-value хранилище, которое имеет механизм Pub/Sub - это Redis.
- Вот здесь описаны минусы и недостатки данной системы.