Возможности Mongodb

Я смотрел видео из Конференция Монго Москва .

Вот тезисы о возможностях, оставшиеся от увиденного.

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

Постарался быть объективным, если не получилось, напишите :)

  1. Данные в MongoDB представляют собой список хэшей JSON с вложенными массивами и хешами.

  2. Документ является одним из таких хэшей.

  3. Именно поэтому нет ALTER TABLE — структуры записей не зависят друг от друга.

  4. Параметры сортировки в настоящее время поддерживаются плохо, UTF поддерживается хорошо.

  5. Меня поразил синтаксис в некоторых местах: в MongoDB пишут «db.schema.find( { "s", { $gt: "a" } } ) вместо "where s > "a"'.

  6. Никаких транзакций.

    Но операции над документами гарантированно будут атомарными.

  7. При вызове getLastError он проверяет, произошла ли ошибка.

    В безопасном режиме (во многих драйверах он стоит по умолчанию) он вызывается после каждой записи.

    Можно вызывать реже — меньше накладных расходов, но в случае ошибки придется перезаписывать сразу кучу записей.

  8. getLastError можно ожидать не от всех серверов, а только от некоторых.

  9. Они предлагают создавать довольно сложные документы (например, один документ представляет собой блог с вложенными сообщениями, каждая из которых имеет вложенное дерево комментариев).

    ИМХО это плохая идея - нагрузка на один элемент может стать критически большой.

  10. Нет ПРИСОЕДИНЯЙТЕСЬ.

    Просто создайте структуру данных, чтобы она вам не требовалась.

    Мыши, станьте ёжиками.

  11. Есть репликация, журнал репликации (не знаю, бинарный или командный).

  12. Если умрет мастер репликации, новый будет выбран из числа слейвов через 10-20 секунд.
  13. Есть осколки.

    По диапазонам, а не по хешам.

    Диапазоны для каждого шарда задаются в конфиге.

  14. Перешардинг осуществляется путем корректировки этих диапазонов.

    В этом случае записи в измененные шарды блокируются на время переноса.

  15. Данные в сотых долях делятся на куски примерно по 200М.

  16. Интерфейс MapReduce существует, но он был упомянут лишь вкратце.

  17. Существуют пространственные индексы.

  18. Имеется хранилище mmaped с регулируемой частотой fsync.
  19. Кажется, что они хранят в памяти только индексы, но, возможно, это не так.

    Я бы не хотел.

  20. Индексы — это некоторые деревья, похожие на B-дерево.

    Лучше периодически их пересобирать, но начиная с версии 1.8 - довольно редко.

  21. Интересно, что в фильтрах запросов можно задать условие $where и записать условие фильтра на JS.
  22. Правда, индексы в этом случае использоваться не будут (конечно).

  23. Существуют разреженные индексы — если атрибут установлен только для небольшого количества документов, в индекс будут включены только они.

  24. Покрытые индексы — это IOT, т. е.

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

  25. Одна запись в индексе составляет около 40 байт служебных данных.

  26. Оптимизатор эмпирических запросов, что настораживает.
  27. Оптимизирует коэффициент сканирования индекса в соответствии с количеством возвращаемых документов.

  28. В любом случае используемый индекс можно указать в подсказке.

Теги: #mongodb #NoSQL #NoSQL
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.