Описание тега couchdb
(все ниже было скопировано прямо из текущей вики CouchDB)
Вступление
Apache CouchDB - это масштабируемая, отказоустойчивая база данных без схем, ориентированная на документы, написанная на Erlang. Он используется в больших и малых организациях для множества приложений, где традиционная база данных SQL - не лучшее решение проблемы. Среди других функций он обеспечивает:
- RESTful HTTP/JSON API, доступный из многих программных библиотек и инструментов.
- Futon, графический интерфейс и инструмент управления на основе браузера
- Пошаговая и гибкая репликация с управлением конфликтами
- Добавочные запросы Map/Reduce, написанные на любом языке (встроенная поддержка JavaScript)
- Отличная целостность / надежность данных
- Встроенная поддержка BLOB (двоичных больших объектов)
- Простая установка на многих платформах, от серверов до мобильных устройств
- Сильное и активное сообщество
- Хорошая документация в виде книг, презентаций, сообщений в блогах, вики-страниц и т. Д.
Поскольку данные, хранящиеся в CouchDB, представляют собой документ (-ы) JSON, структура данных или документа (-ов) может изменяться динамически. Эта функция значительно упрощает обслуживание и развитие базы данных, особенно со временем, когда данные и их использование развиваются. Кроме того, CouchDB не полагается на SQL JOINS для слияния связанных данных. Это часто сбивает с толку некоторых пользователей традиционных баз данных SQL, но, как правило, это не проблема, когда пользователи CouchDB знакомятся с его мощной структурой Map/Reduce.
Одна из самых мощных функций CouchDB - это структура репликации. Эта структура репликации предоставляет полный набор функций:
- Master → Slave репликация
- Мастер ↔ Мастер репликации
- Отфильтрованная репликация
- Инкрементная репликация с двунаправленным обнаружением / разрешением конфликтов
Эти функции репликации можно использовать в сочетании для создания эффективных решений многих проблем в ИТ-индустрии, таких как надежность и масштабируемость. В дополнение к фантастическим функциям репликации, надежность и масштабируемость CouchDB дополнительно улучшены за счет реализации на языке программирования Erlang. Erlang имеет встроенную поддержку параллелизма, распределения, отказоустойчивости и уже много лет используется для создания надежных систем в телекоммуникационной отрасли. По своей конструкции язык Erlang и среда выполнения могут использовать преимущества нового оборудования с несколькими ядрами ЦП. Когда вы посмотрите на все замечательные характеристики Erlang, станет ясно, почему CouchDB использует его в качестве основы.
Что это не
Чтобы лучше понять, что такое CouchDB, может быть полезно понять несколько вещей, которыми CouchDB не является.
- Реляционная база данных. Эти различия сформулированы выше в разделе Meet CouchDB и других частях этой Wiki.
- Замена всех баз данных. При разработке и проектировании хорошей информационной системы вы должны выбрать лучший инструмент для работы. Хотя CouchDB можно использовать в самых разных типах приложений, включая финансовые, вы можете обнаружить, что реляционная база данных или другое хранилище данных лучше подходят для вашей проблемы. Если вы новичок в CouchDB и не уверены, подходит ли он для решения вашей проблемы с управлением данными, обратитесь за советом к другим участникам списка рассылки и канала IRC#couchdb.
- Объектно-ориентированная база данных. Хотя CouchDB хранит объекты JSON, он не предназначен для работы в качестве бесшовного уровня сохраняемости для языка программирования OO.
Ключевые характеристики
Давайте рассмотрим некоторые из основных элементов CouchDB.
Документы
Документ CouchDB - это объект JSON, состоящий из именованных полей. Значения полей могут быть строками, числами, датами или даже упорядоченными списками и ассоциативными картами. Примером документа может быть сообщение в блоге:
{
"Subject": "I like Plankton"
"Author": "Rusty"
"PostedDate": "5/23/2006"
"Tags": ["plankton", "baseball", "decisions"]
"Body": "I decided today that I don't like baseball. I like plankton."
}
В приведенном выше примере документа Subject
- это поле, содержащее единственное строковое значение "Мне нравится планктон". Tags
это поле, содержащее список значений "планктон", "бейсбол" и "решения".
База данных CouchDB - это плоская коллекция этих документов. Каждый документ идентифицируется уникальным идентификатором.
Просмотры
Чтобы решить эту проблему добавления структуры обратно к полуструктурированным данным, CouchDB интегрирует модель представления, используя JavaScript для описания. Представления - это метод агрегирования документов в базе данных и создания отчетов по ним, они создаются по запросу для агрегирования, объединения и составления отчетов по документам базы данных. Представления строятся динамически и не влияют на основной документ; вы можете иметь столько различных представлений одних и тех же данных, сколько захотите.
Без схемы
В отличие от баз данных SQL, которые предназначены для хранения сильно структурированных и взаимосвязанных данных и составления отчетов по ним, CouchDB предназначен для хранения и создания отчетов по большим объемам полуструктурированных, ориентированных на документы данных. CouchDB значительно упрощает разработку приложений, ориентированных на документы, которые составляют основную часть веб-приложений для совместной работы.
В базе данных SQL по мере развития необходимо обновлять схему и хранилище существующих данных. Это часто вызывает проблемы, поскольку возникают новые потребности, которые просто не предполагались в первоначальном дизайне базы данных, и делает распределенные "обновления" проблемой для каждого хоста, которому необходимо выполнить обновление схемы.
В CouchDB никакая схема не применяется, поэтому новые типы документов с новым значением можно безопасно добавлять вместе со старыми. Механизм просмотра, использующий JavaScript, разработан для простой обработки новых типов документов и разнородных, но похожих документов.
Распространено
CouchDB - это одноранговая распределенная система баз данных. Любое количество хостов CouchDB (серверов и офлайн-клиентов) может иметь независимые "реплики" одной и той же базы данных, где приложения имеют полную интерактивность базы данных (запрос, добавление, редактирование, удаление). При подключении к сети или по расписанию изменения базы данных дублируются в двух направлениях.
CouchDB имеет встроенное обнаружение конфликтов и управление ими, а процесс репликации является инкрементальным и быстрым, копируются только документы и отдельные поля, измененные с момента предыдущей репликации. Большинство приложений не требуют специального планирования, чтобы воспользоваться преимуществами распределенных обновлений и репликации.
В отличие от громоздких попыток закрепить распределенные функции на одних и тех же устаревших моделях и базах данных, это результат тщательного предварительного проектирования, разработки и интеграции. Модели документа, представления, безопасности и репликации, язык запросов специального назначения, эффективная и надежная структура диска - все это тщательно интегрировано в надежную и эффективную систему.
Полезные ссылки
- Домашняя страница CouchDB: http://couchdb.apache.org/
- Текущие версии: https://cwiki.apache.org/confluence/display/COUCHDB/Current+Releases
- Документация здесь: http://docs.couchdb.org/en/latest/
- Исходный код: https://github.com/apache/couchdb
Книги
Начало работы с CouchDB Исключительная масштабируемость у вас под рукой
Масштабирование репликации, кластеризации и администрирования CouchDB
Связанные теги:
База данных, ориентированная на документы, нереляционная база данных nosql /questions/tagged/couchdb-futon pouchdb