The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступна документо-ориентированная СУБД MongoDB 3.0

06.03.2015 15:38

Представлен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 3.0, занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.

MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.

В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.

Особенности нового выпуска:

  • Pluggable Storage Engine API, позволяющий сторонним разработчикам создавать движки хранения для MongoDB;
  • Возможность использования движка хранения WiredTiger, помимо штатного движка MMAPv1. WiredTiger может использоваться только на 64-разрядных системах и отличается высоким уровнем масштабуемости на многоядерных системах и предсказуемым временем обработки запроса, не зависящим от числа записей в базе, благодаря применению алгоритма, не использующего блокировки, и активному кэшированию данных ОЗУ. В WiredTiger также реализована возможность блокировки записей на уровне документов и поддержка хранения данных в сжатом виде (для сжатия используется библиотека snappy).

    При использовании WiredTiger поддерживаются все возможности MongoDB, но для перехода на новое хранилище требуется изменение дискового формата хранилища. Настройка нового движка осуществляется через набор опций storage.wiredTiger. В системах репликации и шардинга в кластере MongoDB могут комбинироваться и совместно использоваться узлы с разными движками хранения.

  • В штатном движке хранения MMAPv1 обеспечена поддержка блокировки на уровне коллекций. Изменена стратегия распределения данных в хранилище, которая теперь построена на основе метода PowerOf2, подразумевающего использование записей, размер которых кратен степени двойки (32, 64, 128, 256, 512 ... 2MB). Подобный подход более оптимален для хранения документов большого размера, но больше расходует дисковое пространство (например, если документ больше 2 Мб для него выделяется N блоков по 2 Мб, даже если он занимает 2Мб 1 байт).
  • Увеличено число узлов в наборе репликации. В MongoDB 3.0 в одном наборе может присутствовать до 50 узлов. С большим размером реплик могут работать драйверы C# (.NET) 1.10, Java 2.13, Python (PyMongo) 3.0+, Ruby 2.0+ и Node.JS 2.0+. Работа c большими наборами реплик в драйверах C++, Perl, PHP пока не поддерживается;
  • Поддержка механизма аутентификации SCRAM-SHA-1 (RFC 5802).
  • Добавлена новая система для анализа эффективности выполнения запросов. Расширен формат данных о запросе и реализованы средства доскональной интроспекции как плана построения запроса, так и выполнения запроса. Для анализа запросов представлены новый метод db.collection.explain() и команда explain;
  • Расширены средства ведения диагностических логов, в которых обеспечена привязка записей к специфичным компонентам и операциям;
  • В утилиты mongodump и mongorestore добавлена поддержка параллельной обработки нескольких коллекций (опция "--numParallelCollections"). В mongodump добавлены опции для выборочного исключения коллекций из дампа (--excludeCollection и --excludeCollectionsWithPrefix);
  • Утилиты mongostat и mongotop теперь могут возвращать статистику в формате JSON (опция --json).


  1. Главная ссылка к новости (http://blog.mongodb.org/post/1...)
  2. OpenNews: Выпуск СУБД OrientDB 2.0
  3. OpenNews: Выпуск СУБД Couchbase Server 3.0, сочетающей возможности CouchDB, memcached и Membase
  4. OpenNews: Новая версия БД Apache CouchDB 1.6.0
  5. OpenNews: Выпуск СУБД Apache Cassandra 2.1
  6. OpenNews: Около 40 тысяч серверов MongoDB доступны без аутентификации
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41785-mongodb
Ключевые слова: mongodb
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 15:55, 06/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    про память ни слова..
    Оно все также бесконтрольно потребляет память?
     
     
  • 2.14, Аноним (-), 19:48, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "Memory-mapped files are the critical piece of the storage engine in MongoDB. By using memory mapped files MongoDB can treat the contents of its data files as if they were in memory.", - говорит нам мануал. База будет занимать ровно столько памяти, сколько есть при условии, что данных больше, чем RAM.
     
     
  • 3.17, Аноним (-), 20:39, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Товарисч, откройте для себя, как работает mmap файлов. Что значит "при условии"? Файлы просто мапятся в адресное пространство процесса, при этом выделения резидентной памяти под данные, находящиеся в этих файлах, не происходит.
     
     
  • 4.24, Аноним (-), 00:59, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Что значит "просто мапятся"? Процессор не умеет работать с диском напрямую. Ядро внутри себя связывает страницы виртуальной памяти процесса с блоками в файле. При обращении к ним программы происходит page fault, который ядро перехватывает и загружает данные с диска в оперативную память.

    Предположим что происходит полный просмотр большой коллекции. Монга "потрогает" много страниц виртуальной памяти и заставит ядро выделить для этого много памяти физической и это будет выглядеть так как будто монга "съела" много оперативной памяти. Фактически это cached страницы с диска и могут быть освобождены при нехватке памяти в системе.

    Так что товарисч в принципе прав монга есть всю память пока она не закончится либо все активно используемые коллекции не поместятся в оперативную память.

     
     
  • 5.27, Аноним (-), 04:16, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Так что товарисч в принципе прав монга есть всю память пока она не закончится
    > либо все активно используемые коллекции не поместятся в оперативную  память.

    Раньше "русский программер" означало что он потащит всю команду вверх, а перерь - это симол балласта. Читая твои посты - 100% понимаю почему :(

     
     
  • 6.28, Аноним (-), 04:22, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Так что товарисч в принципе прав монга есть всю память пока она не закончится
    >> либо все активно используемые коллекции не поместятся в оперативную  память.
    > Читая твои посты - 100% понимаю почему :(

    И дурак, и накололся :( Грёбанная монга и в правду ....

    How do I configure the cache size?

    MongoDB has no configurable cache. MongoDB uses all free memory on the system automatically by way of memory-mapped files. Operating systems use the same approach with their file system caches.

    Мои извинения :(

     
  • 3.26, Аноним (-), 04:14, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >База будет занимать ровно столько памяти, сколько есть при условии, что данных больше, чем RAM.

    Добавь этот гениальный вывод в своё резюме, умник :)))))

     

  • 1.2, Аноним (-), 16:01, 06/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    А оно никогда и не потребляло бесконтрольно память.
     
     
  • 2.18, AlexAT (ok), 20:59, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Чел просто рядом с монго видимо крутил другие сервисы, и удивляется - почему оно безбожно  вытесняет всё, что под руку попадает. Да потому, что монго трешит кеш в хлам. Место монго либо на отдельной физике, либо в виртуалке, но основное правило: рядом с нодой монго в пределах ОС никаких прочих конкурирующих за память сервисов быть не должно. Тогда производительность будет мягкой и шелковистой.

    И это правило, кстати, не только на монго распространяется, а на любые жадные до кеширования сервисы.

     
     
  • 3.21, Crazy Alex (ok), 23:32, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Именно. Одна тяжелая серверная софтина на операционку - классика.
     
     
  • 4.33, waf (ok), 13:56, 12/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А не знаю, был ли это сарказм или нет, но сейчас повсеместно вектор на виртуалки, так что да, одна операционка.
     

  • 1.3, fi (ok), 16:21, 06/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ну что, Pg уже догоняют?
     
     
  • 2.4, svr (?), 16:48, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А какая связь с Pg?
     
     
  • 3.7, бедный буратино (ok), 16:54, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    в pg есть шустрое бессхемное хранилище
     
     
  • 4.9, Аноним (-), 17:49, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Только крайне бестолковое. Во-первых нет такого богатого набора операций для работы с JSON, во вторых нет автоматического шардинга. В-третьих нет ни embedded документов, ни ссылок. А так вам и раньше никто не запрещал, например, хранить json в текстовом поле, этот новый тип — просто оптимизация.
     
     
  • 5.12, Moomintroll (ok), 18:30, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > нет такого богатого набора операций для работы с JSON

    Вы б погуглили на предмет типов данных JSON и JSONB в PostgreSQL.

     
  • 5.19, Anonim (??), 22:25, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Только крайне бестолковое. Во-первых нет такого богатого набора операций для работы с JSON, во вторых нет автоматического шардинга. В-третьих нет ни embedded документов, ни ссылок. А так вам и раньше никто не запрещал, например, хранить json в текстовом поле, этот новый тип — просто оптимизация.

    Плагиатите, батенька: http://habrahabr.ru/post/252129/#comment_8313631

     
  • 3.32, sarman (?), 11:10, 10/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А какая связь с Pg?

    Связь с pg такая, что один и тот же чувак принимал участие в движке mongo wild tiger, что комиттил в  постгрес (Dr Michael Cahill)

     

  • 1.5, Аноним (-), 16:49, 06/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >> В штатном движке хранения MMAPv1 обеспечена поддержка блокировки на уровне коллекций.

    Она там и раньше была, добавили блокировку на уровне документа («document-level locking»).

     
     
  • 2.30, Аноним (-), 14:30, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Она там и раньше была, добавили блокировку на уровне документа («document-level locking»).

    Это только в проводном тигре.

     

  • 1.8, Аноним (-), 17:01, 06/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Где можно почитать про пропадание данных в монге и развеять этот миф?
     
     
  • 2.10, anonymous (??), 17:52, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Где можно почитать про пропадание данных в монге и развеять этот миф?

    пропадают только на тех, что смотрят в интернет без firewall ? http://www.information-age.com/technology/security/123459001/major-security-a

     
  • 2.11, ДяДя (?), 18:16, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Буквально везде ;-)
    https://aphyr.com/posts/284-call-me-maybe-mongodb
     

  • 1.13, Аноним (-), 19:45, 06/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Поздравляю всех коллег-идиотов, которые до сих пор используют Монгу направо и налево. Третий релиз - конечно, важная веха у продукта, который после релиза Postgres hstore стал крайне нишевым.
     
     
  • 2.15, Аноним (-), 19:59, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У них разные ниши. Выше комментарий на эту есть. Подтягивайте матчасть, не стесняйтесь.
     
     
  • 3.16, Аноним (-), 20:08, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > У них разные ниши. Выше комментарий на эту есть. Подтягивайте матчасть, не
    > стесняйтесь.

    Ой, я во-первый, обратите внимание указал, что Монга ща весьма нишевая штука, не то что было в 2011-2013, когда не было быстрого persistent key-value и, ради этой скорости, денормализировали все, что можно и что нельзя тоже.

    Подскажите кейс, ну то есть нишу, плиз, где ща врывается монга.

     
     
  • 4.20, Аноним (-), 23:32, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Да хоть прямая работа с GeoJSON. На самом деле примеров полно, у PostgreSQL с его JSONB с этим сильно грустнее.
     

  • 1.22, Аноним (-), 00:04, 07/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это надо для NodeJS?
     
     
  • 2.23, Аноним (-), 00:22, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Драйвера есть для большинства популярных языков, не только JS.
     
     
  • 3.29, Аноним (-), 05:15, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ещё драйвера надо ставить?
     
     
  • 4.31, Аноним (-), 15:48, 07/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Как и у любой другой ДБ.
     

  • 1.25, Аноним (-), 01:52, 07/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Графички вставки в монгу, у которой нет транзакций, супротив иннодб, доставляют неимоверно.

    MongoDB как зеркало мировой СУБД-революции
    http://arbinada.com/main/node/1283

     
  • 1.34, Аноним (-), 19:42, 18/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что у нее с транзакциями? Можно в транзакции сделать select for update одной записи, другой записи, обновить их и сделать commit или rollback?
     
     
  • 2.35, AlexAT (ok), 00:49, 19/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Что у нее с транзакциями? Можно в транзакции сделать select for update
    > одной записи, другой записи, обновить их и сделать commit или rollback?

    Запись атомарная, в том числе сета. Транзакций (ACID/MVCC) в оригинале нет. Но есть вариант MongoDB от Tokutek - TokuMX, где эти самые ACID/MVCC транзакции вполне себе есть.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру