mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 15:22:37 +03:00
add homework 6.1, tasks 1-3
This commit is contained in:
@@ -24,3 +24,4 @@
|
|||||||
* [5.3. Введение. Экосистема. Архитектура. Жизненный цикл Docker контейнера](/src/homework/05-virtualization/5.3)
|
* [5.3. Введение. Экосистема. Архитектура. Жизненный цикл Docker контейнера](/src/homework/05-virtualization/5.3)
|
||||||
* [5.4. Оркестрация группой Docker контейнеров на примере Docker Compose](/src/homework/05-virtualization/5.4)
|
* [5.4. Оркестрация группой Docker контейнеров на примере Docker Compose](/src/homework/05-virtualization/5.4)
|
||||||
* [5.5. Оркестрация кластером Docker контейнеров на примере Docker Swarm](/src/homework/05-virtualization/5.5)
|
* [5.5. Оркестрация кластером Docker контейнеров на примере Docker Swarm](/src/homework/05-virtualization/5.5)
|
||||||
|
* [6.1. Типы и структура СУБД](/src/homework/06-database/6.1)
|
||||||
|
|||||||
82
src/homework/06-database/6.1/readme.md
Normal file
82
src/homework/06-database/6.1/readme.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/master/06-db-01-basics/README.md)
|
||||||
|
по теме "6.1. Типы и структура СУБД".
|
||||||
|
|
||||||
|
## Q/A
|
||||||
|
|
||||||
|
### Задание 1
|
||||||
|
|
||||||
|
> Архитектор ПО решил проконсультироваться у вас, какой тип БД лучше выбрать для хранения определенных данных.
|
||||||
|
>
|
||||||
|
> Он вам предоставил следующие типы сущностей, которые нужно будет хранить в БД:
|
||||||
|
> * Электронные чеки в json виде
|
||||||
|
> * Склады и автомобильные дороги для логистической компании
|
||||||
|
> * Генеалогические деревья
|
||||||
|
> * Кэш идентификаторов клиентов с ограниченным временем жизни для движка аутенфикации
|
||||||
|
> * Отношения клиент-покупка для интернет-магазина
|
||||||
|
>
|
||||||
|
> Выберите подходящие типы СУБД для каждой сущности и объясните свой выбор.
|
||||||
|
|
||||||
|
* Электронные чеки в json виде
|
||||||
|
|
||||||
|
В данном случае лучше всего использовать документо-ориентированную базу данных. Так как данные уже находятся в формате json,
|
||||||
|
то и дополнительных манипуляций с данными не нужно производить, что упрощает поддержку системы.
|
||||||
|
|
||||||
|
* Склады и автомобильные дороги для логистической компании
|
||||||
|
|
||||||
|
Здесь необходимо более подробные бизнес-требования. В общем случае, лучше использовать традиционную реляционную БД,
|
||||||
|
так как в ней можно хранить как связи между сущностями дорог и складов, так и хранить дополнительную информацию
|
||||||
|
для гео-информационных систем для отображения, построения маршрутов и т.п.
|
||||||
|
Но есть вероятность, что для данного примера более оптимальным решением может быть графовая БД,
|
||||||
|
когда необходимы, например, только расчёты только построения кратчайшего пути.
|
||||||
|
|
||||||
|
* Генеалогические деревья
|
||||||
|
|
||||||
|
Идеально хранить данную информацию в графовой БД, так как данные представляют собой узлы и связи между ними.
|
||||||
|
|
||||||
|
* Кэш идентификаторов клиентов с ограниченным временем жизни для движка аутенфикации
|
||||||
|
|
||||||
|
В данном случае лучшим решением будет использовать key-value хранилище, так как данные имеют время жизни
|
||||||
|
и доступ к ним нужен только по уникальному идентификатору.
|
||||||
|
|
||||||
|
* Отношения клиент-покупка для интернет-магазина
|
||||||
|
|
||||||
|
Оптимально будет использовать реляционную БД, так как необходима поддержка транзакционности при работе с деньгами.
|
||||||
|
|
||||||
|
### Задание 2
|
||||||
|
|
||||||
|
> Вы создали распределенное высоконагруженное приложение и хотите классифицировать его согласно CAP-теореме.
|
||||||
|
> Какой классификации по CAP-теореме соответствует ваша система, если (каждый пункт - это отдельная реализация вашей системы и для каждого пункта надо привести классификацию):
|
||||||
|
> * Данные записываются на все узлы с задержкой до часа (асинхронная запись)
|
||||||
|
> * При сетевых сбоях, система может разделиться на 2 раздельных кластера
|
||||||
|
> * Система может не прислать корректный ответ или сбросить соединение
|
||||||
|
>
|
||||||
|
> А согласно PACELC-теореме, как бы вы классифицировали данные реализации?
|
||||||
|
|
||||||
|
* Данные записываются на все узлы с задержкой до часа (асинхронная запись)
|
||||||
|
|
||||||
|
`PC` - то есть `Partition tolerance` (несколько узлов) и `Consistency` (согласованность данных, хоть и с задержкой).
|
||||||
|
|
||||||
|
* При сетевых сбоях, система может разделиться на 2 раздельных кластера
|
||||||
|
|
||||||
|
`PA` - то есть `Partition tolerance` (может работать на нескольких узлах), и `Availability` (при сбоях упор делается на доступность).
|
||||||
|
|
||||||
|
* Система может не прислать корректный ответ или сбросить соединение
|
||||||
|
|
||||||
|
Не относится к какому-либо классу по теореме `PACELC`, так как не обеспечивает необходимые свойства.
|
||||||
|
|
||||||
|
### Задание 3
|
||||||
|
|
||||||
|
> Могут ли в одной системе сочетаться принципы BASE и ACID? Почему?
|
||||||
|
|
||||||
|
В реальной жизни, насколько я смог найти, систем, которые бы реализовывали все принципы `BASE` и `ACID` нет.
|
||||||
|
Но возможна такая реализация, которая будет основана на одном принципе, при этом частично реализуя другой принцип.
|
||||||
|
|
||||||
|
### Задание 4
|
||||||
|
|
||||||
|
> Вам дали задачу написать системное решение, основой которого бы послужили:
|
||||||
|
> * фиксация некоторых значений с временем жизни
|
||||||
|
> * реакция на истечение таймаута
|
||||||
|
>
|
||||||
|
> Вы слышали о key-value хранилище, которое имеет механизм [Pub/Sub](https://habr.com/ru/post/278237/). Что это за система? Какие минусы выбора данной системы?
|
||||||
|
|
||||||
|
// todo
|
||||||
Reference in New Issue
Block a user