Не моя вина, что книга такая короткая, просто MongoDB легка в освоении.
Технологии развиваются семимильными шагами. Список новых технологий и методологий постоянно растёт. Однако, я всегда придерживался мнения, что фундаментальные технологии, используемые программистами, развиваются не столь стремительно. Можно долгое время обладать актуальными знаниями, не пополняя их. Однако зачастую устоявшиеся технологии заменяются другими с потрясающей скоростью. Внезапные скачки разработок иногда ставят под угрозу устоявшиеся старые технологии.
Документные, реляционные и другие модели хранения решают разные задачи. NoSQL не означает, что реляционные базы устарели или обязательно должны быть заменены. В этой книге рассматривается документный подход MongoDB; выбор базы должен зависеть от запросов, целостности данных и эксплуатационных требований.
Несмотря на скачкообразность таких изменений, на деле могут понадобиться годы, чтобы они вошли в общепринятую практику. Начальный энтузиазм, как правило, охватывает небольшое число разработчиков и компаний. Решения оттачиваются, извлекаются уроки, — и, видя, что новая технология развивается, остальные пробуют применять её для своих нужд. Опять же, это касается сферы NoSQL, где множество технологий являются не столько прямой заменой более традиционным механизмам хранения, сколько являются решениями специальных проблем, в дополнение к тому, что можно ожидать от традиционных систем.
Принимая во внимание всё вышеизложенное, мы должны уяснить, чем же является NoSQL. Это широкий термин, который означает разное для разных людей. Лично я использую его в широком смысле, чтобы обозначить систему, участвующую в хранении данных. С другой стороны NoSQL для меня означает убеждённость в том, что задача хранения данных не возлагается на одну большую систему. В то время, как производители большинства баз данных исторически пытались позиционировать свой софт, как решение «всё в одном», NoSQL стремится к меньшему уровню ответственности — когда для определённых задач может быть выбран такой инструмент, который бы решал именно эту задачу наилучшим образом. К примеру, ваш NoSQL-стек может эффективно использовать реляционные базы данных, как например MySQL, однако он также может включать в себя Redis — для организации хранения записей key-value или Hadoop — для интенсивной обработки данных. Проще говоря, NoSQL — это открытая технология, состоящая из альтернативных, существующих и дополнительных шаблонов управления данными.
Удивительно, но MongoDB подходит под все эти определения. Как документ-ориентированная СУБД, Mongo — это довольно-таки обобщённое NoSQL решение. Её можно рассматривать, как альтернативу реляционным СУБД. Подобно реляционным СУБД, она также может выигрышно дополняться более специализированными NoSQL решениями. У MongoDB есть как достоинства, так и недостатки, о них мы поговорим в следующих частях книги.
Как вы уже заметили, термины MongoDB и Mongo используются как синонимы.
Приступая к работе
Для примеров нужна отдельная учебная база и оболочка mongosh. Не используйте рабочие данные: дальше будут команды удаления и полной замены документов.
-
Установите MongoDB Community по инструкции для вашей операционной системы. Старый INI-файл с
dbpath=...и совет о 32-разрядной сборке больше не служат универсальной инструкцией установки. -
Установите MongoDB Shell. Команды этой редакции рассчитаны на
mongosh, а не на прежнюю оболочкуmongo. -
Запустите локальный сервер способом, указанным в инструкции вашей ОС. Для учебного экземпляра используйте только loopback-интерфейс; не открывайте порт базы в интернет. Для сервера с сетевым доступом отдельно настройте аутентификацию, права и TLS.
-
Подключитесь к локальному экземпляру:
mongosh "mongodb://127.0.0.1:27017/learn"
-
Проверьте соединение и текущую базу:
db.version() db.getName()
Второй вызов должен вернуть learn. Если нет — сначала выполните use learn. Команды приложения, драйвера и оболочки различаются: не переносите вызовы из mongosh в Node.js без сверки с документацией драйвера.
mongod — процесс сервера, mongosh — клиент. Каталог данных и конфигурация принадлежат серверу; клиент подключается к нему по URI. Не передавайте пароль прямо в опубликованной командной строке и не сохраняйте учётные данные в примерах или репозитории.