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
152 changes: 73 additions & 79 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента`
# Домашнее задание к занятию "`«Базы данных, их типы»`" - `Брюханов Александр`


### Инструкция по выполнению домашнего задания
Expand All @@ -22,96 +22,90 @@

---

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

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

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.
1.1. Бюджетирование проектов с дальнейшим формированием финансовых аналитических отчётов и прогнозирования рисков. СУБД должна гарантировать целостность и чёткую структуру данных.
ОТВЕТ:
Выбор - реляционная СУБД для работы с данными в табличной форме с информацией по обекту для составления отчетов и прогнозирования на основе накопления данных.

```
Поле для вставки кода...
....
....
....
....
```
1.1.* Хеширование стало занимать длительно время, какое API можно использовать для ускорения работы?

`При необходимости прикрепитe сюда скриншоты
![Название скриншота 1](ссылка на скриншот 1)`
1.2. Под каждый девелоперский проект создаётся отдельный лендинг, и все данные по лидам стекаются в CRM к маркетологам и менеджерам по продажам. Какой тип СУБД лучше использовать для лендингов и для CRM? СУБД должны быть гибкими и быстрыми.
ОТВЕТ:
Для CRM - реляционная СУБД (неизменяемые данные в табличной форме); Для Лендингов - тоже реляционная СУБД.
1.2.* Можно ли эту задачу закрыть одной СУБД? И если да, то какой именно СУБД и какой реализацией?

1.3. Отдел контроля качества решил создать базу по корпоративным нормам и правилам, обучающему материалу и так далее, сформированную согласно структуре компании. СУБД должна иметь простую и понятную структуру.
ОТВЕТ:
СУБД типа ключ-значение. Запросил документ по ключу и получил необходимую инфу.
1.3.* Можно ли под эту задачу использовать уже существующую СУБД из задач выше и если да, то как лучше это реализовать?

---
1.4. Департамент логистики нуждается в решении задач по быстрому формированию маршрутов доставки материалов по объектам и распределению курьеров по маршрутам с доставкой документов. СУБД должна уметь быстро работать со связями.
ОТВЕТ:
Графовые СУБД - специфичный тип, предназначены для работы с графами, с их узлами, свойствами, и произвольными отношениями между узлами.
1.4.* Можно ли к этой СУБД подключить отдел закупок или для них лучше сформировать свою СУБД в связке с СУБД логистов?

1.5.* Можно ли все перечисленные выше задачи решить, используя одну СУБД? Если да, то какую именно?

### Задание 2
Приведите ответ в свободной форме.

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

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

```
Поле для вставки кода...
....
....
....
....
```
2.1. Пользователь пополняет баланс счёта телефона, распишите пошагово, какие действия должны произойти для того, чтобы транзакция завершилась успешно. Ориентируйтесь на шесть действий.

`При необходимости прикрепитe сюда скриншоты
![Название скриншота 2](ссылка на скриншот 2)`
ОТВЕТ:
Открытие транзакции. Открытие соединения с БД Банка;
Обращение к счету в банке и проверка наличия необходимых к переводу средств;
Блокировка для списания со счета в банке необходимой суммы;
Открытие соединения с БД Оператора сотовой связи;
Зачисление на лицевой счет суммы, равной списанной суммы со счета в банке;
Коммит изменений. Закрытие транзакции.
2.1.* Какие действия должны произойти, если пополнение счёта телефона происходило бы через автоплатёж?

ОТВЕТ:
Те же самые действия. Автоплатеж активирует выполнение транзакции в определенное время без участия пользователя.

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

### Задание 3

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

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

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

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

### Задание 4

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

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

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

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

3.1. Напишите пять преимуществ SQL-систем по отношению к NoSQL.

ОТВЕТ:
SQL-базы данных имеют лучшую поддержку транзакционности, что позволяет автоматически откатывать изменения при обнаружении проблемных транзакций и, таким образом, нивелировать возможные проблемы безопасности;
В SQL можно легко установить ограничения на доступ к данным для разных пользователей, а также применять различные аутентификационные механизмы для обеспечения безопасности данных;
Кэширование в SQL-базах данных позволяет улучшить производительность и более точно отслеживать изменения, что может помочь в оптимизации обработки запросов. SQL-базы данных имеют большую структурированность и лучшее соответствие этикету ACID;
SQL имеет мощный язык запросов, который позволяет обрабатывать сложные запросы;
SQL-базы данных имеют жёстко определённый формат хранения данных, что делает их наиболее подходящим выбором для представления сложных связанных данных.
3.1.* Какие, на ваш взгляд, преимущества у NewSQL систем перед SQL и NoSQL.

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

ОТВЕТ:
NewSQL (англ. новый SQL) — класс реляционных СУБД, возникших на рубеже 2000-х и 2010-х годов, стремящихся совместить в себе преимущества NoSQL и транзакционные требования классических систем управления базами данных. Термин предложен в 2011 году аналитиком 451 Group Мэтью Аслетом, отметившим потребность в данных таких системах у организаций, работающих с критическими данными (например, финансового сектора), которым требуются масштабируемые решения, в то время как решения NoSQL не могли обеспечить транзакционные механизмы и не отвечали требованиям надёжности данных.

Судя из описания из Вики, это попытка получения лучшего от SQL (транзакционные механизмы) и NoSQL (масштабируемость).

### Задание 4 Кластеры
Необходимо производить большое количество вычислений при работе с огромным количеством данных, под эту задачу выделено 1000 машин.

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

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

ОТВЕТ:
Масштабируемость, надежность, схронизованность, ребалансировка!

Популярность языка SQL и развитие “железа” породили новое движение — распределенные базы данных с языком запросов SQL. Среди них выделяется Google Spanner, которая гарантирует linearizability — глобальный порядок записи всех транзакций. Чтобы решить такую задачу в масштабах планеты, нужно синхронизировать время на серверах БД по всему миру. Компания Google использует для этого атомные часы, а для резерва — GPS-приемники.

Однако для простых смертных атомные часы пока остаются роскошью, поэтому авторы Spanner построили аналогичную БД с несколько меньшими гарантиями на порядок транзакций, но достаточными для большинства приложений. Эта БД называется CockroachDB (от англ. “таракан”) и своим названием олицетворяет живучесть кластера при сбоях железа или связей между дата-центрами. CockroachDB предоставляет полноценные распределенные транзакции и автоматическую ребалансировку кластера при потере ноды, что, вкупе с привычным языком запросов SQL, выгодно отличает ее от Cassandra. Из недостатков стоит отметить отсутствие полнотекстовых индексов и сравнительную молодость решения.

Задания,помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже разобраться в материале.