MongoDB — гибкая и масштабируемая база данных NoSQL

Реляционные базы данных были бесспорным решением для управления электронными данными в течение десятилетий. И это небезосновательно: MySQL, впервые появившаяся в 1995 году, до сих пор служит основой для бесчисленных веб-проектов. Растущий объем и разнообразие данных, характерные для современных веб-приложений, сделали базы данных с нереляционным подходом серьезными соперниками традиционным решениям. Эти распределенные системы хранения данных, такие как MongoDB, впервые появившаяся в 2009 году, работают в документо-ориентированном режиме и называются базами данных NoSQL из-за того, что они не используют SQL (структурированный язык запросов), традиционный язык запросов для реляционных баз данных. И хотя это требует большего от прикладных уровней, это позволяет распределять базы данных и рабочие процессы между несколькими серверами, что позволяет масштабировать эту современную базу данных практически без ограничений.

Что такое MongoDB?

В 2007 году компания 10gen начала разработку MongoDB (уникальное название базы данных происходит от слова humongous), документо-ориентированной базы данных с открытым исходным кодом. Будучи опубликованной два года спустя, она быстро приобрела известность в мире ИТ и сегодня является одной из самых популярных баз данных NoSQL. Сегодня компания 10gen, которая с тех пор была переименована в MongoDB Inc., по-прежнему отвечает за продолжение разработки программного обеспечения; она также управляет продажами коммерческих корпоративных решений.

MongoDB написана на языке программирования C++ и сохраняет данные в формате BSON, который был создан по образцу формата JSON (JavaScript Object Notation). Благодаря этому последнему аспекту поддерживаются все типы данных JavaScript, поэтому MongoDB представляет собой отличный выбор для платформы Node.js. Базы данных MongoDB содержат одну или несколько коллекций данных, и они способны управлять любым количеством и множеством различных типов полей данных.

Установление соединения с базой данных MongoDB может быть выполнено несколькими различными способами. Большинство дистрибутивов обычно содержат mongo shell — клиент, обеспечивающий доступ через командную строку. Кроме того, интерфейс администрирования на основе HTTP может быть активирован и вызван в браузере. Более того, большинство пользовательских интерфейсов, таких как MongoChef, Robomongo или Mongoclient, позволяют редактировать и отображать данные в графическом виде. MongoDB работает практически на всех современных версиях Linux, Windows и Mac OS X.

MongoDB против MYSQL: сравнение баз данных

В отличие от MySQL, MongoDB функционирует в документо-ориентированной манере и реализует совершенно иной подход, когда дело доходит до сохранения данных:

  • Данные сохраняются не в таблицах, а в коллекциях.
  • Документы в формате BSON заменяют строки таблицы, в этих документах определены поля, которые заменяют столбцы таблицы SQL.
  • Здесь поле всегда представляет собой пару из ключа, который одновременно обозначает имя поля, и значения. Это значение может означать число, слово или текст, а также целые списки слов, чисел или целые файлы.
  • Документ MongoDB представляет собой набор пар ключ-значение, а также строк таблицы MySQL.

Ключевое различие здесь в том, что документ не подчиняется какой-либо определенной схеме, в то время как все строки в таблице MySQL следуют одной и той же структуре; последние имеют одинаковое количество значений, каждое из которых имеет одинаковые типы данных. Отдельные документы MongoDB, с другой стороны, имеют свою собственную уникальную структуру. Это позволяет в любой момент времени создавать новые поля, содержащие любое значение, что потребовало бы полной перестройки реляционных баз данных, таких как MySQL. И хотя ключи должны быть уникальными в пределах одного документа, допускается повторное использование этого же ключа в других документах. Этот последний аспект невозможен в базах данных MySQL; вместо этого для связи между двумя таблицами используются соединения. Эти соединения могут быть созданы в виде встроенных документов или ссылок.

Еще одно фундаментальное различие при сравнении MongoDB и MySQL проявляется в том, как обе модели подходят к теме вызова данных. Как база данных NoSQL, MongoDB, очевидно, не использует SQL в качестве языка запросов и поддерживает обработку данных с помощью своего собственного языка. Такая установка позволяет осуществлять коммуникацию между MongoDB и соответствующим клиентом. Для того чтобы этот процесс функционировал, база данных с помощью библиотек и драйверов использует объектно-специфические методы соответствующего языка программирования клиентского приложения. Эти библиотеки и драйверы можно загрузить отдельно с официальной домашней страницы.

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

Возможные сценарии применения MongoDB

MongoDB всегда оказывается отличным выбором для тех, кто заинтересован в реализации веб-проектов, основанных на больших, неструктурированных объемах данных. Работа в формате, основанном на документах, без привязки к определенной схеме, особенно хорошо подходит для различных типов данных, которые необходимо как быстро сохранять, так и обрабатывать. А благодаря тому, что система баз данных может быть распределена по нескольким серверам, она также делает возможным горизонтальное, практически неограниченное масштабирование без ограничения работоспособности. Чтобы гарантировать долгосрочную безопасность и доступность данных, MongoDB также позволяет создавать копии баз данных и делать их доступными на нескольких серверах. Документо-ориентированная база данных также показывает свои сильные стороны при компиляции объемов данных из одного или нескольких источников.

Использование MongoDB рекомендуется для всех веб-проектов, которые соответствуют следующим описаниям:

  • Масштабируемость: если ваш веб-проект растет, то растет и количество запросов, с которыми ему приходится иметь дело, что оказывает давление на ваши базы данных.
  • Доступность: если ваше веб-приложение зависит от постоянной доступности, даже в случае отключения сервера.
  • Гибкость: ваш проект должен иметь возможность динамической корректировки в любое время.

Распределение данных по нескольким серверам подчеркивает ключевое различие между MongoDB и реляционными базами данных: после сохранения данных в базе данных MongoDB существует короткий промежуток времени, в течение которого последующие обращения к данным на чтение получают только старые данные. Эта модель, называемая конечной согласованностью, используется в форке MySQL, MariaDB и многих других системах баз данных. Преимуществом этой модели является то, что серверы баз данных, отделенные от больших кластеров баз данных сетевыми разделами, все еще могут принимать доступ на запись от приложений.

Вы не уверены, какая модель базы данных лучше всего подходит для вашего веб-проекта? Вам не нужно решать: комбинация различных типов также возможна.

Оцените статью
cdelat.ru
Добавить комментарий