MongoDB: полное руководство
Мощная и масштабируемая система управления базами данных
Покупка
Тематика:
Системы управления базами данных (СУБД)
Издательство:
ДМК Пресс
Перевод:
Беликов Дмитрий Анатольевич
Год издания: 2020
Кол-во страниц: 540
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Магистратура
ISBN: 978-5-97060-792-3
Артикул: 748341.01.99
Эта книга представляет собои исчерпывающее руководство по раооте с MongoDB 4.2 - мощной документоориентированной системой управления базами данных. Авторы, внесшие личный вклад в создание и развитие MongoDB, начинают описание системы с самых азов (история создания, базовая терминология) и постепенно переходят к более сложным темам (выполнение запросов, индексация, агрегирование, транзакции, наборы реплик, управление операциями, шардинг и администрирование данных, долговечность, мониторинг и безопасность).
Читатель получит конкретные советы по написанию приложения, которое хорошо работает с MongoDB, выяснит, какие системные настройки следует учитывать при ее развертывании и как устанавливать MongoDB в Windows, OS X и Linux.
Издание предназначено для разработчиков объемных баз данных, масштабирование которых является одной из приоритетных задач.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Шеннон Брэдшоу, Йон Брэзил, Кристина Ходоров MongoDB: полное руководство
MongoDB: The Definitive Guide Powerful and Scalable Data Storage Shannon Bradshaw, Eoin Brazil, and Kristina Chodorow Beijing • Boston • Farnham • Sebastopol • Tokyo THIRD EDITION
Москва, 2020 Шеннон Брэдшоу, Йон Брэзил и Кристина Ходоров MongoDB: полное руководство Мощная и масштабируемая система управления базами данных Перевод с английского Беликова Д. А.
УДК 004.65 ББК 32.972.134 Б87 Б87 Шеннон Брэдшоу, Йон Брэзил, Кристина Ходоров MongoDB: полное руководство. Мощная и масштабируемая система управления базами данных / пер. с англ. Д. А. Беликова – М.: ДМК Пресс, 2020. – 540 с.: ил. ISBN 978-5-97060-792-3 Эта книга представляет собой исчерпывающее руководство по работе с MongoDB 4.2 – мощной документоориентированной системой управления базами данных. Авторы, внесшие личный вклад в создание и развитие MongoDB, начинают описание системы с самых азов (история создания, базовая терминология) и постепенно переходят к более сложным темам (выполнение запросов, индексация, агрегирование, транзакции, наборы реплик, управление операциями, шардинг и администрирование данных, долговечность, мониторинг и безопасность). Читатель получит конкретные советы по написанию приложения, которое хорошо работает с MongoDB, выяснит, какие системные настройки следует учитывать при ее развертывании и как устанавливать MongoDB в Windows, OS X и Linux. Издание предназначено для разработчиков объемных баз данных, масштабирование которых является одной из приоритетных задач. УДК 004.65 ББК 32.972.134 Original English language edition published by O’Reilly Media, Inc. Copyright © 2020 Shannon Bradshaw and Eoin Brazil. All rights reserved. Russian-language edition copyright © 2020 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-49195-446-1 (англ.) © 2020 Shannon Bradshaw and Eoin Brazil. All rights reserved. ISBN 978-5-97060-792-3 (рус.) © Оформление, перевод на русский язык, издание, ДМК Пресс, 2020
Эта книга посвящается нашим семьям в благодарность за то время, свободу действий и поддержку, которую они предоставили, чтобы сделать нашу работу над этой книгой возможной, и за их любовь. Анне, Сигурни, Грэму и Беккету – Шэннон И Джемме, Клоде и Броне – Йон
Оглавление Предисловие ..................................................................................................... 16 Как устроена эта книга ...................................................................................16 Начало работы с MongoDB .............................................................................16 Разработка с MongoDB ...................................................................................16 Репликация .....................................................................................................16 Шардинг ..........................................................................................................17 Администрирование приложений ................................................................17 Администрирование сервера ........................................................................17 Приложения ....................................................................................................17 Обозначения, принятые в этой книге ...........................................................17 Использование примеров кода .....................................................................18 Обучение в режиме онлайн ..........................................................................19 Предисловие от издательства ....................................................................... 20 Отзывы и пожелания ......................................................................................20 Список опечаток .............................................................................................20 Нарушение авторских прав ...........................................................................20 Часть I Введение в MongoDB ...................................................................................21 Глава 1. Введение ............................................................................................. 22 Простота использования .......................................................................... 22 Разработана для масштабирования......................................................... 22 Богатство функций… ................................................................................ 24 …Без ущерба для скорости ....................................................................... 25 Философия ................................................................................................. 25 Глава 2. Начало работы ................................................................................... 26 Документы ................................................................................................. 26 Коллекции .................................................................................................. 27 Динамические схемы .....................................................................................28 Именование ....................................................................................................29 Базы данных .............................................................................................. 30 Начало работы с MongoDB ....................................................................... 31 Знакомство с оболочкой MongoDB .......................................................... 32 Запуск оболочки .............................................................................................33 Клиент MongoDB.............................................................................................34 Основные операции с оболочкой ..................................................................35
Оглавление 7 Типы данных ............................................................................................. 37 Основные типы данных .................................................................................37 Даты .................................................................................................................39 Массивы ..........................................................................................................40 Вложенные документы ..................................................................................40 _id и ObjectId ...................................................................................................41 Использование оболочки MongoDB ......................................................... 43 Советы по использованию оболочки ............................................................44 Запуск скриптов с помощью оболочки .........................................................45 Создание файла .mongorc.js ..........................................................................47 Настройка приглашения ................................................................................48 Редактирование сложных переменных ........................................................49 Неудобные имена коллекций ........................................................................50 Глава 3. Создание, обновление и удаление документов ........................... 52 Вставка документов .................................................................................. 52 insertMany .......................................................................................................52 Проверка вставки ...........................................................................................56 insert ................................................................................................................56 Удаление документов ............................................................................... 56 drop .................................................................................................................58 Обновление документов .......................................................................... 58 Замена документа ..........................................................................................59 Использование операторов обновления ......................................................61 Upsert ...............................................................................................................72 Обновление нескольких документов ............................................................75 Возврат обновленных документов ................................................................76 Глава 4. Выполнение запросов ...................................................................... 79 Знакомство с методом find ....................................................................... 79 Указываем, какие ключи нужно вернуть ......................................................80 Ограничения ...................................................................................................81 Критерии запроса ..................................................................................... 81 Условные операторы ......................................................................................81 Запросы с оператором OR ..............................................................................82 $not .................................................................................................................83 Запросы для определенных типов ........................................................... 84 null .................................................................................................................84 Регулярные выражения ..................................................................................84 Запросы элементов массива ..........................................................................85 Запросы по вложенным документам ............................................................91 Операторы $where .................................................................................... 93 Курсоры ...................................................................................................... 94 Ограничения, пропуск и сортировка ............................................................95
Оглавление Избегайте больших пропусков ......................................................................97 Бесконечные курсоры ...................................................................................99 Часть II Разработка приложения ............................................................................101 Глава 5. Индексы ............................................................................................ 102 Знакомство с индексами .........................................................................102 Создание индекса .........................................................................................105 Знакомство с составными индексами ........................................................108 Как MongoDB выбирает индекс ...................................................................112 Использование составных индексов ...........................................................114 Как операторы с символом $ используют индексы ...................................135 Индексирование объектов и массивов .......................................................147 Кардинальность индекса .............................................................................150 Вывод explain............................................................................................150 Когда не стоит прибегать к индексированию ........................................160 Типы индексов .........................................................................................161 Уникальные индексы ...................................................................................161 Частичные индексы ......................................................................................164 Управление индексами............................................................................165 Идентификация индексов ...........................................................................166 Замена индексов ...........................................................................................167 Глава 6. Специальные типы индексов и коллекций ................................. 168 Геопространственные индексы ..............................................................168 Типы геопространственных запросов ........................................................169 Использование геопространственных индексов .......................................171 Составные геопространственные индексы ................................................179 Индексы 2d ....................................................................................................179 Индексы для полнотекстового поиска ...................................................182 Создание текстового индекса ......................................................................183 Поиск по тексту.............................................................................................184 Оптимизация полнотекстового поиска ......................................................187 Поиск на других языках ...............................................................................188 Ограниченные коллекции .......................................................................188 Создание ограниченных коллекций ...........................................................190 Настраиваемые курсоры ..............................................................................191 Индексы TTL .............................................................................................192 Хранение файлов с помощью GridFS ......................................................193 Начало работы с GridFS: mongofiles ............................................................193 Работа с GridFS из драйверов MongoDB ......................................................194 Что под капотом ...........................................................................................195
Оглавление 9 Глава 7. Знакомство с фреймворком агрегации ....................................... 198 Конвейеры, этапы и настраиваемые параметры ...................................198 Начало работы с этапами: знакомые операции ....................................200 Выражения ...............................................................................................206 $project ......................................................................................................207 $unwind .....................................................................................................213 Выражения массивов ...............................................................................221 Аккумуляторы ..........................................................................................227 Использование аккумуляторов в этапах с $project ....................................228 Знакомство с группировкой ....................................................................229 Поле _id в этапах $group ...............................................................................235 Сравнение $group и $project ........................................................................238 Запись результатов конвейера агрегации в коллекцию .......................241 Глава 8. Транзакции ....................................................................................... 243 Знакомство с транзакциями ...................................................................243 Определение ACID ........................................................................................244 Как использовать транзакции .................................................................244 Настройка ограничений транзакций для вашего приложения ............249 Ограничения на размер журнала операций и ограничения по времени ...249 Глава 9. Разработка приложений ................................................................ 251 Аспекты проектирования схем ...............................................................251 Шаблоны проектирования схем ..................................................................253 Нормализация и денормализация..........................................................256 Примеры представления данных ................................................................257 Кардинальность ............................................................................................262 Друзья, подписчики и другие неудобства ...................................................262 Оптимизация манипулирования данными ...........................................265 Удаление старых данных .............................................................................265 Планирование баз данных и коллекций ................................................266 Управление согласованностью................................................................267 Перенос схем ............................................................................................269 Управление схемами ...............................................................................270 Когда не стоит использовать MongoDB ..................................................270 Часть III Репликация....................................................................................................271 Глава 10. Настройка набора реплик ........................................................... 272 Знакомство с репликацией .....................................................................272
Оглавление Настройка набора реплик, часть 1 ..........................................................273 Пара слов касательно работы в сети .......................................................274 Вопросы безопасности ............................................................................275 Настройка набора реплик, часть 2 ..........................................................275 Наблюдение за репликацией ..................................................................279 Изменение настройки набора реплик ....................................................285 Проектирование набора ..........................................................................287 Как работают выборы ...................................................................................289 Параметры конфигурации членов..........................................................291 Приоритет .....................................................................................................291 Скрытые члены .............................................................................................291 Арбитры ........................................................................................................292 Построение индексов ...................................................................................295 Глава 11. Компоненты набора реплик ....................................................... 296 Синхронизация ........................................................................................296 Начальная синхронизация ..........................................................................298 Репликация ...................................................................................................300 Работа с устареванием данных ....................................................................300 Тактовые сигналы ....................................................................................301 Состояния членов .........................................................................................301 Выборы .....................................................................................................303 Откаты ......................................................................................................304 Когда откаты не работают ............................................................................307 Глава 12. Подключение к набору реплик из своего приложения.......... 308 Как ведет себя соединение типа «клиент к набору реплик» .................308 Ожидание репликации при операциях записи .....................................311 Другие параметры для "w" ...........................................................................313 Гарантии специализированной репликации .........................................313 По одному серверу на каждый центр обработки данных ..........................313 Гарантия большинства нескрытых членов .................................................315 Создание других гарантий ...........................................................................316 Отправка операций чтения на вторичные узлы ...................................316 Соображения по поводу согласованности ..................................................317 Вопросы нагрузки .........................................................................................317 Причины чтения с вторичных узлов ...........................................................318 Глава 13. Администрирование ..................................................................... 320 Запуск членов в автономном режиме ....................................................320 Конфигурация набора реплик .................................................................321 Создание набора реплик ..............................................................................321