Jump to content

Apache CouchDB

(Перенаправлено с CouchDB )
Apache CouchDB
Оригинальный автор(ы) Дэмиен Кац, Ян Ленардт, Наоми Слейтер, Кристофер Ленц, Дж. Крис Андерсон, Пол Дэвис, Адам Коколоски, Джейсон Дэвис, Бенуа Шено, Филипе Манана, Роберт Ньюсон
Разработчик(и) Фонд программного обеспечения Apache
Первоначальный выпуск 2005 г .; 19 лет назад ( 2005 )
Стабильная версия
3.3.3 [1]  Отредактируйте это в Викиданных / 4 декабря 2023 г .; 7 месяцев назад ( 4 декабря 2023 г. )
Репозиторий
Написано в Эрланг , JavaScript , C , C++
Операционная система Кросс-платформенный
Тип Документоориентированная база данных
Лицензия Лицензия Апач 2.0
Веб-сайт диван .apache .org  Edit this on Wikidata

Apache CouchDB — это с открытым исходным кодом документально-ориентированная база данных NoSQL , реализованная на Erlang .

CouchDB использует несколько форматов и протоколов для хранения, передачи и обработки своих данных. Он использует JSON для хранения данных, JavaScript в качестве языка запросов с помощью MapReduce и HTTP для API . [2]

CouchDB был впервые выпущен в 2005 году, а затем в 2008 году стал проектом Apache Software Foundation .

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

CouchDB реализует форму управления многоверсионным параллелизмом (MVCC), поэтому он не блокирует файл базы данных во время записи. Разрешение конфликтов оставлено на усмотрение приложения. Разрешение конфликта обычно предполагает сначала объединение данных в один из документов, а затем удаление устаревшего. [3]

на уровне документа ACID Другие функции включают в себя семантику с конечной согласованностью , (инкрементную) MapReduce и (инкрементную) репликацию. Одной из отличительных особенностей CouchDB является репликация с несколькими хозяевами , которая позволяет масштабировать его между машинами для создания высокопроизводительных систем. Встроенное веб-приложение под названием Fauxton (ранее Futon) помогает в администрировании.

Диван — это аббревиатура от кластера ненадежного стандартного оборудования . [4] Проект CouchDB был создан в апреле 2005 года Дэмиеном Кацем, бывшим разработчиком Lotus Notes в IBM . Он самофинансировал проект в течение почти двух лет и выпустил его как проект с открытым исходным кодом под лицензией GNU General Public License .

В феврале 2008 года он стал проектом инкубатора Apache и вместо этого предлагался под лицензией Apache . [5] Через несколько месяцев он превратился в проект высшего уровня. [6] Это привело к выпуску первой стабильной версии в июле 2010 года. [7]

В начале 2012 года Кац покинул проект, чтобы сосредоточиться на Couchbase Server . [8]

После ухода Каца проект Apache CouchDB продолжился, выпустив версию 1.2 в апреле 2012 года и версию 1.3 в апреле 2013 года. В июле 2013 года сообщество CouchDB объединило кодовую базу BigCouch , кластерной версии CouchDB от Cloudant , с проектом Apache. [9] Платформа кластеризации BigCouch включена в текущую версию Apache CouchDB. [10]

Собственная кластеризация поддерживается в версии 2.0.0. А новый сервер запросов Mango предоставляет простой способ выполнения запросов CouchDB на основе JSON без использования JavaScript или MapReduce.

Основные особенности

[ редактировать ]
КИСЛОТНАЯ Семантика
CouchDB предоставляет семантику ACID . [11] Это достигается за счет реализации формы управления многоверсионным параллелизмом , что означает, что CouchDB может без конфликтов обрабатывать большой объем одновременных операций чтения и записи.
Создано для оффлайн
CouchDB может реплицироваться на устройствах (например, смартфонах), которые могут отключаться от сети, и выполнять синхронизацию данных за вас, когда устройство снова подключается к сети.
Распределенная архитектура с репликацией
CouchDB был разработан с учетом двунаправленной репликации (или синхронизации) и автономной работы. Это означает, что несколько реплик могут иметь свои собственные копии одних и тех же данных, изменять их, а затем синхронизировать эти изменения позднее.
Хранение документов
CouchDB хранит данные как «документы», как одну или несколько пар поле/значение, выраженных в формате JSON . Значения полей могут быть простыми, например строками, числами или датами; но упорядоченные списки и ассоциативные массивы также можно использовать . Каждый документ в базе данных CouchDB имеет уникальный идентификатор, и не существует обязательной схемы документа.
Окончательная согласованность
CouchDB гарантирует конечную согласованность , обеспечивая как доступность, так и устойчивость к разделам.
Сопоставить/уменьшить представления и индексы
Сохраненные данные структурируются с помощью представлений. В CouchDB каждое представление создается с помощью функции JavaScript , которая действует как часть карты в операции карты /сокращения. Функция принимает документ и преобразует его в одно значение, которое она возвращает. CouchDB может индексировать представления и обновлять эти индексы по мере добавления, удаления или обновления документов.
HTTP API
Все элементы имеют уникальный URI, который предоставляется через HTTP. Он использует методы HTTP POST, GET, PUT и DELETE для четырех основных операций CRUD (создание, чтение, обновление, удаление) на всех ресурсах.

