MongoDB или CouchDB - подходят для производства?

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

Сейчас я смотрю на эти решения для хранения данных (сейчас я поддерживаю MongoDB), однако эти проекты довольно молоды, и поэтому я предвижу, что мне придется потрудиться, чтобы убедить моего менеджера, что мы должны принять это новая технология.

Что я хотел бы знать, это:

  1. Кто сегодня использует MongoDB или CouchDB в производственной среде?

  2. Как вы используете MongoDB/CouchDB?

  3. С какими проблемами (если есть) вы столкнулись, когда приняли этот новый механизм хранения (и как вы их преодолели)?

  4. Как вы справились с проблемами миграции, с которыми вам приходилось сталкиваться?

  5. Есть ли у вас хороший или плохой опыт использования любого из этих решений, которым вы хотели бы поделиться?

19 ответов

Решение

Я технический директор 10gen (разработчики MongoDB), поэтому я немного предвзят, но я также управляю несколькими сайтами, которые используют MongoDB в производстве.

http://www.businessinsider.com/ уже более года использует монго в производстве. Они используют его для всего: от пользователей и постов в блогах, до каждого изображения на сайте.

Shopwiki использует его для нескольких вещей, включая аналитику в реальном времени и уровень кэширования. Они делают более 1000 записей в секунду в довольно большую базу данных.

Если вы перейдете на страницу mongodb Production Deployments, вы увидите людей, которые используют mongo на производстве.

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

BBC и http://meebo.com/ используют CouchDB в производстве, как и один из моих клиентов. Вот список других людей, использующих Couch: CouchDB в дикой природе

Основная задача состоит в том, чтобы знать, как организовать ваши документы и перестать думать с точки зрения реляционных данных.

SourceForge использует MongoDB. Смотрите эту презентацию или читайте здесь.

Мы используем CouchDB как замену MySQL для наших магазинов (70,0000 товаров / магазин, всего 4 миллиона атрибутов всех товаров, перекрестные связи между товарами).

Нашими целями были:

  1. Простая репликация от master-db до нескольких клиентов с разными документами.

  2. Быстрые предварительно рассчитанные данные, такие как "сколько деталей у меня есть с этим атрибутом и этим фильтром, подходящим для этих условий"

факты:

  1. Наши магазины теперь работают намного быстрее, чем с MySQL (а базе данных mysql потребовалось дополнительно 1-3 дня предварительного расчета (таким образом, обновление производилось два раза в месяц), что делает данные готовыми для подсчета и фильтрации продуктов, CouchDB требуется 5 часов, поэтому мы могли бы обновлять данные о продукции каждую ночь)
  2. Настроить (отфильтровать) распределение данных и резервное копирование на узлы магазина быстро и просто

