MongoDB - это нереляционная база данных (часто известный как No-SQL). Термин No-SQL очень популярен, но он контрастирует с тем фактом, что SQL не имеет ничего общего с реляционными базами данных (табличными БД), кроме того, что это просто язык запросов. Это совершенно разные вещи, поэтому мне кажется немного странным, что вместо использования нереляционной базы данных они используют No-SQL.
Итак, прежде чем я перейду к объяснению No-SQL, позвольте мне объяснить существующую систему. На сегодняшний день наиболее широко используемой базой данных является реляционная система баз данных. Модель данных для RDBMS заключается в том, что она имеет предопределенную схему в виде таблиц. Таким образом, она выглядит примерно так,

Так что же в этом такого значительного?
Приложение знает, что значения, которые должны попасть в базу данных, это (текст, текст, число, число, число), и когда запись будет получена, она получит что-то очень похожее. Поэтому вам не нужно делать разбор и обработку, так как данные очень чистые (все столбцы имеют одинаковый тип и предопределенную структуру).Вычисления очень просты, предположим, что приложение хочет суммировать зарплату, оно знает, что последний столбец - это зарплата, и может просто сложить эти значения.РСУБД хорошо оптимизированы, поэтому при выполнении запросов они обеспечивают их скорейшее выполнение. Вы можете использовать “EXPLAIN”, чтобы увидеть, как RDBMS будет выполнять ваш запрос, и вы увидите, что в зависимости от количества данных, которые вам нужно обработать, поток выполнения будет меняться, даже если в существующем запросе нет никаких изменений. (Так что с точки зрения разработчика это действительно спасение жизни, теперь мне не нужно беспокоиться о производительности и многих других вещах).RDMS так хороши, и я бы посоветовал использовать RDMS до тех пор, пока вы можете избежать неприятностей. ВСЕГДА использовать РСУБД.
Теперь возникает вопрос: если РСУБД настолько хороши, то зачем нужен No-SQL?
Потому что иногда приложения не могут иметь предопределенную схему, поэтому они не могут быть представлены в терминах РСУБД.Другая причина - меньшая поддержка масштабирования. В конечном итоге, вам придется покупать Teradata или MySQL’s db системы, поддерживающие масштабирование, которые стоят очень дорого.И количество времени, которое dbadmin тратит на разработку схемы для базы данных, огромно. В некоторых приложениях проектирование базы данных может занять годы.В итоге все в ИТ-отделе решили, что нам нужно новое решение, которое занимает меньше времени и имеет меньше ограничений. Так они придумали систему No-SQL. Сейчас существует множество No-SQL систем, некоторые из них хороши для определенных вещей, а другие хороши для других вещей.
MongoDB - это система, которая является No-SQL. Поэтому вместо хранилища, ориентированного на строки, в ней используется хранилище, ориентированное на документы. Документ в MongoDB очень похож на JSON, как показано ниже.

Так что теперь у вас есть что-то вроде этого, где нет схемы. Вы можете добавлять в документ все, что угодно, все документы не должны выглядеть одинаково.
Такая плохая часть,
Теперь разработчики должны убедиться, что в документе поддерживается некая последовательность для правильного поиска, поскольку схемы нет. Поэтому разработчики должны убедиться, что все документы имеют одно уникальное поле (_id), по которому можно получить документ, или какое-то другое поле, если id не требуется. Они должны быть уверены, что все документы будут содержать хотя бы несколько общих полей, чтобы сохранялась некоторая структура. Так что это головная боль.MongoDB использует много оперативной памяти, поэтому выбирайте ее с умом. В некоторых случаях она работает медленнее, чем другие No-SQL системы.Теперь в ваших проектах не будет стандартов, потому что нет структуры данных, и все проекты будут использовать различные No-SQL базы данных, которые подходят для их нужд. В то время как в RDBMS, по крайней мере, вы знали, что независимо от того, куда вы идете, это вернет вам кучу строк и столбцов, которые могут быть запрошены с помощью одного и того же языка, называемого SQL. (если вы, конечно, используете SQL)
Хорошая часть,
Нет необходимости тратить уйму времени на проектирование базы данных.MongoDB обеспечивает масштабируемость и согласованность.Для запросов к MongoDB необходимо использовать язык, который очень похож на SQL, поэтому его очень легко изучить.MongoDB имеет хорошую поддержку и документацию, откуда вы можете изучить ее.Это всего лишь обзор. Но вы можете узнать о нем больше на их официальном сайте.
Comments