Что такое couchdb, для чего и как мне его использовать? - PullRequest
10 голосов
/ 12 октября 2009

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

Не могли бы вы прояснить эту загадку для меня?

Ответы [ 5 ]

14 голосов
/ 12 октября 2009

Это нереляционная база данных, с открытым исходным кодом, распределенная (инкрементная, двунаправленная репликация), без схемы. База данных CouchDB представляет собой набор документов; каждый документ представляет собой набор строковых «ключей» и соответствующих «значений» (которые могут быть числами, строками, списками, датами, ...). Вы можете иметь индексы, запросы, представления.

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

Но если вся ваша работа удачно вписывается в реляционную базу данных, это то, что вы, вероятно, захотите продолжить использовать для производственной работы (даже если «тренировка» с некоторыми нереляционными БД все же стоит вашего времени, только для личного рост и назидание, это сильно отличается от переноса огромных производственных систем из реляционной БД! -).

13 голосов
/ 12 октября 2009

Похоже, вы должны читать Почему CouchDB

1 голос
/ 17 ноября 2009

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

И дело не только в том, что CouchDB нереляционный: если вы слишком сосредоточены на этом, вы упускаете суть. CouchDB подключен к сети, все, что вам нужно для начала, это HTTP для создания и выполнения запросов (GET / PUT / POST / DELETE ...), и это RESTful, плюс тот факт, что он переносим и отлично подходит для однорангового обмена , Он также может обслуживать веб-приложения в так называемых «CouchApps», где CouchDB полностью хранит изображения, CSS, разметку как данные, хранящиеся в специальных документах, называемых проектными документами.

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

1 голос
/ 12 октября 2009

Я далеко не эксперт (все, что я сделал, это немного поиграл с этим ...), но вот как я думаю об этом:

Обычно, когда я проектирую приложение, у меня есть группа серверов приложений за балансировщиком нагрузки. Часто у меня бывают липкие сессии, так что каждый пользователь во время этого сеанса возвращается на один и тот же сервер приложений. Я собираюсь привязать экземпляр couchdb к каждому серверу приложений.

Таким образом, вы можете использовать этот локальный couchdb для доступа к пользовательским настройкам, данным о продукте ... любые данные, которые у вас есть, не обязательно должны быть в курсе.

Итак ... теперь у вас есть данные об этих локальных CouchDB. CouchDB позволяет репликацию. Таким образом, каждый фиксированный период времени объединяйте данные обратно (каждые X секунд?) В одноранговые узлы, чтобы поддерживать их актуальность.

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

Это отвечает на ваш вопрос?

1 голос
/ 12 октября 2009

Цитировать Википедия

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

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

Это отличие в модели хранения данных отличает CouchDB от таких продуктов, как MySQL и SQL Server.

С точки зрения программного доступа к CouchDB, он предоставляет REST API, к которому вы можете обращаться, отправляя HTTP-запросы из вашего кода

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

...