Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015)

Материал из 0x1.tv

Аннотация

Докладчик
Владимир Симонов.jpg
Владимир Симонов

Описаны принципы функционирования систем управления базами данных (СУБД) NoSQL. В качестве примера рассмотрены особенности и представлено описание возможностей NoSQL СУБД MongoDB — документоориентированной СУБД с открытым кодом.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Слайды

Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf Разработка информационных систем с использованием СПО NoSQL СУБД MongoDB (Владимир Симонов, OSEDUCONF-2015).pdf

Тезисы

В процессе подготовки студентов и магистрантов по направлениям «Информационные системы и технологии», «Информатика и вычислительная техника», «Программная инженерия» и ряду других, необходимо ориентировать будущих специалистов на использование технологий, наилучшим образом подходящих для выполнения стоящих перед ними задач [5].

Поскольку приоритетным направлением их деятельности будет разработка и поддержка различного рода информационных систем (ИС), необходимо, чтобы студенты были знакомы со всем многообразием средств разработки и проектирования ИС. В этой связи представляется важным изучение студентами помимо реляционных СУБД также СУБД NoSQL («не только SQL»).

Появление СУБД NoSQL связано с тем, что за последние 15-20 лет значительно изменился характер информации, подлежащий обработке и, соответственно, изменились интерактивные приложения.

  • Во-первых, в значительной степени возросло количество пользователей, использующих приложения, причем часто одновременно, в том числе и мультмедийную информацию на мобильных устройствах.
  • Во-вторых, значительно увеличился объем данных, подлежащих хранению и обработке.
  • В-третьих, значительное количество хранимой информации сложно структурировать, используя технологию систем управления реляционными базами данных (реляционных СУБД).

Таким образом, необходимость быстрой обработки информации в условиях работы в многопользовательском режиме стала еще актуальнее, а традиционные системы с вертикальной масштабируемостью, такие как реляционные СУБД, перестали справляться с данной задачей. Горизонтальное масштабирование, основанное на нескольких независимых серверах, потребовало организации иной структуры данных — NoSQL, которые за счет отсутствия жесткой структуры обеспечивают более быстрый доступ к данным[1]. Заметим также, что в последние годы появилось значительное количество СУБД NoSQL СПО, которые обладают высокой производительностью, бесплатны и хорошо документированы. Кроме того, многие из них предназначены для использования в ОС Linux с широко распространенным сервером Apache, и многие языки программирования (PHP, Python, Ruby) имеют необходимые драйверы и функции, позволяющие достаточно просто наладить работу с этими СУБД.

Однако следует заметить, что СУБД NoSQL не гарантируют выполнения требований ACID (Atomicity (Атомарности), Consistency (Согласованности), Isolation (Изолированности), Durability (Долговечности)), а также не имеют аналогов команд BEGIN TRANSACTION, COMMIT и ROLLBACK, в связи с чем их нежелательно использовать, например, для финансовых систем, где транзакции необходимы. Тем не менее, для систем со значительным количеством клиентов, в которых приоритетными свойствами являются доступность и устойчивость к разделению (теорема САР), использование NoSQL имеет значительные преимущества как для пользователей, так и для разработчиков: снижение времени отклика, использование различных типов хранилищ (в том числе облачных), возможность обойтись без создания схемы данных, за счет чего сокращается требуемое время разработки.

Согласно последним данным, MongoDB является наиболее популярной NoSQL базой данных, которая строится на JSON (JavaScript Object Notation) — подобных документах, хранящими данные в виде «ключ — значение» (документо-ориентированное хранение). MongoDB, кроме того, поддерживает такие возможности, как гибкую поддержку индекса, автоматический шардинг, большое количество запросов, встроенные репликации, поддержку спецификации хранения GridFS для хранения и извлечения файлов, которые превышают предельный размер BSON-документ 16 Мб, и многое другое[2].

Необходимо обратить внимание, что MongoDB не поддерживает объединение коллекций, то есть оператор JOIN в привычном смысле не функционирует. Для возможности масштабирования MongoDB информация хранится в виде коллекций документов с соответствующими данными в документах, таким образом, чтобы устранить необходимость в соединениях с другими коллекциями. Тем не менее, в некоторых случаях имеет смысл хранить соответствующую инфор- мацию в отдельных документах, как правило, в разных коллекциях или базах данных. В MongoDB, например, можно сохранить значения поля _id одного документа в другом документе в качестве ссылки.

Тогда приложение может выполнять запрос данных из второго документа. Эти ссылки являются простыми, и для большинства случаев их использования достаточно. Для использования документов из разных коллекций применяются ссылки из одного документа в другой с указанием значения поля первого документа _id, названия коллекции, и, при необходимости, имени базы данных.

Заметим, что в плане работы с документами — их созданием, изменением, удалением, а также для работы с запросами в MongoDB, существуют методы, которые принципиально не отличаются от известных операторов языка SQL. Индексирование в MongoDB в основном аналогично индексированию в реляционных базах данных. Таким образом, первоначальное освоение студентами MongoDB не должно вызвать сложности. Однако дальнейшее изучение ее возможностей позволит студентам понять преимущества и недостатки использования MongoDB применительно к конкретной разрабатываемой ИС[3].

Литература
  • Мартишин С. А., Симонов В. Л., Храпченко М. В. Проектирование и реализация баз данных в СУБД MySQL с использованием MySQL Workbench, учебное пособие, М: ИД Форум — Инфра-М, 2012, 160 с., ил.
  • Мартишин С. А., Симонов В. Л., Храпченко М. В. Дипломное проектирование на СПО // Сб. тезисов Восьмой конференции «Свободное программное обеспечение в высшей школе», Переславль, 26-27 января 2013, стр. 32-35. Дипломное_проектирование_на_СПО_(Владимир_Симонов,_OSEDUCONF-2013)

Примечания и отзывы

  1. Фаулер М., Садаладж П. Дж. NoSQL: новая методология разработки нереляционных баз данных — NoSQL Distilled. — М.: «Вильямс», 2013. — 192 с. — ISBN 978-5-8459-1829-1
  2. MongoDB. [Электронный ресурс]. Режим доступа: URL: http://www.mongodb.org — Яз. англ. Дата обращения: 30.11.2014.
  3. С. Д. Кузнецов, А. В. Посконин. Распределенные горизонтально масштабируемые решения для управления данными. Труды института системного программирования РАН, том 24, 2013, с. 327-358. ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).



Plays:124   Comments:0