но также:

  1. Понимать карту / уменьшить и пределы отсутствия соединений довольно сложно
  2. Нет операций с данными, такими как "удалить где" или "обновить где" без внешних программ
  3. Репликация работает хорошо, если нет проблем; тогда действительно сложно выяснить в чем причина (для начинающих)
  4. Установка CouchDB без двоичных файлов (да, есть некоторые в дикой природе, но не для каждой ОС / версии) может быть сложной, если вы не фанат Linux. Но сообщество CouchDB полезно (#couchdb), и, к счастью, есть компании (cloudant, iriscouch), которые предлагают услуги от бесплатного до крупного бизнеса.
  5. CouchDB продвигается вперед, поэтому происходит множество изменений (улучшений), которые могут изменить их работу. Но основные вещи остаются стабильными.

В результате: MySQL как база данных для создания и обслуживания данных является надежной, простой в понимании и использовании. Я думаю, что мы не изменим это. Но я также не хочу упустить возможности просмотра CouchDB и простоту настройки репликации.

Производственные кушетки иногда вызывали проблемы после нескольких месяцев работы из-за неправильной конфигурации и забытых протоколов (сборка представления занимает слишком много времени или зависает, репликация останавливается), но никогда не теряла данные и всегда легко сбрасывалась.

Я использую CouchDB в производстве. В настоящее время он хранит все те "необязательные" поля, которые не были в исходной схеме БД. И сейчас я думаю о переносе всех данных в CouchDB.

Это довольно рискованный шаг, я признаю. Во-первых, потому что это еще не v1.0. И, во-вторых, потому что он голоден. По моим расчетам, файл CouchDB (с индексами) примерно в 30 раз больше, чем база данных MySQL с теми же строками. Но я уверен, что все будет хорошо.

CouchDB 0.11 (выпущенный в конце марта) - это версия с заморозкой для 1.0. Это означает, что мы будем поддерживать совместимость с текущим API для 1.0, поэтому сейчас хорошее время, чтобы еще раз взглянуть на CouchDB, если у вас нет времени.

Выпуск исходного кода CouchDB 0.11 доступен здесь. Здесь есть бинарные установщики и другие полезности.

Я ничего не знаю о MongoDB, но из FAQ CouchDB:

CouchDB готов к производству?

Да, см. InTheWild для частичного списка проектов, использующих CouchDB. Еще один хороший обзор - CouchDB Case Studies

Также несколько ссылок:

Мы используем couchdb в производстве и с тех пор незадолго до того, как проект перешел под зонтик Apache.

Мы используем его для хранения всего, что в противном случае мы могли бы использовать в БД, плюс все виды неструктурированных данных. Лично мне очень нравится, как вы можете просто добавить в него все виды данных и использовать представления, чтобы отбросить то, что вам не нужно, в зависимости от ситуации.

Самая сложная часть уходила от мышления DBMS. Мы написали наши собственные утилиты миграции, когда формат хранилища изменился просто для обеспечения безопасности, так что это не было проблемой.

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

Мы используем CouchDB для хранения мобильных входящих и исходящих сообщений, а также для отчетов об этом трафике с помощью некоторых пользовательских представлений, которые я написал. Внешний интерфейс написан на Python. У нас не было никаких реальных технических проблем, и это работает с конца декабря. Единственным препятствием, с которым я столкнулся, было поначалу думать с точки зрения MapReduce, но как только я научился это делать, все остальное прошло гладко.

В настоящее время мы используем MongoDB в качестве слоя кэширования, а также механизм хранения для импорта и манипулирования данными о продукте. Мы являемся компанией электронной коммерции, управляющей более чем двумя миллионами продуктов (более 100 миллионов атрибутов), охватывающими более 10 дистрибьюторов, и без MongoDB эта задача была бы почти невозможной.

В настоящее время мы используем mongodb в качестве службы хранения файлов для совместной работы по локальной сети. Кроме того, такие проекты, как trello, используют mongodb в качестве своего хранилища данных. Я использовал couchdb ранее, но не в производственных мощностях.

Adobe использует MongoDB для своего предстоящего выпуска Adobe Experience Manager (ранее Day CQ) в качестве ядра ядра БД.

Несколько клиентов в агентстве, в котором я работаю, используют CouchDB для проектов для крупных клиентов.

Оба, на мой взгляд, отличные и жизнеспособные БД.:)

Мы используем MongoDB в производстве нашего мобильного бэкэнда, а именно Netmera. Мы используем его для хранения всех данных пользователя и контента.

Мы используем mongodb в производстве для

www.beachfront.io - около 5 000 запросов на запись в секунду www.beachfrontbuilder.com - 500 запросов на чтение / запись в секунду, поддержка 10 млн. пользовательских данных и удаленный доступ.

Единственная проблема, стоящая перед архивированием данных, мы преодолеваем, внедряя наш пользовательский компонент.

Этот вопрос уже получил ответ, но теперь еще одна NoSQL DB находится в тренде для многих своих замечательных возможностей. это Couchbase; который работает как CouchbaseLite на мобильной платформе и Couchbase Server на вашей стороне сервера.

Вот некоторые из основных особенностей Couchbase Lite.

Couchbase Lite - это легковесный, ориентированный на документы (NoSQL) механизм синхронизируемой базы данных, подходящий для встраивания в мобильные приложения.

Легкий вес означает:

Встроенный - механизм базы данных - это библиотека, связанная с приложением, а не отдельный процесс сервера. Небольшой размер кода - важно для мобильных приложений, которые часто загружаются по сотовым сетям. Быстрое время запуска - важно, потому что мобильные устройства имеют относительно медленные процессоры. Низкое использование памяти - типичные наборы мобильных данных относительно невелики, но некоторые документы могут иметь большие мультимедийные вложения. Хорошая производительность - точные цифры зависят, конечно, от ваших данных и приложения.

Документно-ориентированные средства:

Хранит записи в гибком формате JSON, вместо того, чтобы требовать предопределенные схемы или нормализацию. Документы могут иметь двоичные вложения произвольного размера, например, мультимедийный контент. Формат данных приложения может развиваться с течением времени без необходимости явных миграций. Индексирование MapReduce обеспечивает быстрый поиск без необходимости использования специальных языков запросов.