CouchDB также предлагает встроенный интерфейс администрирования, доступный через Интернет, под названием Fauxton. [12]

Варианты использования и производственное развертывание

[ редактировать ]

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

CouchDB хорошо подходит для приложений с накапливающимися, периодически меняющимися данными, для которых необходимо выполнять заранее определенные запросы и где важно версионирование (например, CRM, CMS-системы). Репликация «главный-главный» — особенно интересная функция, позволяющая легко развертывать системы на нескольких площадках. [13]

Пользователи

[ редактировать ]

Среди пользователей CouchDB:

  • ЦЕРН использует CouchDB в качестве базы данных для системы управления данными Большого адронного коллайдера . [14]
  • Красный Крест использует приложение iDAT для электронного оформления дел в зонах стихийных бедствий. Здесь CouchDB используется как многоузловая одноранговая база данных, работающая в автономном режиме. [15]
  • Сервисы IBM Cloud на фундаментальном уровне основаны на CouchDB. [16]
  • United Airlines использует CouchDB для бортовых развлекательных систем более чем в 3000 самолетов. [17] [18]
  • Amadeus IT Group для некоторых своих серверных систем. [ нужна ссылка ]
  • Credit Suisse для внутреннего использования в отделе сырьевых товаров в рамках своей торговой площадки. [19] [ нужен лучший источник ]
  • Meebo для своей социальной платформы (Интернет и приложения). [ нужна ссылка ] Meebo была приобретена Google, и 12 июля 2012 года большинство продуктов было закрыто. [20]
  • npm использует CouchDB в качестве реплицирующей базы данных для своего реестра пакетов. [21]
  • Sophos для некоторых своих серверных систем. [ нужна ссылка ]
  • BBC — для динамической CMS-платформы. [22]
  • Canonical начала использовать его в 2009 году для своей службы синхронизации Ubuntu One. [23] но перестал использовать его в ноябре 2011 года. [24]
  • CANAL+ для международной платформы по требованию CANAL+ Overseas.
  • Protogrid в качестве серверной части хранилища для их среды быстрой разработки приложений. [25]

Манипулирование данными: документы и представления

[ редактировать ]

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

Представления обычно хранятся в базе данных, и их индексы постоянно обновляются. CouchDB поддерживает систему представлений с использованием внешних серверов сокетов и протокола на основе JSON. [26] Как следствие, серверы представлений были разработаны на различных языках (по умолчанию используется JavaScript, но есть также PHP, Ruby, Python и Erlang).

Доступ к данным через HTTP

[ редактировать ]

Приложения взаимодействуют с CouchDB через HTTP. Ниже показано несколько примеров использования cURL , утилиты командной строки. В этих примерах предполагается, что CouchDB работает на локальном хосте (127.0.0.1) через порт 5984.

Действие Запрос Ответ
Доступ к информации о сервере
локон   http://127.0.0.1:5984/ 
{    "couchdb"  :   "Добро пожаловать"  ,    "версия"  :  "1.1.0"  } 
Создание базы данных с именем wiki
локон   -X   PUT   http://127.0.0.1:5984/wiki 
{  "ОК"  :   правда  } 
Попытка создать вторую базу данных с именем wiki.
локон   -X   PUT   http://127.0.0.1:5984/wiki 
{    «ошибка»  :  «file_exists»  ,    «причина»  :  «База данных не может быть создана, файл уже существует».  } 
Получить информацию о вики базе данных
локон   http://127.0.0.1:5984/вики 
{    "db_name"  :   "wiki"  ,    "doc_count"  :   0  ,    "doc_del_count"  :   0  ,    "update_seq"  :   0  ,    "purge_seq"  :   0  ,    "compact_running"  :   false  ,    "disk_size"  :   79  ,    "instance_start_time"  :   " 1272453873691070"  ,    "disk_format_version"  :   5  } 
Удалить базу данных вики
завиток   -X   УДАЛИТЬ   http://127.0.0.1:5984/wiki 
{  "ОК"  :   правда  } 
Создайте документ, попросив CouchDB предоставить идентификатор документа.
curl   -X   POST   -H   "Content-Type: application/json"   --data   \  '{ "text": "Arc.Ask3.Ru на CouchDB", "rating": 5 }'   \ http://127.0.0.1:5984/вики 
{    «ОК»  :   правда  ,    «идентификатор»  :   «123BAC»  ,    «рев»  :   «946B7D1C»  } 
получить список баз данных
локон   http://127.0.0.1:5984/_all_dbs 
[  "_replicator"  ,  "_users"  ,  "wiki"  ] 

Компоненты с открытым исходным кодом

[ редактировать ]

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

