Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 71 additions & 116 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,117 +1,72 @@
# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента`


### Инструкция по выполнению домашнего задания

1. Сделайте `fork` данного репозитория к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/git-hw или https://github.com/имя-вашего-репозитория/7-1-ansible-hw).
2. Выполните клонирование данного репозитория к себе на ПК с помощью команды `git clone`.
3. Выполните домашнее задание и заполните у себя локально этот файл README.md:
- впишите вверху название занятия и вашу фамилию и имя
- в каждом задании добавьте решение в требуемом виде (текст/код/скриншоты/ссылка)
- для корректного добавления скриншотов воспользуйтесь [инструкцией "Как вставить скриншот в шаблон с решением](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md)
- при оформлении используйте возможности языка разметки md (коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md))
4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`);
5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
6. Любые вопросы по выполнению заданий спрашивайте в чате учебной группы и/или в разделе “Вопросы по заданию” в личном кабинете.

Желаем успехов в выполнении домашнего задания!
# Домашнее задание к занятию «Базы данных, их типы»" - `Скрыпников Илья`


### Задание 1. СУБД
Крупная строительная компания, которая также занимается проектированием и девелопментом, решила создать правильную архитектуру для работы с данными. Ниже представлены задачи, которые необходимо решить для каждой предметной области.

Какие типы СУБД, на ваш взгляд, лучше всего подойдут для решения этих задач и почему?

1.1. Бюджетирование проектов с дальнейшим формированием финансовых аналитических отчётов и прогнозирования рисков. СУБД должна гарантировать целостность и чёткую структуру данных.
Ответ : Здесь стоит обратить внимание на использование реляционных СУБД, которые отличаются чётким структурированием данных и обеспечивают их сохранность. С помощью SQL-запросов можно эффективно создавать отчёты и управлять аналитикой.
1.1.* Хеширование стало занимать длительно время, какое API можно использовать для ускорения работы?
Ответ : Для ускорения хеширования БД возжожно использовать API MurmurHash. Это быстрый алгоритм хеширования, который может быть использован для ускорения работы с базами данных.

1.2. Под каждый девелоперский проект создаётся отдельный лендинг, и все данные по лидам стекаются в CRM к маркетологам и менеджерам по продажам. Какой тип СУБД лучше использовать для лендингов и для CRM? СУБД должны быть гибкими и быстрыми.
Ответ : как вариант обротить свой взор на NoSQL - MongoDB

1.2.* Можно ли эту задачу закрыть одной СУБД? И если да, то какой именно СУБД и какой реализацией?
Ответ : Я думаю что как минимум подайдет еще и Cassandra
1.3. Отдел контроля качества решил создать базу по корпоративным нормам и правилам, обучающему материалу и так далее, сформированную согласно структуре компании. СУБД должна иметь простую и понятную структуру.
Ответ : Думаю возможно использовать реляционной SQL PostgreSQL или mySQL
1.3.* Можно ли под эту задачу использовать уже существующую СУБД из задач выше и если да, то как лучше это реализовать?

1.4. Департамент логистики нуждается в решении задач по быстрому формированию маршрутов доставки материалов по объектам и распределению курьеров по маршрутам с доставкой документов. СУБД должна уметь быстро работать со связями.
Ответ : Я думаю что реляционной SQL PostgreSQL здесь сможет прегодится для этого у БД есть нужный функционал, но возможно и использование графовой - Neo4j
1.4.* Можно ли к этой СУБД подключить отдел закупок или для них лучше сформировать свою СУБД в связке с СУБД логистов?
Ответ : Возможно, но на мой вкус пусть у отделов будут свои разные БД отвечающии их запросам, да и вопрос с безопасностью будет закрыт
1.5.* Можно ли все перечисленные выше задачи решить, используя одну СУБД? Если да, то какую именно?
Ответ : возможна реляционная SQL PostgreSQL подойдет для всех задачь компании
### Задание 2 Транзакции
2.1. Пользователь пополняет баланс счёта телефона, распишите пошагово, какие действия должны произойти для того, чтобы транзакция завершилась успешно. Ориентируйтесь на шесть действий.

Ответ:
1. Процесс идентификации пользователя
2. Подтверждение транзакции со стороны Пользователя
3. Оброботка транзакции (отклонение или потверждение)
4. Списание средств Пльзователя
5. Зачисление средств Оператору
6. Получение подтверждения о зачислении средств на счет и закрытие транзакции со статусом "успешно"

2.1.* Какие действия должны произойти, если пополнение счёта телефона происходило бы через автоплатёж?

Ответ: Думаю так же, только инициатором транзакции (пункт 1) будет не пользователь, а сервис автоплатежа (просто сервис направит запрос на транзакцию в запланированное время, а не когда захотел пользователь

### Задание 3 SQL vs NoSQL
3.1. Напишите пять преимуществ SQL-систем по отношению к NoSQL.
Ответ:
1. Строгая типизация: SQL-системы предоставляют строгую типизацию, что облегчает управление данными и предотвращает ошибки.
2. Стандартизация: SQL является стандартным языком, что облегчает обучение и разработку.
3. Поддержка транзакций: SQL-системы обеспечивают поддержку транзакций, что гарантирует целостность данных.
4. Масштабируемость: SQL-системы могут масштабироваться вертикально, что позволяет обрабатывать большие объемы данных.
5. Инструменты и экосистема: SQL-системы имеют богатую экосистему инструментов и фреймворков, что облегчает разработку и анализ данных.
3.1.* Какие, на ваш взгляд, преимущества у NewSQL систем перед SQL и NoSQL.
Ответ :
1. Транзакционная целостность: NewSQL системы обеспечивают поддержку ACID-транзакций, что гарантирует целостность данных и консистентность базы данных.
2. Горизонтальная масштабируемость: NewSQL системы могут масштабироваться горизонтально, позволяя обрабатывать большие объемы данных и обеспечивая высокую доступность.
3. Простота разработки: NewSQL системы используют SQL-подобные языки запросов, что упрощает разработку и снижает порог входа для разработчиков.
4. Производительность: NewSQL системы способны достигать высокой производительности благодаря использованию технологий распределенных транзакций и партиционирования данных.
5. Гибкость: NewSQL системы предлагают гибкие модели данных, позволяющие хранить как структурированные, так и полуструктурированные данные.
6. Надежность: NewSQL системы обеспечивают высокий уровень надежности и отказоустойчивости, что делает их привлекательными для критически важных приложений.

### Дополнительные материалы, которые могут быть полезны для выполнения задания

1. [Руководство по оформлению Markdown файлов](https://gist.github.com/Jekins/2bf2d0638163f1294637#Code)

---

### Задание 1

`Приведите ответ в свободной форме........`

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.

```
Поле для вставки кода...
....
....
....
....
```

`При необходимости прикрепитe сюда скриншоты
![Название скриншота 1](ссылка на скриншот 1)`


---

### Задание 2

`Приведите ответ в свободной форме........`

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.

```
Поле для вставки кода...
....
....
....
....
```

`При необходимости прикрепитe сюда скриншоты
![Название скриншота 2](ссылка на скриншот 2)`


---

### Задание 3

`Приведите ответ в свободной форме........`

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.

```
Поле для вставки кода...
....
....
....
....
```

`При необходимости прикрепитe сюда скриншоты
![Название скриншота](ссылка на скриншот)`

### Задание 4

`Приведите ответ в свободной форме........`

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.

```
Поле для вставки кода...
....
....
....
....
```

`При необходимости прикрепитe сюда скриншоты
![Название скриншота](ссылка на скриншот)`
### Задание 4 Кластеры
Необходимо производить большое количество вычислений при работе с огромным количеством данных, под эту задачу выделено 1000 машин.

На основе какого критерия будете выбирать тип СУБД и какая модель распределённых вычислений здесь справится лучше всего и почему?
Ответ :
При выборе типа СУБД следует обратить внимание на следующие критерии:
1. Скорость обработки данных: СУБД должна быть способна обрабатывать большие объемы данных с высокой скоростью.
2. Масштабируемость: СУБД должна быть способна масштабироваться вместе с ростом объема данных и увеличением нагрузки.
3. Надежность: СУБД должна быть способна обеспечить высокую доступность и надежность хранения данных.
4. Простота управления: СУБД должна быть легкой в управлении и обслуживании.
5. Стоимость: СУБД должна быть доступна по цене и не требовать значительных затрат на обслуживание.
На основе этих критериев можно рекомендовать использование таких СУБД, как Apache Hadoop (с использованием HDFS и MapReduce), Apache Cassandra, Google Bigtable или Amazon DynamoDB. Все эти СУБД обладают высокой производительностью, масштабируемостью и надежностью, а также поддерживают распределенную архитектуру, что делает их идеальными для работы с большим объемом данных и множеством машин.