Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala
Покупка
Основная коллекция
Тематика:
Проектирование баз и банков данных
Издательство:
НИЦ ИНФРА-М
Год издания: 2024
Кол-во страниц: 235
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-16-019845-3
ISBN-онлайн: 978-5-16-107636-1
Артикул: 704388.06.01
Предназначено для изучения и создания информационных систем и приложений с использованием распределенных баз данных и файловых систем. Для создания информационных систем на основе распределенных баз данных используется серверная часть стека программного обеспечения MEAN, включающая в себя СУБД NoSQL-типа MongoDB, платформу Node и фреймворк Express.Рассмотрены также основы администрирования и репликации в СУБД MongoDB. В качестве инструмента моделирования объектов баз данных используется Mongoose.js. С целью создания фронтенд частей сайтов и веб-приложений изучается применение свободного программного обеспечения Bootstrap, HTML5 Boilerplate, Initializr. Приводится детальный процесс разработки и тестирования API REST-приложения на основе модели MVC. В результате обучающиеся будут способны создавать полноценную распределенную информационную систему на основе современных СУБД NoSQL-типа. Для создания приложений также используются распределенные хранилища данных (больших массивов неструктурированной информации) на примере Hadoop Apache с инструментарием Spark и Scala.
Предназначено для бакалавров, магистрантов, аспирантов и специалистов в области проектирования распределенных информационных систем на основе современных СУБД NoSQL-типа, создания мобильных и интернет-приложений. Также полезно для лиц, занимающихся самообразованием.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- 38.03.05: Бизнес-информатика
- ВО - Магистратура
- 01.04.02: Прикладная математика и информатика
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
- 38.04.05: Бизнес-информатика
ГРНТИ:
Только для владельцев печатной версии книги: чтобы получить доступ к дополнительным материалам, пожалуйста, введите последнее слово на странице №96 Вашего печатного экземпляра.
Ввести кодовое слово
ошибка
-
Приложение.pdf
-
Программа.zip
Скопировать запись
Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala, 2023, 704388.05.01
Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala, 2021, 704388.04.01
Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala, 2020, 704388.02.01
Фрагмент текстового слоя документа размещен для индексирующих роботов
БАЗЫ ДАННЫХ РАБОТА С РАСПРЕДЕЛЕННЫМИ БАЗАМИ ДАННЫХ И ФАЙЛОВЫМИ СИСТЕМАМИ НА ПРИМЕРЕ MONGODB И HDFS С ИСПОЛЬЗОВАНИЕМ NODE.JS, EXPRESS.JS, APACHE SPARK И SCALA С.А. МАРТИШИН В.Л. СИМОНОВ М.В. ХРАПЧЕНКО Рекомендовано в качестве учебного пособия для студентов, бакалавров и магистрантов направлений подготовки «Информатика и вычислительная техника», «Информационные системы и технологии», «Программная инженерия», «Прикладная математика и информатика», «Прикладная информатика», «Управление в технических системах», «Бизнес-информатика», «Педагогическое образование» (профиль «Информатика») УЧЕБНОЕ ПОСОБИЕ Москва ИНФРА-М 202
УДК 004.65(075.8) ББК 32.97я73 М29 Мартишин С.А. М29 Базы данных: Работа с распределенными базами данных и файловы ми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala : учебное пособие / С.А. Мартишин, В.Л. Симонов, М.В. Храпченко. — Москва : ИНФРА-М, 2024. — 235 с. + Доп. материалы [Электронный ресурс]. — (Высшее образование). — DOI 10.12737/textbook_5cc063e18baca3.52928692. ISBN 978-5-16-019845-3 (print) ISBN 978-5-16-107636-1 (online) Предназначено для изучения и создания информационных систем и приложений с использованием распределенных баз данных и файловых систем. Для создания информационных систем на основе распределенных баз данных используется серверная часть стека программного обеспечения MEAN, включающая в себя СУБД NoSQL-типа MongoDB, платформу Node и фреймворк Express. Рассмотрены также основы администрирования и репликации в СУБД MongoDB. В качестве инструмента моделирования объектов баз данных используется Mongoose.js. С целью создания фронтенд частей сайтов и веб-приложений изучается применение свободного программного обеспечения Bootstrap, HTML5 Boilerplate, Initializr. Приводится детальный процесс разработки и тестирования API REST-приложения на основе модели MVC. В результате обучающиеся будут способны создавать полноценную распределен ную информационную систему на основе современных СУБД NoSQL-типа. Для создания приложений также используются распределенные хранилища дан ных (больших массивов неструктурированной информации) на примере Hadoop Apache с инструментарием Spark и Scala. Предназначено для бакалавров, магистрантов, аспирантов и специалистов в об ласти проектирования распределенных информационных систем на основе современных СУБД NoSQL-типа, создания мобильных и интернет-приложений. Также полезно для лиц, занимающихся самообразованием. УДК 004.65(075.8) ББК 32.97я73 Р е ц е н з е н т ы: Гончаренко В.И., доктор технических наук, доцент, директор Воен ного института Московского авиационного института (национального исследовательского университета); Серов В.В., доктор технических наук, профессор, профессор ка федры информационных систем, сетей и безопасности Российского государственного социального университета, действительный член Международной академии информатизации ISBN 978-5-16-019845-3 (print) ISBN 978-5-16-107636-1 (online) Материалы, отмеченные знаком , доступны в электронно-библиотечной системе Znanium © Мартишин С.А., Симонов В.Л., Храпченко М.В., 2019
Список принятых сокращений 1. ACID - Atomicity (атомарность), Consistency (согласованность), Isolation (изолированность), Durability (долговечность) 2. API - Application Programming Interface, программный интерфейс приложения 3. BSON - Binary JavaScript Object Notation, формат электронного обмена цифровыми данными (JavaScript) 4. CRLF - Carriage Return Line Feed, перевод строки, разрыв строки 5. CSS - Cascading Style Sheets, каскадная таблица стилей 6. FOSS - Free and Open-Source Software, свободное и свободно распространяемое программное обеспечение 7. HDFS - Hadoop Distributed File System, распределенная файловая система 8. HTML - Hyper Text Markup Language, гипертекстовый язык разметки 9. HTML5 - Hyper Text Markup Language, гипертекстовый язык разметки, версия 5 10. JSON - JavaScript Object Notation, формат обмена данными 11. LAMP - Linux, Apache, MySQL и PHP, комплекс программного обеспечения 12. LESS - динамический язык стилей 13. MEAN - MongoDB, Express.js, Angular.js, Node.js 14. MVC - Model – View – Controller, модель – представление – контроллер 15. NPM - Node Package Manager, менеджер пакетов, входящий в состав Node.js 16. NoSQL - Not Only SQL, не только SQL 17. ODM - Object Data Modelling, позволяет сопоставлять объекты классов и документы коллекций из базы данных 18. ORM - Object-relational mapping – технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования 19. PCRE - Perl-Compatible Regular Expression, Perl-совместимое регулярное выражение 20. POSIX - Portable Operating System Interface – набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API) 21. RDD - Resilient Distributed Dataset – набор read-only объектов, распределенных по машинам кластера 22. REPL - read-eval-print loop – форма организации интерактивной среды программирования в рамках средств интерфейса
командной строки 23. REST - Representational State Transfer – архитектурный стиль взаимодействия компонентов распределенного приложения в сети 24. Sass - Syntactically Awesome Stylesheets, метаязык на основе CSS 25. SOAP - Simple Object Access Protocol, протокол обмена структурированными сообщениями в распределенной вычислительной среде 26. SPA - Single Page Application, одностраничное приложение 27. UID - User identifier, идентификатор пользователя 28. YARN - пакетный менеджер 29. ПО - программное обеспечение 30. САР - Consistency, Availability, Partition Tolerance, теорема о том, что в любой реализации распределенных вычислений возможно обеспечить не более двух из трех свойств: согласованность, доступность, устойчивость к разделению 31. СПО - свободное и свободно-распространяемое программное обеспечение 32. СУБД - система управления базами данных
Предисловие В области технологий обработки информации и данных ситуация изменяется достаточно быстро – проходит несколько месяцев, лет, и технологии существенно меняются. Не случайно опытные пользователи знают, что достаточно часто (раз в несколько лет) приходится переносить данные (либо целые информационные системы) на другую платформу. Указанные изменения связаны как с деятельностью разработчиков информационных систем и СУБД (иногда являющихся разбросанной по всему миру группой добровольно работающих специалистов), так и с политикой лицензирования крупных компаний – владельцев ПО. При этом достаточно мощным и динамически развивающимся направлением является разработка свободного программного обеспечения, где активно впитываются новые тенденции и вырабатываются решения, отвечающие на современные вызовы и зачастую опережающие их. Так, на наших глазах широко использовавшийся еще недавно стек LAMP постепенно уступает позиции стеку MEAN; традиционные СУБД SQL-типа уступают место, или, по крайней мере, используются также широко, как и более современные СУБД NoSQL-типа; язык сценариев JavaScript стал широко применяться для реализации как серверной, так и клиентской частей ПО и постепенно теснит иные ранее использовавшиеся языки. Поэтому всем участникам необходимо постоянно прилагать интеллектуальные усилия: студентам – учиться, осваивая как существующие, так и перспективные технологии, преподавателям и работникам промышленности – постоянно повышать свою квалификацию, а ученым и разработчикам – писать такие книги, которые были бы просты, доходчивы и увлекательно описывали новые технологии. Коллектив авторов надеется, что предлагаемое учебное пособие как раз и принесет существенную пользу всем указанным категориям учащихся при изучении современных систем обработки информации и построения баз данных. Учебное пособие может быть использовано (полностью или частично) при изучении таких дисциплин, как:
базы данных; распределенные и удаленные базы данных; разработка интернет-приложений; проектирование и администрирование информационных систем; программирование мобильных устройств; web-программирование; программирование; технологии программирования; специальные разделы программирования; тестирование и внедрение программного обеспечения; социальная информатика. На момент издания книги использовались последние доступные на данный момент версии программного обеспечения. Все используемое в книге программное обеспечение относится к категории СПО – свободное программное обеспечение. СПО в качестве базы для обучения было выбрано по причинам доступности, практически автоматического обновления версий, отсутствия необходимости думать о лицензиях. При этом ошибки выявляются большим числом пользователей, и в устранении ошибок могут принимать участие все желающие. По указанным причинам СПО развивается так же интенсивно, как и проприетарное ПО. Разумеется, не последним фактором при использовании СПО является и значительная экономия средств обучающимися.
Раздел I. Освоение приемов работы с системой управления базами данных MongoDB Общие сведения о стеке серверного программного обеспечения MEAN и о СУБД MongoDB Развитие вычислительной техники и связанных с ней технологий разработки программного обеспечения (ПО) диктует новые требования в плане обучения студентов по наиболее динамично развивающимся направлениям подготовки. Широкое распространение облачных вычислений, совершенствование способов взаимодействия и распределения нагрузки в клиент-серверных приложениях, смещение акцентов на распределенный характер хранения и обработки данных приводят к появлению новых технологий, позволяющих разработчикам упростить и сделать более качественным процесс создания ПО. В начале 2000-х гг. для создания клиент-серверных приложений на СПО (свободное и свободно-распространяемое программное обеспечение) широко использовался LAMP (Linux, Apache, MySQL и PHP) в сочетании со средствами разметки страниц: HTML, таблицами стилей CSS и языком сценариев JavaScript. В настоящее же время в качестве СПО операционной системы по прежнему используется Linux, а роль сервера Apache в значительной степени изменилась. В качестве систем управления базами данных (СУБД), наряду с MySQL, широко используется MariaDB, что связано с изменением прав собственности на MySQL. Также помимо традиционных реляционных СУБД широкое применение находят NoSQL (не только SQL) базы данных, например СУБД MongoDB. Что касается языка PHP, то, несмотря на его широкое использование и наличие значительного количества разнообразных функций, в последнее время его популярность снизилась. С появлением платформы Node.js значительная часть функциональности языка PHP была реализована в
библиотеках, написанных на JavaScript, что упростило логику программного кода и ускорило процесс его написания. Средства разметки станиц HTML и таблицы стилей CSS также были модернизированы. В настоящее время им на смену пришли HTML5, LESS (динамический язык стилей) и фреймворк Bootstrap. Были разработаны библиотеки (наиболее популярная jQuery) для облегчения взаимодействия JavaScript и HTML в клиентской части. Однако самое существенное изменение произошло в идеологии использования языка сценариев JavaScript для реализации серверной части ПО, что привело к появлению платформы Node.js [1.1]. Популярность Node.js объясняется имеющимися функциональными возможностями, простотой ее освоения, а также тем, что язык JavaScript используется и на стороне сервера, поэтому разработчики могут создавать веб приложения для клиентской и серверной части на одном языке. Кроме того, широко распространенный формат обмена данными JSON является собственным форматом JavaScript, поэтому платформу Node удобно использовать в связке с различными NoSQL базами данных, поддерживающими этот формат данных (например, в MongoDB). Все это привело к появлению стека серверного программного обеспечения MEAN (MongoDB, Express.js, Angular.js, Node.js) [1.2]. MEAN – комплекс серверного программного обеспечения, который, как в недавнее время LAMP, используется для разработки web-приложений. Поскольку все компоненты стека поддерживают программирование на JavaScript, то как серверная, так и клиентская части MEAN-приложений могут быть написаны на JavaScript. Компоненты стека: • MongoDB — документо-ориентированная СУБД; • Express.js — каркас веб-приложений, работающий поверх Node.js; • Angular.js – MVC-фреймворк (Model – View – Controller – «Модель – Представление – Контроллер») для интерфейсной части web-приложения, работающей в браузере;
• Node.js — JavaScript платформа для серверной разработки. Заметим, что MEAN является кросс-платформенным стеком, который не зависит от специфики операционной системы и в значительно большей степени привязан к JavaScript, поэтому Linux больше не является частью стека. MEAN хорошо подходит для создания одностраничных web–приложений SPA (Single Page Application). Система управления базами данных NoSQL-типа MongoDB В последние годы появилось значительное количество систем управления базами данных (СУБД) СПО, которые обладают высокой производительностью, бесплатны и хорошо документированы. Кроме того, многие из них предназначены для использования в ОС Linux с широко распространенным сервером Apache. Заметим также, что не все эти СУБД поддерживают реляционную модель данных: все больше начали распространяться базы данных, основанные на модели NoSQL («не только SQL»), что позволяет оптимальным образом хранить данные нерегулярной структуры, не создавая избыточности. Чаще всего такие СУБД имеют клиент-серверную архитектуру и являются распределенными. Иными словами, подавляющее большинство пользователей имеют интерфейс «тонкий клиент», поэтому основная часть задач по обработке информации переносится на некоторый ресурс, например, сервер или облако, что также позволяет оптимизировать хранение данных и скорость вычислений. Необходимо помнить, что СУБД NoSQL не гарантируют выполнения требований ACID (Atomicity (Атомарности), Consistency (Согласованности), Isolation (Изолированности), Durability (Долговечности)), а также не имеют аналогов команд BEGIN TRANSACTION, COMMIT и ROLLBACK, в связи с чем их нежелательно использовать, например, для финансовых систем, где транзакции необходимы. Тем не менее, для систем со значительным количеством клиентов, в которых приоритетными свойствами являются доступность и устойчивость к разделению (теорема САР), использование
NoSQL имеет значительные преимущества, как для пользователей, так и для разработчиков: снижение времени отклика, использование различных типов хранилищ (в том числе облачных), возможность обойтись без создания схемы данных, за счет чего сокращается требуемое время разработки. MongoDB (от англ. humongous – огромный) является документо ориентированной кросс-платформенной системой СУБД и относится к базам данных NoSQL. Написана на языке C++. MongoDB является бесплатной СУБД с открытым исходным кодом (лицензия GNU Affero General Public License). Скачать версию для установки и документацию можно с сайта [1.3]. На сайте для MongoDB имеются пакеты дистрибутивов для различных ОС (Windows, Linux, MacOS). Согласно последним данным, MongoDB является наиболее популярной NoSQL базой данных, которая строится не на основе таблиц реляционной структуры, а на JSON-подобных документах, хранящих данные в виде «ключ − значение» (документо-ориентированное хранение), а также дает возможности гибкой поддержки индекса, автоматического шардинга, большого количества запросов, встроенных репликаций, т.е. является распределенной базой данных с возможностями горизонтального масштабирования. Также следует отметить поддержку спецификации хранения GridFS для хранения и извлечения файлов, превышающих предельный размер BSON-документа 16 МБ, или обеспечения доступа к файлу меньшего размера без его полной загрузки в память. Кроме того, помимо того, что MongoDB является частью стека MEAN (что обеспечивает хорошую программную совместимость), для нее также был разработан модуль Mongoose. Mongoose представляет специальную ODM библиотеку (Object Data Modelling), что позволяет упростить моделирование объектов MongoDB для Node.js [1.4] (http://mongoosejs.com). JSON (от англ. JavaScript Object Notation) − текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком, считается независимым от языка и может использоваться практически