CouchDb - Сравнение баз данных MongoDb и NoSQL (работа с документами XML) - PullRequest
5 голосов
/ 11 октября 2011

Я работаю над проектом с использованием Java и Spring 3. Для меня есть новая задача. Будут файлы XML, и я получаю эти файлы и преобразую их в объекты. После этого я положу их в базу данных.

Основная тема для меня, чтобы изучить базы данных nosql. CouchDb и MongoDb - базы данных, которые я должен искать. Я сделаю search для этих объектов (одним из типов индекса будет дата, и я сделаю дату между выборами) в базе данных. Performance так важен для меня и

Я буду работать над huge data, поэтому я должен искать в базах данных nosql.

Что вы предлагаете в соответствии с моим сценарием, каковы их плюсы / минусы и какой из них мне следует выбрать и почему?

Я искал и вижу, что Couch DB использует REST API, а Mongo DB использует драйверы, и это является плюсом производительности для Mongo, как показано здесь: http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB

Однако Couch DB использует репликацию для масштабирования (плюс производительность?)

Также я понимаю, что есть BaseX и eXist. В зависимости от моих потребностей, что вы предлагаете, кто-нибудь работал с ними?

PS: Также я получу XML-файлы в виде логов. Они не изменятся, и я не буду манипулировать данными на нем.

Ответы [ 3 ]

1 голос
/ 11 октября 2011

Это довольно большой вопрос, но я сделаю все возможное, чтобы решить его.Компания, в которой я работаю, делала переход от разработки наших приложений с Mysql на NoSQL, и я был лидером в первой базе данных NoSQL, мы решали, с какой базой данных NoSQL работать.Я был между MongoDB, CouchDB и Кассандрой.Одним из важных факторов, на которые мне пришлось обратить внимание, было то, насколько легко будет написать базовые функции для работы с базой данных, чтобы вам не приходилось понимать, что происходит, но при этом все еще можно было выполнять запросы и так далее.Проблема с cassandra заключалась в том, что API был очень низкого уровня, и для написания надежного интерфейса высокого уровня потребовалось бы некоторое время, а у нас не было такого времени.Проблема с couchdb была в сервисе REST.Так как мы уже подключались к нашим внутренним API, используя отдых, это был бы сервис двойного отдыха.REST, как правило, перебирает http, и http довольно прост, чтобы с ним было легко работать.И это накладные расходы добавляет время для загрузки информации.Поэтому мы взяли mongodb по этой причине и по многим другим причинам.Кроме того, поскольку он является драйвером, он разработан для работы с языком программирования, что замечательно, если ваш язык поддерживается, отстой, если нет.Так как Java поддерживается mongodb, это нормально.

Я бы порекомендовал преобразовать файлы XML в объекты и затем сохранить объекты в монго.поэтому каждый XML-файл будет встроенным в монгодокументы. Самое замечательное в монго - вы можете искать во встроенных документах и ​​индексировать их.Так что наслаждайтесь шляпой

1 голос
/ 11 октября 2011

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

Однако у людей MongoDB есть сравнение с CouchDB здесь . Существует также немало независимых мнений ( 1 , 2 ).

Также следует учитывать качество доступных драйверов базы данных для вашей среды. По моему опыту, драйвер Java MongoDB достаточно стабилен, но мне кажется, что он по-прежнему требует больше ресурсов, чем должен. Я не имею ни малейшего представления о драйверах CouchDB.

Есть ли у вас какие-либо другие требования, кроме возможности хранить большие объемы данных? Вам нужна репликация или шардинг?

PS: Как вы храните файлы XML в любом случае? XML-файлы не отображаются в JSON (что, например, использует MongoDB) - если вы не храните весь XML-текст в одном поле.

PS2: Вы уверены, что вам нужна база данных на основе документов? Если вы собираетесь выполнять поиск только по нескольким полям, которые известны заранее, реляционная БД может быть проще в обращении. БД на основе документов начинают иметь смысл только тогда, когда у вас нет предопределенной схемы для ваших данных или когда вам необходимо хранить более сложные иерархии объектов.

PS3: Могу я спросить, почему огромные данные означают NoSQL для вас? Вы можете хранить безумные объемы данных в любой современной реляционной базе данных (конечно, если у вас есть оборудование).

EDIT:

Пара связанных с этим вопросов SO:

(... и еще около тысячи)

Может быть и эти:

0 голосов
/ 15 августа 2012

Я хотел бы добавить, что Couchbase является более быстрым и более масштабируемым вариантом, чем CouchDB, версия 2.0 представляет Views, на высоком уровне это распределенный memcached (Membase Server), объединенный с CouchDB, но, конечно, более сложный, чем просто смешивая их вместе. Создатели CouchDB и Membase Server создали Couchbase.

Также, вероятно, наилучшим способом обработки является преобразование XML-JSON для хранения и JSON-XML при извлечении. Если вы выполняете запросы XPATH в базе данных, то при создании View это должно быть немного сложнее.

www.couchbase.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...