Базы данных.Практическое применение СУБД SQL и NoSOL-типа для применения проектирования информационных систем
Практическое применение баз данных SQL и NoSQL: руководство для проектировщиков
В современном мире информационных технологий обработка больших объемов данных является критически важной задачей. Эта книга представляет собой практическое руководство по применению баз данных SQL и NoSQL для проектирования информационных систем. Она предназначена для студентов, бакалавров, магистрантов, аспирантов и специалистов в области проектирования информационных систем и баз данных, а также для тех, кто занимается самообразованием.
Введение в базы данных и их типы
Книга начинается с обзора основных типов баз данных, включая реляционные базы данных (SQL) и документно-ориентированные базы данных (NoSQL). Авторы подчеркивают преимущества и недостатки каждого типа, а также рассматривают тенденции развития в области баз данных, такие как сближение SQL и NoSQL подходов.
Практическое применение SQL на примере MariaDB
Первая часть книги посвящена практическому применению баз данных SQL на примере MariaDB. Рассматривается установка MariaDB, освоение рабочего пространства MySQL Workbench, создание простых баз данных и таблиц, а также выполнение запросов. Особое внимание уделяется основам администрирования сервера MariaDB, включая создание пользователей, назначение ролей и привилегий, а также резервное копирование и восстановление баз данных.
Практическое применение NoSQL на примере MongoDB
Вторая часть книги посвящена практическому применению баз данных NoSQL на примере MongoDB. Рассматривается установка MongoDB и оболочки Robomongo, создание тестовой базы данных, добавление, обновление и удаление документов в коллекции. Подробно рассматриваются методы выборки данных из коллекций, включая использование селекторов запросов, сортировку, группировку и агрегатные функции. Также обсуждаются основы администрирования MongoDB, включая создание пользователей, ролей, сохранение и восстановление баз данных.
Проектирование баз данных: ER-моделирование
В книге также рассматривается процесс проектирования баз данных с использованием ER-моделей. Описываются основные понятия ER-моделирования, такие как сущности, атрибуты и связи. Рассматривается работа с инструментом MySQL Workbench для создания ER-моделей, включая прямой и обратный инжиниринг.
Заключение
Книга завершается обзором основных принципов работы с базами данных SQL и NoSQL, а также примерами практического использования. Авторы надеются, что данное руководство поможет читателям освоить современные системы обработки информации и построения баз данных.
Текст подготовлен языковой моделью и может содержать неточности.
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 02.03.02: Фундаментальная информатика и информационные технологии
- 02.03.03: Механика и математическое моделирование
- 03.03.02: Прикладная математика и информатика
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- 38.03.05: Бизнес-информатика
- ВО - Специалитет
- 09.05.01: Применение и эксплуатация автоматизированных систем специального назначения
БАЗЫ ДАННЫХ Практическое применение СУБД SQL и NoSQL-типа для проектирования информационных систем С.А. Мартишин, В.Л. Симонов, М.В. Храпченко Рекомендовано научно-методическим советом Национального исследовательского университета «МИЭТ» в качестве учебного пособия для бакалавров и магистрантов направлений подготовки 01.03.02 «Прикладная математика и информатика», 09.03.01 «Информатика и вычислительная техника», 09.03.02 «Информационные системы и технологии», 09.03.03 «Прикладная информатика», 09.03.04 «Программная инженерия», 27.03.04 «Управление в технических системах», 38.03.05 «Бизнес-информатика», 44.03.01 «Педагогическое образование (профиль “Информатика”)» УЧЕБНОЕ ПОСОБИЕ Москва ИД «ФОРУМ» — ИНФРА-М 202
УДК 004.6(075.8) ББК 32.973я73 М29 Мартишин С.А. М29 Базы данных. Практическое применение СУБД SQL и NoSQL типа для проектирования информационных систем : учебное пособие / С.А. Мартишин, В.Л. Симонов, М.В. Храпченко. — Москва : ИД «ФОРУМ» : ИНФРА-М, 2024. — 368 с. — (Высшее образование). ISBN 978-5-8199-0946-1 (ИД «ФОРУМ») ISBN 978-5-16-018662-7 (ИНФРА-М, print) ISBN 978-5-16-104936-5 (ИНФРА-М, online) Учебное пособие предназначено для изучения практического приме нения СУБД SQL и NoSQL-типа при проектировании информационных систем. Проведены аналогии между базами данных SQL и NoSQL-типа. Полученные теоретические знания закрепляются при выполнении цикла лабораторных работ. Работа с SQL СУБД изучается на примере СУБД MariaDB, рассмотрен вопрос использования хорошо зарекомендовавших себя в работе с MySQL приложений (например, phpMyAdmin, MySQL Workbench). Работа с NoSQL СУБД изучается на примере СУБД MongoDB с использованием оболочки Robomongo. Показана возможность использования универсального менеджера баз данных DBeaver для одновременной работы с СУБД MariaDB и MongoDB. Приведены примеры информационных систем на базе обоих типов СУБД SQL и NoSQL. Предназначено для студентов, бакалавров, магистрантов, аспирантов и специалистов в области проектирования информационных систем и баз данных. Пособие также полезно для лиц, занимающихся самообразованием. УДК 004.6(075.8) ББК 32.973я73 Р е ц е н з е н т ы: доктор технических наук, профессор кафедры информационных систем, сетей и безопасности ФГБОУ ВО г. Москвы «Российский государственный социальный университет» В.А. Сизов; доктор технических наук, доцент, директор военного института при ФГБОУ ВО г. Москвы «Московский авиационный институт (национальный исследовательский университет)» В.И. Гончаренко; доктор педагогических наук, доктор социологических наук, профес сор кафедры прикладной информатики ГАОУ ВО г. Москвы «Московский городской педагогический университет» А.И. Каптерев ISBN 978-5-8199-0946-1 (ИД «ФОРУМ») ISBN 978-5-16-018662-7 (ИНФРА-М, print) ISBN 978-5-16-104936-5 (ИНФРА-М, online) © Мартишин С.А., Симонов В.Л., Храпченко М.В., 2016 © ИД «ФОРУМ», 2016
Предисловие Для современного этапа развития информационных систем и технологий характерно несколько тенденций. Первая из них — быстрое уменьшение материальной ресурсоемкости современной продукции и такое же стремительное замещение материальных ресурсов информационными. Вторая тенденция — быстрая изменчивость всех составляющих информационных систем и технологий, включая аппаратное и программное обеспечения. Рассмотрим данную тенденцию более подробно. В зависимости от достигнутых технологических успехов на каждом из этапов развития человечества ставится соответствующая общественная проблема/задача. При этом главенствующим здесь является развитие технологий — изобретение полупроводников, памяти, элементов и систем телекоммуникаций и пр. Кроме того, технологическое развитие ненадолго остается достоянием какойто научной группы, института или даже страны. Конкуренция вынуждает всех участников быть на одинаковом уровне, активно добывая сведения друг у друга. Еще одной важной тенденцией современного этапа является все более возрастающий объем данных, и эти данные не только научного плана (биологические, геофизические, медицинские, генетические и другие исследования), но и значительный объем данных, генерируемых широким кругом пользователей — информация о сделанных покупках, приобретениях, денежных перечислениях, а также смс, звонки, размещение сообщений и фото в социальных сетях и пр. Указанные данные зачастую имеют различную структурированность, и они должны храниться, обрабатываться и использоваться для генерации отчетов, в том числе в онлайнрежиме (например, для оптимизации продаж крупными торговыми компаниями или для выявления террористических угроз из обмена сообщениями в социальных сетях). Следовательно, именно громадный объем и необходимость онлайнобра
ботки информации различной структурированности — вот проблема современного этапа. Нельзя не отметить следующее. В природе давно имеются и решены подобные задачи, и ученым и исследователям достаточно внимательно изучать жизнь и поведение живых существ и переносить свои наблюдения в лаборатории и разработки. Не случайно активно развивается наука «бионика» — от наблюдений за полетом птиц для совершенствования авиационных конструкций до организации жизни «общественных» насекомых, например муравьев, пчел и т. п., где так же, как у человека, имеются задачи организации многоуровневого уклада жизнедеятельности при соответствующем обмене большими объемами информации. Однако в природе такие сообщества характеризуются определенной статичностью в развитии, т. е. медленное движение по эволюционной лестнице сообществ живых существ не идет ни в какое сравнение с высокоскоростным развитием современной цивилизации, поэтому ученым остается внимательно наблюдать за жизнью таких сообществ, пытаться понять их, заимствовать алгоритмы и переносить (по возможности) на человеческую жизнь. В этом случае будет значительно быстрее достигнут желаемый успех в развитии человечества. Проводя анализ прошедших этапов развития техники и технологий, можно отметить проблематичность прогнозов для отдаленной перспективы изза некоей случайности в появлении технологических открытий. Тем не менее в краткосрочной перспективе очевидна необходимость обработки огромных объемов неодинаково структурированной информации, для чего разрабатываются новые и/или модернизируются существующие алгоритмы и системы обработки данных. 4 Предисловие
Введение Проблема обработки больших объемов данных («big data») достаточно острая. Множество областей — научные исследования, бизнесаналитика, социальные сети, крупные распределенные webприложения и др. — требуют возможности работы с разнородной и зачастую с различно структурированной информацией. При этом должна обеспечиваться одновременная работа серверов под большой нагрузкой, поскольку обработка данных во многих областях не допускает задержки. В ряде распределенных проектов пользователи одновременно и генерируют, и потребляют информацию, поэтому требуется обеспечение масштабируемости, надежности и согласованности данных. При этом данные сами по себе могут и не иметь сложной структуры (например, данные социальных сетей — фото, подписи, комментарии, лайки, ссылки и некоторые другие), однако их объем и скорость обработки очень высоки. Таким образом, имеют место следующие тенденции — значительное увеличение объема данных, подлежащих хранению и обработке; существенное возрастание количества пользователей информационных систем с одновременным ростом числа транзакций (включая мультмедийную информацию на мобильных устройствах); сложность структурирования (используя технологию систем управления реляционными базами данных) значительного объема хранимой информации. Следовательно, требования, которым должны отвечать современные информационные системы, состоят в необходимости быстрой обработки информации в условиях работы в многопользовательском режиме. Традиционные СУБД на основе реляционных таблиц (SQLориентированные СУБД), несмотря на большую популярность, не справляются с возрастающими требованиями. Поэтому в последние несколько лет были разработаны системы с иными подходами к обработке информации, лучше справляющиеся с поставленными задачами. Таким подходом является NoSQL («не только SQL»). NoSQLсистемы
не используют реляционную модель данных, в них отсутствует жесткая структура, поэтому значительно лучше обеспечивается горизонтальная масштабируемость и требуемая производительность. Однако наряду с достоинствами NoSQLсистемам присущи недостатки, например, для них не гарантировано выполнения требований ACID (Atomicity (Атомарности), Consistency (Согласованности), Isolation (Изолированности), Durability (Долговечности)). Также не имеется аналогов команд BEGIN TRANSACTION, COMMIT и ROLLBACK, следовательно, проблематично их использование для финансовых систем. NoSQLсистемы (СУБД NoSQL) значительно проще с точки зрения модели данных (по сравнению с классической реляционной моделью). При этом NoSQLсистемы могут основываться на различных моделях хранения данных. Наиболее распространенными в настоящее время являются: системы «ключ—значение» (Key—Value Stores), документноориентированные СУБД (Document Stores), Bigtableподобные базы данных (Extensible Record Stores / Wide Column Stores / Column Families) и базы данных на основе графов. Существует значительное количество разнообразных NoSQLсистем — порядка 150 единиц, что вызвано ориентированностью на различные области применения и использованием различных моделей данных. Однако здесь имеет место существенный недостаток — отсутствие единого стандарта требований к таким системам. Указанный стандарт позволил бы облегчить синхронизацию данных и дал бы возможность разработчикам использовать в одном проекте различные СУБД. Отметим, что в направлении разработки стандартов ведется определенная деятельность. Так, в 2011 году компания Couchbase объявила о выпуске нового языка запросов — UnQL (Unstructured Data Query Language), предназначенного для работы с неструктурированными данными. Синтаксис языка UnQL аналогичен синтаксису языка SQL, например, поддерживаются такие команды, как SELECT, DELETE, INSERT и UPDATE. Также имеет место тенденция сближения SQLи NoSQLподходов. При этом совершенствование реляционных СУБД ведется, в частности, в направлении поддержки нетрадиционных для них типов данных (XMLдокументов и XPathзапросов). Одновременно развиваются и СУБД NoSQL. Таким образом, для разработчика представляется логичным использование инструментария, более соответст6 Введение
вующего поставленной задаче, будь то реляционная СУБД, СУБД NoSQLтипа или их совместное использование в одной информационной системе для хранения разных типов информации. Отметим, что указанное совместное использование стало возможным благодаря появлению универсального средства для работы с SQL и NoSQL базами данных — DBeaver (относится к категории свободного программного обеспечения — СПО). Практически во всех курсах дисциплин, формирующих профессиональные компетенции выпускника и связанных с изучением информационных систем и баз данных (такие дисциплины, как «Базы данных», «Распределенные базы данных», «Проектирование информационных систем», «Управление данными», «Проектирование программного обеспечения АСОИиУ», «Сетевые операционные системы» и т. д.), необходимо получить представление об обоих подходах в построении информационных систем с использованием СУБД SQL и NoSQLтипа. Таким образом, целью настоящего учебного пособия является обучение приемам работы как с СУБД SQL, так и NoSQLтипа, проведение аналогии между указанными двумя типами СУБД, изучение как теоретических положений, так и практических навыков путем выполнения конкретных лабораторных работ. Насколько известно авторам, такое учебное пособие на сегодняшний день отсутствует, и представленное учебное пособие в определенной мере восполняет данный пробел. Задачи настоящего учебного пособия следующие: • изучение широко распространенной СУБД SQLтипа MariaDB (в качестве примера работы с SQLсистемами), являющейся ответвлением СУБД MySQL со свободным статусом. Для работы с MariaDB в пособии используются приложения, хорошо зарекомендовавшие себя в работе с MySQL, например phpMyAdmin, MySQL Workbench; • освоение (в качестве примера работы с NoSQLсистемами) приемов работы в СУБД MongoDB при помощи командной строки и оболочки Robomongo; • изучение приемов работы с мультплатформенным универсальным менеджером баз данных DBeaver (работает с большим числом СУБД как SQL, так и NoSQLтипа). DBeaver является инструментом, в значительной степени облегчающим проектирование, реализацию, модификацию и работу с различными СУБД. Введение 7
Учебное пособие построено в виде цикла лабораторных работ, последовательно проводящих учащихся через тонкости проектирования баз данных для обоих подходов — SQL и NoSQL. Каждая глава снабжена заданиями для самостоятельной работы и списком контрольных вопросов. В приложениях учебного пособия помещены сведения о целостности данных, описание семейства стандартов IDEF, спецификации BSON, селекторов запросов (Query Selectors). Формируемые профессиональные компетенции (ожидаемые результаты обучения) студентов следующие. Студент должен: знать: • основные этапы построения баз данных различных типов — SQL и NoSQL — при проектировании информационных систем; • компоненты программных комплексов и баз данных; • технологию проектирования, производства и сопровождения баз данных в информационных системах; • основы безопасной работы с СУБД (аутентификация, назначение прав доступа для пользователей, резервное копирование, восстановление системы после сбоев и пр.); уметь: • участвовать во всех фазах проектирования, разработки, изготовления и сопровождения баз данных для ИС; • разрабатывать модели компонентов информационных систем, включая модели баз данных; • осуществлять прямой и обратный инжиниринг; • составлять структурированные запросы к информационным ресурсам локализованных и распределенных баз данных (создавать, обновлять и удалять документы в коллекции СУБД MongoDB; осуществлять выборку данных из коллекций и т. д.); • создавать на базе выбранной СУБД ядро информационной системы и целостный программный продукт; владеть: • навыками по созданию программного средства с использованием базы данных; • основами администрирования сервера MariaDB; • навыками создания ERмоделей и работой с EERдиаграммами; • основами администрирования СУБД MongoDB; • навыками репликации и шардинга в СУБД MongoDB. 8 Введение
Часть I ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ СУБД SQLТИПА НА ПРИМЕРЕ MARIADB Введение. Общие сведения о СУБД MariaDB В январе 2009 года вышел первый релиз системы управления базами данных (СУБД) MariaDB, получившей название в честь младшей дочери ведущего разработчика Ульфа Майкла Видениуса (Ulf Michael Widenius). Именно Видениус был одним из авторов первой версии СУБД MySQL и основателем компании MySQL AB. Позже в связи с политикой лицензирования компании Oracle, которая в настоящее время является владельцем MySQL, занялся разработкой совместимой с MySQL СУБД MariaDB — СУБД (под лицензией GPL), права на которую принадлежат компании Майкла Видениуса Monty Program Ab. Команды, интерфейсы взаимодействия и API MariaDB совместимы с теми, которые используются в MySQL, т. е. библиотеки и приложения, которые работают с MySQL, также должны работать на MariaDB. Исходя из этого и из опасений, что Oracle сделает СУБД MySQL несвободным программным обеспечением, разработчики Fedora, начиная с 19 версии, заменили MySQL на MariaDB. Кратко характеризуя MariaDB, отметим, что данная СУБД поддерживает работу с таким популярным клиентским приложением для удаленного администрирования баз данных, как phpMyAdmin, наиболее популярными фреймворками, такими как Yii и Zend, системами управления содержимым (CMS), например WordPress и Plone, и даже Moodle — системой управления электронным обучением. Также заметим, что многие популярные версии ОС Linux Fedora (начиная с 19 версии), а также Gentoo, openSUSE, Red Hat Enterprise Linux поддерживают работу с MariaDB.
Лабораторная работа 1 УСТАНОВКА СУБД MARIADB И ОСВОЕНИЕ РАБОЧЕГО ПРОСТРАНСТВА MYSQL WORKBENCH ДЛЯ РАБОТЫ С СУБД MARIADB Цель: изучение принципов установки и работы с СУБД MariaDB. Установка MariaDB Дистрибутивы MariaDB для операционных систем (ОС) Linux, Solaris и Windows доступны на downloads.mariadb.org. Кроме того, MariaDB входит в состав дистрибутива FreeBSD, некоторых дистрибутивов на базе MAC OC и наиболее распространенных ОС Linux: Ubuntu, openSUSE, ALTLinux, Fedora, Red Hat Enterprise Linux, Debian, Gentoo и др. В настоящем учебном пособии в качестве операционной системы используется ОС Fedora (не ниже версии 20), как одна из наиболее простых в установке и подходящих для учебных целей операционных систем семейства Linux. В данный дистрибутив входит MariaDB, поэтому производим установку, набрав в командной строке следующее: # yum install mariadb mariadbserver Далее в терминале набираем команды (первая из которых запускает сервер, вторая дает возможность автоматического запуска при загрузке ОС): # systemctl start mariadb.service # systemctl enable mariadb.service Изменяем установки межсетевого экрана (для стандартной графической оболочки Gnome Обзор → Разное → Межсетевой экран) — создать порт «3306 tcp» (рис. 1.1). Также необходимо в настройках