Синхронизируемый означает:

Любые две копии базы данных могут быть синхронизированы с помощью эффективного, надежного, проверенного алгоритма репликации. Синхронизация может быть по требованию или непрерывной (с задержкой в ​​несколько секунд). Устройства могут синхронизироваться с подмножеством большой базы данных на удаленном сервере. Механизм синхронизации поддерживает прерывистые и ненадежные сетевые подключения. Конфликты могут быть обнаружены и разрешены, при этом логика приложения полностью контролирует слияние. Деревья ревизий допускают сложные топологии репликации, в том числе сервер-сервер (для нескольких центров обработки данных) и одноранговый, без потери данных или ложных конфликтов. Couchbase Lite предоставляет собственные API для бесшовной разработки под iOS (Objective-C) и Android (Java). Кроме того, он включает подключаемый модуль Couchbase Lite для PhoneGap, который позволяет создавать приложения для iOS и Android, которые вы разрабатываете, используя знакомые методы программирования веб-приложений и среду разработки мобильных приложений PhoneGap.

Вы можете узнать больше на Couchbase Lite

и сервер Couchbase

Это идет к следующей большой вещи.

Я использую CouchDB в производстве уже почти 2 года. Нет миграции, так как проект начался непосредственно с реализации CouchDB. Он служит базой данных, которая хранит данные одного электронного продукта от начала до упаковки.

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

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

Моя база данных CouchDB не такая сумасшедшая, как другие гигантские компании. Но пока у меня все хорошо. В настоящее время у меня есть 24000 документов на 700 МБ.

Мне нравится CouchDB - "репликация", "сохранение редакций документа".

Я прочитал много хороших отзывов на MongoDB, и я хочу попробовать, если есть шанс.

Говоря о производстве, бесшовное восстановление после отказа / восстановление требуют няни
1- Couchbase, нет плавного переключения / восстановления, требуется ручное вмешательство.
восстановление баланса занимает слишком много времени, слишком большой риск, если потеряется более одного узла.

2- Монго с осколками, восстановление данных после потери сервера конфигурации, задача не из легких

Вот список производственных сайтов с mongoDB

  • The New Yorks Times: использование его в приложении для создания форм для представления фотографий. Отсутствие схемы в Mongo дает производителям возможность определять любую комбинацию пользовательских полей формы.
  • SourceForge: используется для внутреннего хранения на первых страницах SourceForge, страницах проекта и страницах загрузки для всех проектов.
  • Bit.ly
  • Etsy
  • IGN: поддерживает аналитику трафика в реальном времени и API-интерфейсы RESTful Content.
  • Justin.tv: предоставляет инструменты внутренней аналитики Justin.tv для определения вирусности, удержания пользователей и общей статистики использования, которые не могут предоставить готовые решения.
  • Posterous
  • постигать интуитивно
  • Foursquare: базы данных Sharded Mongo используются для большинства данных в foursquare.
  • Business Insider. Используется с начала 2008 года. Все данные сайта, включая публикации, комментарии и даже изображения, хранятся в MongoDB.
  • Github: используется для внутренней отчетности.
  • Исследователь: перенес их сайт с Cold Fusion и SQL Server на Drupal 7 и MongoDB.
  • Grooveshark: в настоящее время использует Mongo для управления более миллиона уникальных пользовательских сессий в день.
  • Buzzfeed
  • метание диска
  • Evite: Используется для аналитики и быстрой отчетности.
  • Squarespace
  • Shutterfly: используется для различных постоянных требований к хранению данных в Shutterfly. MongoDB помогает Shutterfly создать непревзойденный сервис, который обеспечивает более глубокие и личные отношения между клиентами и теми, кто наиболее важен в их жизни.
  • Шиворот
  • Поделись этим
  • Mongohq: предоставляет платформу хостинга для MongoDB, а также использует MongoDB в качестве серверной части для своего сервиса. На нашей странице хостинг-центров представлена ​​более подробная информация о MongoHQ и других вариантах хостинга MongoDB.

и больше...

Извлечено из: http://lineofthought.com/tools/mongodb

Вы также можете проверить другие базы данных или инструменты там.

У MongoDB есть некоторые проблемы с лицензированием предприятий, я не уверен в деталях, но наш юридический отдел недвусмысленно сказал нам, что нам не разрешили использовать MongoDB в любом из наших продуктов.

Другие вопросы по тегам