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

485

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

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

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

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

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

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

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

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

Alan
источник
2
Просматривая ответы, я действительно не нашел то, что искал. Поскольку обе базы данных очень похожи, какую выбрать? Каковы преимущества любого из них? Для какого приложения выбрать какой? Было бы хорошо, если бы кто-то мог ответить на эти вопросы.
Полемон
Это действительно зависит от того, как они будут использоваться. Отсутствие транзакций беспокоит многие среды, но отлично подходит для других. Кроме того, принципиально трудно создать резервную копию распределенной базы данных, хотя аргумент заключается в том, что постоянство данных обеспечивается за счет репликации на несколько сегментов.
Сэмюэль О'Мэлли
2
@ pauluss86 Я думаю, вам, вероятно, следует добавить отказ от ответственности к ссылке на pauluss86, что автор (Emin) на самом деле является конкурентом MongoDB (Hyperdex) - так что здесь просто небольшой уклон. Чтобы быть действительно справедливым, есть соответствующий ответ на InfoQ от MongoDB здесь - infoq.com/news/2013/02/MongoDB-Fault-Tolerance-Broken
victorhooi
@victorhooi правда, но это, на мой взгляд, остается серьезной проблемой. Есть также продолжение ответа InfoQ: ссылка . Лично я не слишком убежден защитой Монго. В любом случае, я рекомендую всем ознакомиться с этой проблемой (обе стороны), прежде чем выбирать базу данных.
pauluss86
Это говорит само за себя db-engines.com/en/ranking MongoDB с каждым днем набирает силу и является самым популярным хранилищем документов в Интернете
arkoak

Ответы:

268

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

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

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

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

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

user111359
источник
6
вот ссылка mongodb.org/display/DOCS/Production+Deployments
mdirolf
1
не могли бы вы заставить mongodb работать с v8 по умолчанию. и mongodb съедают слишком много памяти для бедных парней, которые используют VPS с 512M памяти.
Гуйлинь 桂林
Вы можете иметь AC (i) D по крайней мере - атомарность, потому что один главный писатель, согласованность, потому что у вас есть согласованность для каждого документа, долговечность, потому что вы можете указать, сколько записей необходимо до записи ACKing, например, сколько других узлов должно получить данные до Подтверждаю это.
Хенрик,
+1 за ссылки. Удивительно, сколько людей с использованием mongodb в производстве
Майкл Малура
Похоже, многое изменилось за последние 5 лет. Этот список огромен! :)
асинхронно
110

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

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

Мэтт Аймонетти
источник
7
На самом деле для меня главная проблема - вернуться назад, если нужно. Как только вы удалите «ограничения отношений» из своего разума, вам будет трудно вернуться назад. :)
johndodo
44

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

общежития
источник
30
Для чего они это используют? Или как они это используют?
Kiwicptn
26
Я знаю, что это старый вопрос, но, возможно, кто-то еще раз посмотрит на него. Вот презентация разработчика SourceForge о том, как они используют MongoDO: infoq.com/presentations/MongoDB-at-SourceForge
o1iver
34

Мы используем 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 и простоту настройки репликации.

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

okurow
источник
70 000 или 700 000 товаров в магазине? Кроме того, что-нибудь изменилось с тех пор, как вы написали пост? Возможно, реализованы некоторые недостающие функции?
Эрик Каплун
27

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

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

Серхио Туленцев
источник
1
Ну, это не сработало вообще. Я избавился от couchdb через пару месяцев.
Серхио Туленцев
@aetheria: он не справился с нагрузкой. Плюс у нас было так много записей, что нам нужно было бы сжимать его каждый час или около того. CouchDB не для приложений с интенсивной записью.
Серхио Туленцев
Спасибо. Я прав, что проблема заключается в обновлении существующих документов? т.е. писать новые документы можно, но обновление оставляет неиспользуемый мусор в файле. Это верно?
ᴇvᴀтᴇ
IIRC, даже новые записи были не слишком быстрыми. Слишком много дисков ищет с этим подходом с двумя заголовками.
Серхио Туленцев
2
@aetheria: обратно в MySQL, а затем в Монго. Было много проблем везде. :)
Серхио Туленцев
18

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

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

J Chris A
источник
17

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

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

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

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

оборота Саша Чедыгов
источник
Это старая новость: теперь ссылка гласит: «Да, посмотрите InTheWild, чтобы ознакомиться с частичным списком проектов, использующих CouchDB. Еще один хороший обзор - это тематические исследования CouchDB»
J Chris A
14
@J Chris A: Конечно, он старый, я опубликовал это полтора года назад. :)
Саша Чедыгов
16

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

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

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

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

clintm
источник
13

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

Райан Даффилд
источник
9

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

Джошуа Бернс
источник
2
Насколько надежным оказался mongoDB для вас? + Насколько хорошо работает репликация в реальной жизни?
Промышленный
4
Мы реализуем топологию набора реплик под управлением 1.6. (Не уверен, что младшая версия не доступна). Пока что единственная проблема, с которой мы столкнулись, это, очевидно, когда на диске не хватает места, даже если включены записи сохранения, флаги не поднимаются. Так что просто убедитесь, что у вас есть МНОГО места!
Джошуа Бернс
1
Однако надежность была феноменальной, на удивление такой же хорошей, как мы и надеялись. На данный момент проблем со сбоем нет - хотя это что-то вроде новой реализации.
Джошуа Бернс
1

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

Сумит Бишт
источник
0

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

Парвин Гасымзаде
источник
0

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

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

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

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

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

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

Николас TJ
источник
0

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

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

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

Udit
источник
0

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

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

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

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

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

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

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

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

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

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

и Couchbase Server

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

Мастер
источник
0

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

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

Muayad
источник
0

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

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

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

Андрей
источник
-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

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

фернандопасик
источник
Добавил большую часть списка к посту
fernandopasik
-6

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

Майк Карр
источник
1
хотя вы не указали точные проблемы с лицензированием, в лицензировании MongoDB нет ничего плохого mongodb.org/about/licensing. Используется лицензия AGPL, которая может быть причиной проблем в вашем юридическом отделе, но они утверждают, что любой клиент БД отдельная работа. «Мы обещаем, что ваше клиентское приложение, которое использует базу данных, является отдельной работой. Для этого драйверы, поддерживаемые mongodb.org (часть, которую вы связываете с вашим приложением), выпускаются под лицензией Apache, которая не содержит авторских прав».
Марек