MongoDB: Что такое, для чего нужен и где использовать

MongoDB: Что такое, для чего нужен и где использовать
4.6 (91.43%) 7 votes

В этой статье мы познакомимся с NoSQL базой данных MongoDB, узнаем когда можно использовать MongoDB и чем он отличается от остальных СУБД.

Для серверной JavaScript, то есть для Node.js, самым естественным хранилищем данных является документо-ориентированная база данных MongoDB. Давайте рассмотрим подробнее, почему именно MongoDB.

Что такое MongoDB

MongoDB (от англ. humongous — огромный) — это документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, который написана на языке C++ и не требует описание схемы таблиц. MongoDB классифицирована как NoSQL база данных с JSON-подобными документы (точнее BSON — Binary JavaScript Object Notation). То есть, она реализует новый подход к построению базы данных. Используя MongoDB, у вас не будет таблиц, схем, SQL запросов, внешних ключей и много других вещей, которые встречаются в SQL базах.

По мнению разработчиков сервера базы данных MongoDB, она должна заполнить разрыв между NoSQL СУБД, где данные хранится в виде key-value (ключ-значение), и большими реляционными СУБД, где есть мощные запросы и структурные схемы. Она имеет некоторые важные преимущества по сравнению с обычными СУБД — с ней легко работать, очень просто управляется за счет применение бессхемного стиля и очень быстро работает.

Один из важных преимуществ — это то, что функциональность MongoDB позволяет на нескольких физических серверах расположить несколько базы данных, и эти базы легко могут обмениваться данными между собой и сохранить цельность. Конечно, есть и небольшие недостатки:

  • MongoDB документо-ориентированная база данных, но за это нам приходится платить. В отличие от традиционных СУБД, здесь нет оператора join.
  • Нет такого понятие, как транзакция.
  • Отсутствует понятие изоляции.

Это маленькие ограничение, которые здесь решаются другими способами. Об этих способах в дальнейшем я расскажу. А теперь давайте подробно рассмотрим где и почему вам понадобится использовать эту СУБД.

Для чего нужен MongoDB




Давайте рассмотрим, где можно использоваться база с таким представлением информации и кому вообще он нужен? Для ответа на этот вопрос рассмотрим один пример — построение приложения справочника по любимым рок-группам. То есть, нам нужно организовать данные о дискографиях и составах команд.

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

А по поводу дискографии, здесь тоже все страшно — приглашенные музыканты, совместные альбомы, сборники, записи сейшенов…

Эту информацию можно представить с помощью реляционной модели, но у нас получится сложная схема с большими и сложными запросами к ней. И от этого упадет производительность. А что будет, если этот запрос будет вызываться 100 раз в минуту?

В Mongo данная проблем реализуется очень просто, запросы к БД будут работа намного быстрее, производительность не упадет, практически все данные будут в одном месте. Более подробно обо всем этом будем разбираться в следующих уроках.


Об авторе

Занимаюсь программированием уже более 7 лет. Часто использую JavaScript (Node.js) и Python.

Комментарии