Открыл для себя Mongo Db…

Случайности — не случайны

случайности - не случайныНа работе есть задача — заказчику необходимо обрабатывать большие объемы информации. Стал собирать информацию, смотреть как и на чем работают большие системы. В итоге, год назад краем уха услышанные buzz words, стали обретать определенный смысл.

Выяснилось что NoSQL, это вовсе не название секты ненавистников SQL, а сокращение от Not Only SQL.

NoSQL решения используют как мелкие стартапы, так и крупные социальные веб-проекты.

Основное преимущество NoSQL — обеспечение горизонтального масштабирования. К горизонтальному масштабированию вынуждены прибегать тогда, когда исчерпаны ресурсы вертикального масштабирования. Иными словами, когда уже самый мощный сервер, купленный за самые большие деньги, не обеспечивает должного времени отклика, необходимо добавлять ещё один. Буквально — ставить рядом. Потом ещё один, потом ещё и ещё…

Если при применении обычной реляционной СУБД для вертикального масштабирования особых архитектурных решений применять не требуется, то, при возникновении потребности роста в ширину, появляется ряд трудностей и ограничений как на этапе разработки, так и при последующей эксплуатации системы.

Mongo DB

logo-mongoDB.png

Своё погружение в NoSQL я начал с Mongo DB — http://www.mongodb.org/.

Основные фичи Mongo Db, которые мне хотелось бы выделить особо (полный список есть на сайте):

  • Документо-ориентированное хранилище.
    Записи хранятся в виде JSON-объектов. При этом нет жестко заданной схемы. Основные понятия – документ и содержащая его коллекция. Документ может сам содержать в себе коллекции. Одним словом, полный отход от понятия строки и таблицы
  • Любой атрибут проиндексирован
  • Простой механизм горизонтального масштабирования — Auto-Sharding
  • Запросы интуитивно понятны и легко перекладыватся с/на SQL

Пробуем…

На Amazon Web Services я создал micro instance (самая дешевая виртуалка) и развернул из готового образа ubuntu + ruby + mongodb. Из мануальной терапии мною были проделаны только пассы по наложению на новый образ бинарника php и драйвера для работы php с Mongo DB. Зря потратил время. Можно было просто скачать экзешник/бинарник на свою рабочую машину и не мудрить с виртуалками. Mongo Db — зверек неприхотливый.

Как оказалось позже, для того что бы просто попробовать написать что-то в Mongo Db, всё вышеупомянутое делать совсем не нужно. На официальном сайте есть ссылка на онлайн консоль, где на чистом JavaScript, в режиме реального времени, можно потренироваться в общении на монго-диалекте SQL.

Try MongoDB.png
Тестовый полигон здесь — http://try.mongodb.org/

Кто попробовал и уже использует?

Удачи!

This entry was posted in Databases and tagged , , . Bookmark the permalink.
  • http://twitter.com/quard Irek Khasyanov

    этажом ниже в ЦВТ я тоже попробовал mongodb в одном большом проекте :) впечатления двоякие, версия 1.6.0 иногда просто тупо форкается и начинает тормозить. Будем пробовать 1.6.5. А так очень все в этой бд нравится

  • http://twitter.com/Rashid80 Рашид В. Фатыхов

    Один из минусов Монго, как впрочем и всех NoSQL БД – это потеря некоторого объема данных, которые Монго хранит в ОЗУ, при перегрузе или выключении сервера вследствии сбоя.

    А что с поддрежкой Монго в .net – есть ли драйвер или api для доступа?

  • Anonymous

    http://www.mongodb.org/display/DOCS/Drivers
    и здесь есть ссылки на статьи и примеры
    http://www.mongodb.org/display/DOCS/CSharp+Community+Projects

  • http://twitter.com/Rashid80 Рашид В. Фатыхов

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

    Хочу попробовать из 1с 8.2 поработать с монго, вот такой я извращенец )))

  • Anonymous

    Приходи к нам в EPAM, будут тебе задачи :)

  • http://twitter.com/Rashid80 Рашид В. Фатыхов

    Я уже месяц живу в Казани ;)