MongoDB
MongoDB — документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Классифицирована как NoSQL, использует JSON-подобные документы и схему базы данных. Написана на языке C++
Описание
MongoDB — это кросс-платформенная, документо-ориентированная база данных, которая обеспечаивает высокую производительность и лёгкую масштабируемость. В основе данной БД лежит концепция коллекций и документов.
MongoDB — кроссплатформенная документо-ориентированная система управления базами данных. Классифицированная как база данных NoSQL, MongoDB отходит от традиционных основ реляционной структуры базы данных в пользу JSON-подобных документов с динамическими схемами (MongoDB называет этот формат BSON), что делает интеграцию данных в определенных видах приложений проще и быстрее. Выпущено под комбинацией GNU Affero General Public License и лицензией Apache, MongoDB является бесплатным программным обеспечением с открытым исходным кодом.
Особенности MongoDB
- MongoDB — это документо-ориентированная СУБД. Данные в MongoDB хранятся в документах, которые объединяются в коллекции. Каждый документ представляет собой JSON-подобную структуру. Проведя аналогию с реляционными СУБД, можно сказать, что коллекциям соответствуют таблицы, а документам — строки в таблицах. Максимальный размер документа в MongoDB 2.x составляет 16 Мб (в более ранних версиях — лишь 4 Мб).
- В отличие от РСУБД MongoDB не требует какого-либо описания схемы базы данных — она может постепенно меняться по мере развития приложения, что есть удобно.
- Поддерживаются индексы, в том числе по массивам и вложенным документам, а также геопространственные индексы. Поддерживаются уникальные и составные индексы.
- MongoDB есть атомарные операции, compare-and-swap, курсоры, запись без подтверждения и даже MapReduce (но я бы не спешил переходить с Hadoop на MongoDB).
- Размер коллекции в MongoDB может быть ограничен числом документов или мегабайтами. Если коллекция слишком разрастется, старые документы будут удалены.
- Интерфейс MongoDB сильно напоминают работу с DBIx::Class. В запросах могут использоваться функции на языке JavaScript.
- В MongoDB поддерживается журналирование, а также асинхронная репликация двух видов — master-slave репликация и наборы реплик. Разработчики MongoDB рекомендуют использовать последние. Набор реплик представляет собой тот же master-slave, но в случае падения мастера среди реплик автоматически выбирается новый мастер. После возобновления своей работы бывший мастер становится репликой.
- Документы могут быть автоматически сегментированы по нескольким наборам реплик. Сегментирование производится по диапазону; чтобы отнести документ к конкретному диапазону, используется сегментный ключ (shard key). Данные распределяются между наборами реплик так, чтобы каждый набор содержал примерно одинаковый объем данных. Если кластер перестает справляться с нагрузкой, можно просто добавить в него еще один набор реплик — перераспределение данных произойдет автоматически.
- В документах MongoDB можно хранить бинарные данные — картинки, mp3 и так далее. Однако для данных размером более 1 Мб рекомендуется использовать GridFS. GridFS — это соглашение о хранении файлов произвольного размера в MongoDB, поддерживаемое всеми официальными драйверами.
- MongoDB используют GitHub, SourceForge, Foursquare, Bit.ly, About.me, MTV, CNN, New York Times, Forbes, Disney, EA и многие другие.
-
OLAP БД
Ключевые особенности OLAP сценария работы
- Подавляющее большинство запросов - на чтение;
- Данные обновляются достаточно большими пачками (> 1000 строк), а не по одной строке, или не обновляются вообще;
- Данные добавляются в БД, но не изменяются;
- При чтении, вынимается достаточно большое количество строк из БД, но только небольшое подмножество столбцов;
- Таблицы являются «широкими», то есть, содержат большое количество столбцов;
- Запросы идут сравнительно редко (обычно не более сотни в секунду на сервер);
- При выполнении простых запросов, допустимы задержки в районе 50 мс;
- Значения в столбцах достаточно мелкие - числа и небольшие строки (пример - 60 байт на URL);
- Требуется высокая пропускная способность при обработке одного запроса (до миллиардов строк в секунду на один сервер);
- Транзакции отсутствуют;
- Низкие требования к консистентности данных;
- В запросе одна большая таблица, все таблицы кроме одной маленькие;
- Результат выполнения запроса существенно меньше исходных данных - то есть, данные фильтруются или агрегируются; результат выполнения помещается в оперативку на одном сервере.
Аналоги и альтернативы для MongoDB
MongoDB - похожие продукты (инструменты, решения, сервисы)
Отзывы
Отзывов пока нет.