MongoDB или CouchDB-подходят для производства? [закрытый]

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

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

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

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

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

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

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

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

19 ответов


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

businessinsider использует mongo в продукции на сверх год теперь. Они используют его для всего, от пользователей и сообщений в блогах, до каждого изображения на сайте.

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

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

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


на BBC и meebo.com Используйте CouchDB в продукции и так делает один из моих клиентов. Вот список других людей, использующих диван: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, но из CouchDB FAQ:

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

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

кроме того, некоторые ссылки:


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

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

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

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


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


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


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


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


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

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

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

мой CouchDB databse не такой сумасшедший, как другие гигантские компании. Но пока у меня все в порядке. В настоящее время у меня есть 24000 документов на 700MB.

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

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


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

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

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


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

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

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

легкий значит:

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

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

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

Syncable значит:

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

вы можете исследовать больше на Couchbase Lite

и Сервер Couchbase

Это будет следующая большая вещь.


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

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


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

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

оба большие и жизнеспособные DBs, на мой взгляд. :)


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

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

и многое другое...

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

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


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