Описание тега couchdb

Apache CouchDB - это база данных, ориентированная на документы, которую можно запрашивать и индексировать в стиле MapReduce. Он предоставляет чистый API-интерфейс, делающий возможным взаимодействие с любого языка с возможностью отправки HTTP-запросов. Это также позволяет "Futon", интерфейсу администрирования, полностью работать в браузере. Он также предлагает инкрементную репликацию с двунаправленным обнаружением и разрешением конфликтов.

(все ниже было скопировано прямо из текущей вики 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 имеет встроенное обнаружение конфликтов и управление ими, а процесс репликации является инкрементальным и быстрым, копируются только документы и отдельные поля, измененные с момента предыдущей репликации. Большинство приложений не требуют специального планирования, чтобы воспользоваться преимуществами распределенных обновлений и репликации.

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

Полезные ссылки


Книги


Связанные теги:

База данных, ориентированная на документы, нереляционная база данных nosql /questions/tagged/couchdb-futon pouchdb