Моделирование Данных И Базы Данных Для Первокурсников

Мне как первокурснику Университет Иннополис люди часто спрашивают, что мы здесь делаем.

Специально для хаба я написал рассказ о том, как мы «пилили» проект DMD.

Моделирование данных и базы данных для первокурсников

Внимание! Автор не гарантирует, что его шутки будут понятными и смешными.

В нашем университете есть базовый (профильный) курс, который преподают абсолютно всем – «Моделирование данных и базы данных» (DMD).

Как следует из названия, в этом курсе нас изучают базы данных: что это такое, для чего они нужны, как их использовать и что еще происходит. В основном мы работаем с СУБД PostgreSQL, то есть работаем с реляционной базой данных.

Мне как новичку эта тема очень интересна, так как база данных — это «хранилище» информации.

Что ж, тот, кто владеет информацией, владеет миром.

Преподавательский состав данного курса следующий:

  1. Главный инструктор – Цян Цюй (Китай),
  2. Преподаватель средней школы – Садег Нобари (Иран),
  3. Помощник инструктора – Джуён Ли (Южная Корея) и Вакас Наваз (Пакистан),
  4. Ассистент преподавателя – Марат Валиев (Россия).

В основном все лекции читает Цян Цюй, но иногда лекция делится на две части, где к нему присоединяется Садег Нобари.

Марат Валиев проводит семинары для студентов-первокурсников.

Также стоит отметить, что лекции проходят на английском языке (даже несмотря на слегка заметный акцент преподавателей, все воспринимается легко и четко).

В один солнечный сентябрьский день преподаватели сообщили нам радостную новость: «Ребята, на нашем курсе вы должны разработать систему управления публикациями (статьями).

Это будет ваш проект, стоимость которого составляет 15% от вашего окончательного результата по предмету».

Весь проект разделен на пять частей:

  1. Разработать и внедрить реляционную модель с использованием существующих СУБД.

  2. Разработайте веб-интерфейс для взаимодействия с базой данных, созданной на этапе 1.
  3. Разработайте собственную СУБД и свяжите ее с той, которая использовалась на первом этапе.

  4. Разработайте веб-приложение, которое в режиме реального времени показывает используемую память, загрузку процессора и дисковый ввод-вывод.
  5. Креативная идея
Чтобы начать работу над проектом, вам необходимо разделить группу на команды.

Требование: в команде не более трех человек.

В итоге получилось, что из одного человека получилась серьезная команда.

Итак, мне посчастливилось работать с тремя из нас, и нас объединяло то, что никто из нас не делал подобных вещей.

Надо, надо (не хочется провалить курс, но всё равно интересно).

Первокурсникам было поручено пройти только два этапа.

Для первая фаза нужно было: создать ER-модель и Реляционную модель нашей будущей базы данных, нормализовать таблицы, найти сайт с научными статьями и загрузить данные по этим статьям в нашу базу (не менее миллиона статей), написать SQL-запросы для ранжирования этих статей и поисковых запросов по похожим статьям.

Идти! Для начала мы создали ER-модель нашей базы данных (сразу скажу, что хорошая модель вышла примерно после трёх-четырёх доработок).

Далее мы преобразовали все это в реляционную модель и нормализовали ее с помощью BCNF. Все получилось просто великолепно.

После долгих и мучительных попыток написать парсер на PHP было решено заняться гуглением.

В результате был найден Python-граббер, который скачивает информацию о статьях с сайта и переводит это все в XML-файлы.

В результате мы получили 1074 XML-файла, каждый из которых содержал 1000 записей статей.

Сайт, с которого всё скачивалось — arxiv.org. Теперь нам нужно проанализировать все эти файлы в нашей базе данных.

Для обработки XML-файла мы использовали DOM-парсер на Java. В нем мы подключились к нашей базе данных и отправили данные с помощью драйвера JDBC, любезно предоставленного PostgreSQL. В результате мы получили базу данных с 1 074 000 записей.

Ух ты! Половина этапа завершена.

Пришло время запросов, но о них будет написано позже.

Время пришло вторая фаза .

Команда была разделена на back-end и front-end. Для передней части использовались HTML, CSS и JavaScript. Первым шагом было создание регистрационной формы и подключение к ней базы данных для создания новых пользователей и проверки правильности данных, введенных уже зарегистрированными пользователями.

Никакой электронной рассылки, только всплывающее окно, сообщающее об успешной регистрации.

Для формы регистрации использовались готовые шаблоны на JavaScript и PHP для подключения к базе данных.

Далее последовало создание главных страниц нашего сайта.

Изначально должно было быть 5 страниц, но в итоге было создано три - Главная, Добавить (добавление новой статьи) и Поиск (для поиска статей в базе данных).

На последних двух страницах использовались простые формы поиска и добавления, дополненные CSS для большей красоты.

На главной странице расположены две диаграммы, отображающие количество статей с 1996 по 2015 год и количество статей в 6 основных категориях.

Для этого использовались готовые шаблоны на JavaScript и PHP для выбора из необходимой базы данных.

На этом этапе фронтенд завершает свою деятельность и передает назад. Назад делится на 4 этапа.

На первом этапе были написаны поисковые запросы.

Поиск осуществляется по ключевому слову, категории, дате публикации или различным комбинациям вышеперечисленного.

Поиск по ключевым словам — это поиск по названию, резюме и категории.

Результаты отображаются по релевантности: соответствие заголовка идет первым, соответствие категории — последним.

Для быстрого получения поиска реализован полнотекстовый поиск и индекс GIN с типом tsvector. GIN был выбран потому, что он выполняет быстрый и эффективный поиск в базе данных.

На втором этапе были написаны методы сортировки.

По умолчанию установлена сортировка по релевантности (с использованием алгоритма Левенштейна).

Также возможна сортировка по дате (пользователь может выбрать этот тип).

Третий этап — запросы на добавление статей.

Реализовано с помощью простых INSERT. Вроде бы все просто, но нужно было учесть один момент — защиту от SQL-инъекций.

Для этого для введенных данных использовалась функция PHP pg_escape_string. Тот же метод был реализован при создании регистрационной формы.

Последний этап – обновление и удаление статей.

Опять же, используются стандартные SQL-запросы и обеспечивается защита от внедрения.

На данный момент обе фазы и наш проект завершены.

Ниже вы можете увидеть примеры некоторых работ первокурсников.



Моделирование данных и базы данных для первокурсников



Моделирование данных и базы данных для первокурсников



Моделирование данных и базы данных для первокурсников



Моделирование данных и базы данных для первокурсников



Моделирование данных и базы данных для первокурсников

На этом завершаю рассказ о первом опыте создания проектов.

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

Хороших дней/ночей Вам и успехов в учёбе/работе! Подавайте заявку в университет, конкурс на гранты на следующий учебный год уже открыт в apply.innopolis.ru Марсель Гусманов, студент 1 курса бакалавриата Зимние фотографии кампуса Университета Иннополис Университет

Моделирование данных и базы данных для первокурсников

Общежития

Моделирование данных и базы данных для первокурсников

Спортивный комплекс

Моделирование данных и базы данных для первокурсников

Теги: #иннополис #университет #подбор персонала #базы данных #sql #Big Data

Вместе с данным постом часто просматривают: