В этой статье мы познакомимся с 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 данная проблем реализуется очень просто, запросы к БД будут работа намного быстрее, производительность не упадет, практически все данные будут в одном месте. Более подробно обо всем этом будем разбираться в следующих уроках.
Комментарии