Компонент Описание Лицензия
Эрланг общего назначения Erlang — это язык параллельного программирования и система времени выполнения . Последовательное подмножество Erlang — это функциональный язык со строгим вычислением , одиночным присваиванием и динамической типизацией. Apache 2.0 (выпуск 18.0 и новее)
Публичная лицензия Erlang (более ранние выпуски)
отделение интенсивной терапии International Components for Unicode (ICU) — это проект с открытым исходным кодом, состоящий из зрелых библиотек C / C++ и Java для поддержки Unicode , интернационализации программного обеспечения и глобализации программного обеспечения. Лицензия Юникод
jQuery jQuery — это легкая кроссбраузерная библиотека JavaScript , в которой особое внимание уделяется взаимодействию между JavaScript и HTML. МОЯ лицензия
OpenSSL OpenSSL — это с открытым исходным кодом реализация протоколов SSL и TLS . Основная библиотека (написанная на языке программирования C ) реализует основные криптографические функции и предоставляет различные служебные функции. Apache 1.0 и лицензия BSD из четырех пунктов
ПаукОбезьяна SpiderMonkey — это высокопроизводительный движок JavaScript, поддерживаемый Mozilla Foundation . Он содержит интерпретатор , JIT-компилятор и сборщик мусора. МПЛ 2.0

См. также

[ редактировать ]
  1. ^ «Выпуск 3.3.3» . 4 декабря 2023 г. Проверено 19 декабря 2023 г.
  2. ^ Фонд программного обеспечения Apache. «Апач CouchDB» . Проверено 15 апреля 2012 г.
  3. ^ Смит, Джейсон. «Что такое протокол репликации CouchDB? Он похож на Git?» . StackOverflow . Обмен стеками . Проверено 14 апреля 2012 г.
  4. ^ «Изучение CouchDB» . Разработчик работает . ИБМ. 31 марта 2009 года . Проверено 30 сентября 2016 г.
  5. ^ Объявление в списке рассылки Apache на mail-archives.apache.org.
  6. ^ Re: Предлагаемое решение: установить CouchDB TLP на mail-archives.apache.org.
  7. ^ «База данных NoSQL CouchDB, готовая к использованию в производстве». Архивировано 15 ноября 2010 г. на Wayback Machine , статья из журнала PC World за июль 2010 г.
  8. ^ Кац, Дэмиен. «Будущее CouchDB» . Проверено 15 апреля 2012 г.
  9. ^ Слейтер, Ной (25 июля 2013 г.). «Добро пожаловать, Большой Диван» . Проверено 25 июля 2013 г.
  10. ^ « 2.0 » . 20 сентября 2016 г. Проверено 13 января 2017 г.
  11. ^ CouchDB, Технический обзор. Архивировано 20 октября 2011 г., на Wayback Machine.
  12. ^ "couchdb-fauxton" . Гитхаб . апач . Проверено 2 мая 2023 г.
  13. ^ Сравнение Cassandra, MongoDB, CouchDB, Redis, Riak и HBase от Кристофа Ковача
  14. ^ «Почему ученые Большого адронного коллайдера используют CouchDB» . ЧитатьЗапись . 26 августа 2010 г. Проверено 29 марта 2022 г.
  15. ^ iDAT , Кодекс Красного Креста, 31 июля 2021 г. , получено 29 марта 2022 г.
  16. ^ «База данных-Deep-Dives-CouchDB» . www.ibm.com . 19 июля 2019 года . Проверено 29 марта 2022 г.
  17. ^ «База данных-Deep-Dives-CouchDB» . www.ibm.com . 19 июля 2019 года . Проверено 29 марта 2022 г.
  18. ^ «United Airlines оптимизирует операции с помощью Couchbase | Практический пример» . www.couchbase.com . Проверено 29 марта 2022 г.
  19. ^ «CouchDB в дикой природе». Архивировано 20 июля 2017 г. в статье Wayback Machine в Интернете о продукте, списке программных проектов и веб-сайтов, использующих CouchDB.
  20. ^ Катлер, Ким-Май (9 июня 2012 г.). «Meebo получает классическую процедуру аренды Google Acq: большинство продуктов скоро закроются» . ТехКранч . АОЛ Инк . Проверено 7 января 2016 г.
  21. ^ "npm-регистрация-couchapp" . Гитхаб . нпм. 17 июня 2015 г. Проверено 7 января 2016 г.
  22. ^ CouchDB на BBC как отказоустойчивое, масштабируемое хранилище ключей и значений с несколькими центрами обработки данных.
  23. ^ Электронное письмо от Эллиота Мерфи (Canonical). Архивировано 5 мая 2011 г. на Wayback Machine в список CouchDB-Devel.
  24. ^ Canonical удаляет CouchDB из Ubuntu One (Slashdot)
  25. ^ «Протогрид — О нас» .
  26. ^ Просмотреть документацию по серверу , заархивированную 20 октября 2008 г. на Wayback Machine на wiki.apache.org.

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ea03d455ef3112f71c61409c77276c9d__1715754780
URL1:https://arc.ask3.ru/arc/aa/ea/9d/ea03d455ef3112f71c61409c77276c9d.html
Заголовок, (Title) документа по адресу, URL1:
Apache CouchDB - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)