Couchbase Server
Інтерфейс керування Couchbase Server | |
| Тип | NoSQL, документоорієнтована система керування базами даних, сховище типу «ключ — значення» |
|---|---|
| Автор | Couchbase, Inc.d |
| Розробник | Couchbase, Inc. |
| Стабільний випуск | 8.0.3 (вересень 2026[1]) |
| Версії | 1.7.1.1 (26 серпня 2011)[2] |
| Операційна система | Linux, Windows Server; macOS (для розробки та тестування)[3] |
| Мова програмування | C++, Erlang, Go |
| Ліцензія | Business Source License 1.1 (частина вихідного коду); окремі ліцензійні угоди для готових редакцій |
| Репозиторій | github |
| Вебсайт | www |
Couchbase Server — розподілена система керування базами даних (СКБД) класу NoSQL, призначена для зберігання JSON-документів і двійкових даних. Поєднує сховище типу «ключ — значення», кешування в оперативній пам'яті, індексацію та виконання запитів мовою SQL++. Підтримує роботу на одному сервері або в кластері з розподілом даних між вузлами.[4][5]
Систему розробляє компанія Couchbase, Inc.. Вона походить від проєкту Membase, який після об'єднання команд Membase та CouchOne отримав можливості документоорієнтованої бази даних. Попри спільні технологічні витоки з Apache CouchDB, Couchbase Server є окремою системою з іншою архітектурою та інтерфейсами доступу.[6]
Первісний проєкт Membase розвивався як розподілене сховище «ключ — значення» з постійним збереженням даних, побудоване на технологіях memcached. У лютому 2011 року компанії Membase та CouchOne, розробники якої брали участь у створенні Apache CouchDB, об'єдналися в Couchbase, Inc. У січні 2012 року Membase Server перейменували на Couchbase Server; версія 1.8 стала наступницею Membase Server 1.7.[7][6]
У грудні 2012 року вийшла версія 2.0, яка доповнила розподілене сховище підтримкою JSON-документів, індексації, запитів на основі MapReduce та реплікації між центрами обробки даних.[8] У Couchbase Server 4.0 (2015) з'явилася мова запитів N1QL із синтаксисом, близьким до SQL; згодом цю реалізацію стали називати SQL++.[9][10]
У версії 7.0 (2021) було запроваджено ієрархію просторів і колекцій для впорядкування документів.[11] Версія 8.0, випущена в жовтні 2025 року, розширила засоби векторного пошуку та змінила типове налаштування рушія зберігання на Magma. Станом на жовтень 2026 року останнім випуском гілки 8.0 була версія 8.0.3.[12][1]
Дані зберігаються в іменованих контейнерах (buckets), які поділяються на простори (scopes) та колекції (collections). Кожен запис має ключ, унікальний у межах колекції, і значення: JSON-документ або довільний двійковий вміст. Для JSON-документів не обов'язково задавати єдину фіксовану схему: набір полів може відрізнятися від документа до документа. Окрім самих даних, сервер зберігає метадані записів, зокрема відомості про версію й термін дії.[13][14]
Для розподілу даних між вузлами використовуються віртуальні розділи — vBuckets. Сервер визначає розділ за гешем ключа. Кожен активний розділ може мати репліки на інших вузлах; у разі відмови вузла репліка може стати активною. Під час зміни складу кластера система перерозподіляє розділи (rebalance).[15]
Couchbase Server має сервісну архітектуру. Окремі служби забезпечують зберігання даних (Data Service), індексацію (Index Service), виконання запитів (Query Service), повнотекстовий пошук (Search Service), аналітичну обробку (Analytics Service) та оброблення подій (Eventing Service). Їх можна розміщувати на різних вузлах кластера відповідно до навантаження.[4][5]
Різні компоненти системи написано кількома мовами програмування. Зокрема, ключове сховище реалізовано переважно на C++, служби керування кластером використовують Erlang, а рушій SQL++ — Go. Вихідний код відповідних компонентів доступний в окремих сховищах розробника.[16]
Доступ до записів за ключем не потребує виконання запиту до всієї колекції. Для пошуку за вмістом JSON-документів використовуються вторинні індекси та мова SQL++ (раніше — N1QL), яка підтримує вибірку, фільтрацію, об'єднання даних і зміну документів. Система також підтримує багатодокументні ACID-транзакції, повнотекстовий пошук та, в новіших версіях, пошук за векторною подібністю.[10][17][12]
У ранніх версіях для формування індексованих подань застосовувалися функції map і reduce, написані на JavaScript. Починаючи з версії 7.0, механізм views вважається застарілим; розробник рекомендує замінювати його службами індексації та запитів. Подання MapReduce не працюють із рушієм зберігання Magma.[18]
У межах кластера реплікація використовується для підтримання доступності даних. Окремий механізм Cross Data Center Replication (XDCR) дозволяє передавати зміни між кластерами, зокрема розташованими в різних центрах обробки даних. За потреби реплікацію можна налаштовувати в обох напрямках; доступність XDCR залежить від редакції продукту.[19][20]
Для розробників доступні клієнтські бібліотеки (SDK), зокрема для Java, C++, C#/.NET, Go, JavaScript/Node.js, PHP, Python, Ruby, Rust та Scala.[21] Історично Couchbase Server підтримував сумісний із memcached протокол доступу до даних, однак його не слід розглядати як повністю взаємозамінний із CouchDB або будь-якою іншою NoSQL-системою. У версії 8.0 було вилучено окремий тип контейнерів Memcached buckets.[6][22]
Couchbase Server поширюється у двох основних редакціях: безплатній Community Edition та комерційній Enterprise Edition. Редакції відрізняються набором функцій і умовами підтримки. Зокрема, Community Edition версії 7.0 і новіших обмежена кластерами щонайбільше з п'яти вузлів, а міжкластерна реплікація XDCR належить до функцій Enterprise Edition.[23][24]
Спочатку вихідний код Couchbase Server поширювався за Apache License 2.0. У березні 2021 року компанія оголосила про перехід значної частини коду, починаючи з Couchbase Server 7.0, на Business Source License 1.1 (BSL 1.1). Вона дозволяє перегляд коду, але запроваджує обмеження на певне комерційне використання; через чотири роки після визначеної для відповідного коду дати ліцензія змінюється на Apache 2.0. Готові збірки Community та Enterprise регулюються окремими ліцензійними угодами.[25]
- 1 2 Release Notes for Couchbase Server 8.0. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Release 1.7.1.1 — 2011.
- ↑ Supported Platforms. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- 1 2 Couchbase Server. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- 1 2 Murtadha Al Hubail; Ali Alsuliman; Michael Blow; Michael Carey; Dmitry Lychagin; Ian Maxon; Till Westmann (2019). Couchbase Analytics: NoETL for Scalable NoSQL Data Analysis (PDF). Proceedings of the VLDB Endowment (англ.). 12 (12): 2275—2286. doi:10.14778/3352063.3352143.
- 1 2 3 CouchDB versus Couchbase: What are the differences, and what happened to Membase?. InfoQ (англ.). 17 травня 2012. Процитовано 30 жовтня 2026.
- ↑ Membase Server is Now Couchbase Server. Couchbase Blog (англ.). 23 січня 2012. Процитовано 30 жовтня 2026.
- ↑ Abel Avram (12 грудня 2012). Couchbase Releases Couchbase Server 2.0 GA. InfoQ (англ.). Процитовано 30 жовтня 2026.
- ↑ Srini Penchikala (26 жовтня 2015). Couchbase 4.0 Supports Multi-dimensional Scaling, Geospatial Indexes and New Query Language N1QL. InfoQ (англ.). Процитовано 30 жовтня 2026.
- 1 2 Query Data with SQL++. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Scopes and Collections. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- 1 2 What's New in Version 8.0. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Data. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ The Couchbase Data Model. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ vBuckets. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ couchbase/kv_engine. GitHub (англ.). Процитовано 30 жовтня 2026.; couchbase/ns_server. GitHub (англ.). Процитовано 30 жовтня 2026.; couchbase/query. GitHub (англ.). Процитовано 30 жовтня 2026.
- ↑ Transactions. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Views Reference. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Availability. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Cross Data Center Replication (XDCR). Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ SDKs for Couchbase Operational Database. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Upgrade. Couchbase Docs (англ.). Процитовано 30 жовтня 2026.
- ↑ Enterprise Edition vs. Community Edition vs. Couchbase Capella. Couchbase (англ.). Процитовано 30 жовтня 2026.
- ↑ Couchbase, Inc. Community Edition License Agreement. Couchbase (англ.). Процитовано 30 жовтня 2026.
- ↑ Scott Anderson (26 березня 2021). Couchbase Adopts BSL License. Couchbase Blog (англ.). Процитовано 30 жовтня 2026.