Skip to content

niko0la/the-database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

Домашнее задание к занятию «Базы данных, их типы»

Инструкция по выполнению домашнего задания Сделайте fork репозитория c шаблоном решения к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). Выполните клонирование этого репозитория к себе на ПК с помощью команды git clone. Выполните домашнее задание и заполните у себя локально этот файл README.md: впишите вверху название занятия и ваши фамилию и имя; в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; для корректного добавления скриншотов воспользуйтесь инструкцией «Как вставить скриншот в шаблон с решением»; при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в инструкции по MarkDown. После завершения работы над домашним заданием сделайте коммит (git commit -m "comment") и отправьте его на Github (git push origin). Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. Желаем успехов в выполнении домашнего задания.

Задание 1. СУБД

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

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

1.1. Бюджетирование проектов с дальнейшим формированием финансовых аналитических отчётов и прогнозирования рисков. СУБД должна гарантировать целостность и чёткую структуру данных.

Ответ 1.1

Обычная реляционная база данных идеально подходит. Реляционная база данных имеет как раз четкую структуру данных, она как никто гарантирует их целостность. Использование языка SQL позволит быстро формировать финансовую отчетность, Также аналитик некого предприятия, которое занимается к примеру продажей недвижимости, сможет проанализировать рост/падение цен на основании последних 10 лет, узнать как менялись условия на рынке во время экономического или политического кризиса и заранее подстроить стратегию в таких случаях. 1.1.* Хеширование стало занимать длительно время, какое API можно использовать для ускорения работы?

Ответ 1.1*

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

Ответ 1.2

Для CRM лучше всего использовать реляционную СУБД к примеру MySQL. Для любого бизнеса, использующего CRM, база данных, связанная с клиентом, очень важна для придания стратегии и тактики, основанной на клиентах. С помощью языка SQL можно провести аналитику поведения клиента, оптимизировать бизнес-процессы и т.д.

1.2.* Можно ли эту задачу закрыть одной СУБД? И если да, то какой именно СУБД и какой реализацией?

Ответ 1.2*

MySQL. К примеру подключив лендинг к этой базе данных, можно делать различные запросы, выборки и т.д. К примеру отправить всем пользователям которые подписались на рассылку или которые давно не заходили на сайт сообщение на почту, завлекающее на посещение нашего веб ресурса. 1.3. Отдел контроля качества решил создать базу по корпоративным нормам и правилам, обучающему материалу и так далее, сформированную согласно структуре компании. СУБД должна иметь простую и понятную структуру.

Ответ 1.3

Документо-ориентированные СУБД подойдет, так как все структурировано в виде документов.

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

Ответ 1.3*

MySQL, можно просто хранить информацию в виде json или xml объектах, будет похоже на структуру документо-ориентированной СУБД.

1.4. Департамент логистики нуждается в решении задач по быстрому формированию маршрутов доставки материалов по объектам и распределению курьеров по маршрутам с доставкой документов. СУБД должна уметь быстро работать со связями.

Ответ 1.4

Использование реляционной базы данных SQL.

1.4.* Можно ли к этой СУБД подключить отдел закупок или для них лучше сформировать свою СУБД в связке с СУБД логистов?

Ответ 1.4*

Можно.

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

Ответ 1.5*

Модульная база данных SingleStore, допускающая распределение баз данных по нескольким узлам, поддерживает принципы ACID, язык SQL. Позиционируется как система класса NewSQL — сочетающая принципы горизонтальной масштабируемости NoSQL-систем и транзакционные свойства и функции классических реляционных СУБД. Или база данных с открытым исходным кодом, чтобы подстроить ее под себя.

Задание 2. Транзакции

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

Ответ 2.1

  1. Проверить баланс пользователя A.
  2. Найти пользователя B, если не найден транзакция не завершится.
  3. Уменьшить баланс пользователя A на 100 единиц, если сумма платежа<баланса, иначе транзакция не завершится.
  4. Увеличить баланс пользователя B на 100 единиц.
  5. Увеличить значение, когда оканчивается тариф у пользователя A на один месяц. 2.1.* Какие действия должны произойти, если пополнение счёта телефона происходило бы через автоплатёж?

Ответ 2.1*

  1. Найти всех пользователей, у которых в столбе "Автоплатеж" значение "True".
  2. Найти всех пользователей, у которых сегодня заканчивается тариф.
  3. Уменшить баланс пользователя A на 100 единиц, если платеж<баланса транзакция не завершится.
  4. Увеличить баланс пользователя B на 100 единиц.
  5. Увеличить значение, когда оканчивается тариф у пользователя A на один месяц.

Задание 3. SQL vs NoSQL

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

Ответ 3.1

  1. Обладают жесткой структурой, а это позволяет переносить одну и ту же БД на разные СУБД
  2. Данные хранятся структурированно.
  3. Обеспечивают целостность данных.
  4. Структура не подвержена частым изменением.
  5. Если организация не находится в стадии экспоненциального роста, вероятно, не найдётся убедительных причин использовать БД, которая позволяет достаточно вольно обращаться с типами данных и нацелена на обработку огромных объёмов информации. 3.1.* Какие, на ваш взгляд, преимущества у NewSQL систем перед SQL и NoSQL.

Ответ 3.1*

NewSQL — это уникальная система баз данных, которая сочетает в себе совместимость с ACID и горизонтальное масштабирование . Система базы данных стремится сохранить лучшее из обоих миров. Транзакции на основе OLTP и высокая производительность NoSQL сочетаются в одном решении.

Задание 4. Кластеры

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

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

Ответ 4

Лучшее решение для этого Hadoop, она состоит из таких компонентов как: 1.Hadoop Distributed File System (HDFS) – распределённая файловая система, позволяющая хранить информацию практически неограниченного объёма. 2.Hadoop YARN – фреймворк для управления ресурсами кластера и менеджмента задач, в том числе включает фреймворк MapReduce. То есть можно хранить неограниченное кол-во данных и управлять кластером. Также существует большое количество проектов непосредственно связанных с Hadoop, но не входящих в Hadoop core: Hive – инструмент для SQL-like запросов над большими данными (превращает SQL-запросы в серию MapReduce–задач); Pig – язык программирования для анализа данных на высоком уровне. Одна строчка кода на этом языке может превратиться в последовательность MapReduce-задач; Hbase – колоночная база данных, реализующая парадигму BigTable; Cassandra – высокопроизводительная распределенная key-value база данных; ZooKeeper – сервис для распределённого хранения конфигурации и синхронизации изменений этой конфигурации; Mahout – библиотека и движок машинного обучения на больших данных. Можно подстроить систему под свои нужды. Данное решение широко используется в поисковых системах типа Google Yahoo и тд, для быстрой обработки графических данных, хранение и сортировка огромных объемов данных, и разбор содержимого чрезвычайно больших файлов.

About

Домашнее задание к занятию «Базы данных, их типы»

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published