diff --git a/README.md b/README.md index 64ef33813a..b7d30d0abb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента` +# Домашнее задание к занятию "`«Базы данных, их типы»`" - `Брюханов Александр` ### Инструкция по выполнению домашнего задания @@ -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. Из недостатков стоит отметить отсутствие полнотекстовых индексов и сравнительную молодость решения. + +Задания,помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже разобраться в материале. +