- CouchDB
-
Apache CouchDB Тип Документо-ориентированная СУБД
Автор Damien Katz, Jan Lehnardt, Noah Slater, Christopher Lenz, J. Chris Anderson
Разработчик Написана на Операционная система Первый выпуск 2005
Последняя версия Состояние Active
Лицензия Apache 2.0
Сайт Apache CouchDB[1] — документо-ориентированная система управления базами данных, не требующая описания схемы данных. Эта программа является свободной, открытой, и написана на языке Erlang.
CouchDB можно рассматривать как сервер веб-приложений; для реализации этой идеи в CouchDB встроен производительный веб-сервер, а программный код, как и данные, сохраняется в той же базе данных. Для автоматизации работы с приложениями CouchDB используется утилита CouchApp.
Содержание
Архитектура системы
Подобно иным документно-ориентированным СУБД (Mnesia, Lotus Notes, MongoDB), и в отличие от реляционных СУБД, CouchDB предназначена для работы с полу-структурированной информацией и имеет следующие особенности:
- данные сохраняются не в строках и колонках, а в виде JSON-подобных документов, моделью которых является не таблицы, а деревья;
- типизация элементов данных, то есть сопоставление отдельным полям документов типов INTEGER, DATE и пр., не поддерживается — вместо этого пользователь может написать функцию-валидатор;
- целостность базы данных обеспечивается исключительно на уровне отдельных записей (но не на уровне связей между ними);
- связи между таблицами или записями принципиально не поддерживаются, соответственно операция объединения (JOIN) между таблицами не определена;
- для построения индексов и выполнения запросов используются функции представления (view)[2];
- функции-валидаторы, функции-представления, функции-фильтры сохраняются в текстовом виде в самой базе данных;
- эти функции, как правило, написаны на языках JavaScript или Erlang, а для их выполнения запускается отдельный сервер запросов, взаимодействие с которым происходит посредством сокетов и текстового JSON-протокола;
- каждой базе данных в системе CouchDB соответствует единственное B-дерево (не путать с двоичным деревом);
- каждое B-дерево хранится в виде отдельного файла на диске;
- одновременно может быть запущено несколько потоков для чтения базы данных и только один — для записи;
- целостность базы данных обеспечивается только при записи данных на диск;
- представления хранятся в БД и их индексы обновляются непрерывно, однако при каждом обновлении функций представления или отображения обновляется всё B-дерево целиком;
- при обработке данных с помощью функций-представлений используется упрощённая модель технологии MapReduce, что позволяет производить параллельные вычисления, в том числе и на многоядерном процессоре;
- распределение вычислений на несколько узлов не поддерживается — вместо этого используется механизм репликации;
- обработка данных с помощью цепочки последовательных функций MapReduce не поддерживается;
- поддерживается вертикальная масштабируемость, что означает поддержку не только огромных кластеров, но и портативных устройств (нетбуки, смартфоны и пр.);
- внешний интерфейс (API) к данной СУБД построен на основе архитектуры REST, то есть сама база данных, отдельные записи, отображения и запросы — суть ресурсы, которые имеют уникальный адрес (URL) и поддерживают операции GET, PUT, POST, DELETE;
- поэтому для взаимодействия с базой данных было написано много клиентских библиотек, в том числе на таких языках JavaScript[3], PHP, Ruby, Python и Erlang;
- взаимодействие между отдельными компонентами СУБД, то есть с серверами представлений осуществляется опять-таки с помощью текстового протокола, а данные передаются в формате JSON; это позволило использовать различные языки программирования для написания этих компонентов — Java, Python, JavaScript и пр.
История развития
Проект CouchDB был принят в инкубатор Apache в феврале 2008 года. Несмотря на то, что CouchDB изначально предназначался для работы в операционной системе Linux, уже разработаны варианты этой системы для операционных систем Microsoft Windows[4] и Mac OS. Более того, дистрибутив Linux Ubuntu с 9.10 (Karmic Koala) поставляется с системой CouchDB.
Использование CouchDB
CouchDB используется во многих программных продуктах и на множестве веб-сайтов [5], в том числе:
- UbuntuOne, Firefox, TomBoy, Akonadi, Evolution — для синхронизации адресов, заметок и закладок[6].
- Mozilla Raindrop — агрегатор сообщений электронной почты, социальных сетей, систем обмена мгновенными сообщениями (Skype, Jabber)[7].
Примечания
Литература
- Anderson, J. Chris; Slater, Noah & Lehnardt, Jan (November 15, 2009), «CouchDB: The Definitive Guide» (1st ed.), O'Reilly Media, сс. 300, ISBN 0596158165, <http://guide.couchdb.org/index.html>
- Lennon, Joe (December 15, 2009), «Beginning CouchDB» (1st ed.), Apress, сс. 300, ISBN 1430272376, <http://www.apress.com/book/view/9781430272373>
Ссылки
- CouchDB: A Case Study
- Ricky Ho. CouchDB Implementation
- Простая библиотека для работы с CouchDB на PHP5
- Asynchronous CouchDB client for Java
На русском языке:- Map/Reduce своими руками — Apache CouchDb
- CouchDB и его применимость
- Обзор NoSQL систем
- CouchDB для начинающих
Блоги разработчиков:
См. также
- Документо-ориентированная СУБД
- MongoDB
Apache Software Foundation Проекты верхнего уровня ActiveMQ • Ant • Apache HTTP Server • APR • Beehive • Cassandra • Cayenne • Camel • Commons • Cocoon • CouchDB • DB • Directory • Excalibur • Forrest • Geronimo • Gump • Hadoop • Harmony • HBase • HiveMind • HttpComponents • iBATIS • Jackrabbit • James • JMeter • Lenya • Maven • Mina • mod perl • MyFaces • Nutch • OFBiz • OpenOffice.org • POI • Portals • Santuario • ServiceMix • Shale • Shiro • SpamAssassin • Struts • Subversion • Tapestry • Tcl • Tomcat • Turbine • Velocity • WebWork 2 • Wicket • Xalan • Xerces • XMLBeans Подпроекты Apache Commons BCEL • BSF • JCS Apache Lucene Lucene Java • Lucene4c • Lucy• Solr Apache DB Derby • Torque • DdlUtils • OJB • JDO Apache Web Services Axis • Axis2 • CXF • WS-Commons • EWS • JaxMe • jUDDI • Kandula • Mirae • Muse • Pubscribe • Sandesha • Scout • SOAP • Synapse • TSIK • Tuscany • Woden • WSIF • WSRF • WSS4J • XML-RPC Другие проекты Batik • FOP •Log4j Развивающиеся проекты (Incubator) XAP • River • OpenEJB • OpenJPA • Graffito • Tuscany • Log4Net • Roller • Felix • Abdera • CeltiXfire • FtpServer • Heraldry • Ivy • JuiCE • Kabuki • Lokahi • Lucene.Net • mod_ftp • NMaven • Ode • stdcxx • Woden • WSRP4J • Yoko • WADI • Qpid • stdcxx • TripleSoup • UIMA• Adobe Flex Списанные проекты (Attic) AxKit • Cactus • ECS • Jakarta • ORO • Regexp • Slide • Taglibs Лицензия: Лицензия Apache • Сайт: apache.org Системы управления базами данных (СУБД) Клиент-серверные Caché • CouchDB • IMS • DB2 • Firebird • Informix • Ingres • InterBase • MS SQL Server • MongoDB • MySQL • mSQL • Oracle Database • Pervasive SQL • PostgreSQL • Sybase ASE • Sybase ASA • Sybase IQ • Teradata Database • ЛИНТЕР
Движки Файл-серверные DataFlex • dBase • MS Access • OpenOffice.org Base • Paradox
Базы данных Концепции Модель данных • Реляционная (модель • алгебра • Нормальная форма • Ссылочная целостность • БД • СУБД) • Иерархическая модель • Сетевая (модель • СУБД) • Объектно-ориентированная (БД • СУБД) • Транзакция • Журнализация • Секционирование
Объекты Ключи Потенциальный • Первичный • Внешний • Естественный • Суррогатный (искусственный) • Суперключ
SQL СУБД IMS • DB2 • Informix • Oracle Database • Microsoft SQL Server • Adaptive Server Enterprise • Teradata Database • Firebird • PostgreSQL • MySQL • SQLite • Microsoft Access • Visual FoxPro • ЛИНТЕР • CouchDB • MongoDB
Компоненты Категории:- Программное обеспечение по алфавиту
- Хранилище данных
- Документо-ориентированные СУБД
Wikimedia Foundation. 2010.