Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala

Покупка
Основная коллекция
Артикул: 719616.01.01
К покупке доступен более свежий выпуск Перейти
Предназначено для изучения и создания информационных систем и приложений с использованием распределенных баз данных и файловых систем. Для создания информационных систем на основе распределенных баз данных используется серверная часть стека программного обеспечения MEAN, включающая в себя СУБД NoSQL-типа MongoDB, платформу Node и фреймворк Express. Рассмотрены также основы администрирования и репликации в СУБД MongoDB. В качестве инструмента моделирования объектов баз данных используется Mongoose.js. С целью создания фронтенд частей сайтов и веб-приложений изучается применение свободного программного обеспечения Bootstrap, HTML5 Boilerplate, Initializr. Приводится детальный процесс разработки и тестирования API REST-приложения на основе модели MVC. В результате обучающиеся будут способны создавать полноценную распределенную информационную систему на основе современных СУБД NoSQL-типа. Для создания приложений также используются распределенные хранилища данных (больших массивов неструктурированной информации) на примере Hadoop Apache с инструментарием Spark и Scala. Для студентов учреждений среднего профессионального образования, обучающихся по укрупненной группе специальностей 09.02.00 «Информатика и вычислительная техника», а также для специалистов в области проектирования распределенных информационных систем на основе современных СУБД NoSQL-типа, создания мобильных и интернет-приложений.

Только для владельцев печатной версии книги: чтобы получить доступ к дополнительным материалам, пожалуйста, введите последнее слово на странице №62 Вашего печатного экземпляра.

Мартишин, С. А. Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, Express.js, Apache Spark и Scala : учебное пособие / С.А. Мартишин, В.Л. Симонов, М.В. Храпченко. — Москва : ИНФРА-М, 2020. — 235 с. + Доп. материалы [Электронный ресурс]. — (Среднее профессиональное образование). - ISBN 978-5-16-015643-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1044630 (дата обращения: 20.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
БАЗЫ ДАННЫХ

РАБОТА С РАСПРЕДЕЛЕННЫМИ БАЗАМИ ДАННЫХ 
И ФАЙЛОВЫМИ СИСТЕМАМИ НА ПРИМЕРЕ 
MONGODB И HDFS С ИСПОЛЬЗОВАНИЕМ NODE.JS, 
EXPRESS.JS, APACHE SPARK И SCALA

С.А. МАРТИШИН
В.Л. СИМОНОВ
М.В. ХРАПЧЕНКО

Рекомендовано Межрегиональным учебно-методическим советом 
профессионального образования в качестве учебного пособия 
для учебных заведений, реализующих программу среднего 
профессионального образования по укрупненной группе специальностей 
09.02.00 «Информатика и вычислительная техника» 
(протокол № 12 от 24.06.2019)

Москва
ИНФРА-М
2020

УЧЕБНОЕ ПОСОБИЕ

УДК 004.65(075.32)
ББК 32.97я723
 
М29

Мартишин С.А.
М29  
Базы данных: Работа с распределенными базами данных и файловыми системами на примере MongoDB и HDFS с использованием Node.js, 
Express.js, Apache Spark и Scala : учебное пособие / С.А. Мартишин, 
В.Л. Симонов, М.В. Храпченко. — Москва : ИНФРА-М, 2020. — 
235 с. + Доп. материалы [Электронный ресурс]. — (Среднее профессиональное образование).

ISBN 978-5-16-015643-9 (print)
ISBN 978-5-16-108102-0 (online)
Предназначено для изучения и создания информационных систем и приложений 
с использованием распределенных баз данных и файловых систем.
Для создания информационных систем на основе распределенных баз данных 
используется серверная часть стека программного обеспечения MEAN, включающая в себя СУБД NoSQL-типа MongoDB, платформу Node и фреймворк Express. 
Рассмотрены также основы администрирования и репликации в СУБД MongoDB. 
В качестве инструмента моделирования объектов баз данных используется Mongoose.js. 
С целью создания фронтенд частей сайтов и веб-приложений изучается применение свободного программного обеспечения Bootstrap, HTML5 Boilerplate, Initializr. 
Приводится детальный процесс разработки и тестирования API REST-приложения 
на основе модели MVC. 
В результате обучающиеся будут способны создавать полноценную распределенную информационную систему на основе современных СУБД NoSQL-типа. 
Для создания приложений также используются распределенные хранилища данных (больших массивов неструктурированной информации) на примере Hadoop 
Apache с инструментарием Spark и Scala. 
Для студентов учреждений среднего профессионального образования, обучающихся по укрупненной группе специальностей 09.02.00 «Информатика и вычислительная техника», а также для специалистов в области проектирования распределенных информационных систем на основе современных СУБД NoSQL-типа, создания 
мобильных и интернет-приложений.

УДК 004.65(075.32)
ББК 32.97я723

Р е ц е н з е н т ы:
Гончаренко В.И., доктор технических наук, доцент, директор Военного 
института Московского авиационного института (национального исследовательского университета); 
Серов В.В., доктор технических наук, профессор, профессор кафедры 
информационных систем, сетей и безопасности Российского государственного социального университета, действительный член Международной академии информатизации

ISBN 978-5-16-015643-9 (print)
ISBN 978-5-16-108102-0 (online)

Материалы, отмеченные знаком 
, 
доступны в электронно-библиотечной системе Znanium.com

© Мартишин С.А., Симонов В.Л., 
Храпченко М.В., 2020

Список принятых сокращений

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 и обычно используемый именно с этим

языком, считается независимым от языка и может использоваться практически

с любым языком программирования. Для многих языков существует готовый

код для создания и обработки данных в формате JSON.

В MongoDB используется формат BSON (от англ. Binary JavaScript Object 

Notation) [1.5]. Это компьютерный формат обмена данными, используемый в

основном в качестве формата для хранилища данных и передачи по сети в базе

MongoDB. Это бинарная форма представления простых структур данных и

ассоциативных
массивов (так
называемые
объекты, или
документы, в

MongoDB). Название BSON основано на определении JSON и значит «Binary 

JSON» (бинарный JSON). Формат является надмножеством JSON, поскольку

дополнительно включает в себя такие типы данных, как Date type и BinData 

type. 

Отличие форматов заключается в следующем: JSON-текст представляет

собой (в закодированном виде) одну из двух структур:  

1. Набор пар ключ : значение. В различных языках это может быть

реализовано как запись, объект, словарь, хэш-таблица, ассоциативный

массив и т.п. Ключом может быть только строка. В качестве значений в

JSON 
используются: 
объекты, 
числа, 
строки 
(под
которыми

естественным образом понимается упорядоченное множество из нуля

или более символов юникода, заключенное в двойные кавычки, с

использованием escape-последовательностей, начинающихся с обратной

косой черты), true или false, массивы, null, вложенные структуры. 

2. Упорядоченный набор значений. Это может быть реализовано как

массив, вектор, список или последовательность.

BSON-документы 
(объекты) 
состоят
из
сортированных
списков

элементов. Все документы в MongoDB хранятся в формате BSON. Каждый

элемент состоит из имени поля, типа и значения. Именами полей являются

строки.

Пример:

{ 

К покупке доступен более свежий выпуск Перейти