Couchbase Server , первоначально известный как Membase , представляет собой исходно-доступный , [2] распределенный ( архитектура без общего доступа ) многомодельный NoSQL -документоориентированный программный пакет базы данных, оптимизированный для интерактивных приложений. Эти приложения могут обслуживать множество одновременных пользователей , создавая, сохраняя, извлекая, агрегируя, манипулируя и представляя данные. Для поддержки этих видов потребностей приложений Couchbase Server разработан для предоставления легко масштабируемого доступа к ключу-значению или документам JSON с низкой задержкой и высокой пропускной способностью устойчивости. Он разработан для кластеризации от одной машины до очень масштабных развертываний, охватывающих множество машин.
Couchbase Server обеспечил совместимость клиентского протокола с memcached [3] , но добавил сохранение данных на диске , репликацию данных , реконфигурацию кластера в реальном времени, ребалансировку и многоарендность с разделением данных .
Membase была разработана несколькими лидерами проекта memcached , которые основали компанию NorthScale для разработки хранилища ключей и значений с простотой, скоростью и масштабируемостью memcached, а также возможностями хранения, сохранения и запросов базы данных. Исходный код Membase был предоставлен NorthScale и соавторами проекта Zynga и Naver Corporation (тогда известной как NHN) в новый проект на membase.org в июне 2010 года. [4]
8 февраля 2011 года основатели проекта Membase и Membase, Inc. объявили о слиянии с CouchOne (компания, в которой многие из основных игроков стоят за CouchDB ) с сопутствующим слиянием проектов. Объединенная компания получила название Couchbase, Inc. В январе 2012 года Couchbase выпустила Couchbase Server 1.8. В сентябре 2012 года Orbitz заявила, что изменила некоторые из своих систем для использования Couchbase. [5] В декабре 2012 года был выпущен Couchbase Server 2.0 (анонсирован в июле 2011 года), который включал новое хранилище документов JSON , индексирование и запросы, инкрементальный MapReduce и репликацию между центрами обработки данных . [6] [7]
Каждый узел Couchbase состоит из службы данных, службы индексации, службы запросов и компонента менеджера кластера. Начиная с версии 4.0, три службы могут быть распределены для запуска на отдельных узлах кластера, если это необходимо. На языке теоремы Эрика Брюэра CAP , Couchbase обычно является системой типа CP, что означает, что она обеспечивает согласованность и устойчивость к разделам , или ее можно настроить как систему AP с несколькими кластерами.
Менеджер кластера контролирует конфигурацию и поведение всех серверов в кластере Couchbase. Он настраивает и контролирует поведение между узлами, например, управление потоками репликации и операции повторной балансировки. Он также предоставляет функции агрегации метрик и консенсуса для кластера, а также интерфейс управления кластером RESTful . Менеджер кластера использует язык программирования Erlang и платформу Open Telecom .
Репликация данных в узлах кластера может контролироваться несколькими параметрами. В декабре 2012 года была добавлена поддержка репликации между различными центрами обработки данных . [6]
Менеджер данных сохраняет и извлекает документы в ответ на операции с данными из приложений. Он асинхронно записывает данные на диск после подтверждения клиенту. В версии 1.7 и более поздних приложения могут опционально гарантировать, что данные записаны на более чем один сервер или на диск, прежде чем подтвердить запись клиенту. Параметры определяют возраст элементов, которые влияют на то, когда данные сохраняются, и как обрабатывается максимальный объем памяти и миграция из основной памяти на диск. Он поддерживает рабочие наборы, превышающие квоту памяти на «узел» или «корзину». Внешние системы могут подписываться на отфильтрованные потоки данных, поддерживая, например, индексацию полнотекстового поиска , аналитику данных или архивирование. [8]
Документ — это самая базовая единица обработки данных в Couchbase Server. Документы хранятся в формате JSON без предопределенных схем. Не-JSON документы также могут храниться в Couchbase Server (двоичные, сериализованные значения, XML и т. д.)
Couchbase Server включает в себя встроенный многопоточный объектно-управляемый кэш , который реализует API, совместимые с Memcached, такие как получение, установка, удаление, добавление, добавление в начало и т. д.
Couchbase Server имеет конструкцию хранилища с добавлением в конец, которая невосприимчива к повреждению данных, OOM killers или внезапному отключению питания. Данные записываются в файл данных только в режиме добавления, что позволяет Couchbase выполнять в основном последовательные записи для обновления и предоставлять оптимизированные шаблоны доступа для дискового ввода-вывода.
Тест производительности, проведенный Altoros в 2012 году, сравнил Couchbase Server с другими технологиями. [9] Cisco Systems опубликовала тест, в котором измерялись задержка и пропускная способность Couchbase Server при смешанной рабочей нагрузке в 2012 году. [10]
Couchbase Server — это упакованная версия программного обеспечения Couchbase с открытым исходным кодом , доступная в версии для сообщества без недавних исправлений ошибок с лицензией Apache 2.0 [11] и в версии для коммерческого использования. [12] Сборки Couchbase Server доступны для операционных систем Ubuntu, Debian, Red Hat, SUSE, Oracle Linux, Microsoft Windows и macOS.
Couchbase поддерживает комплекты разработчиков программного обеспечения для языков программирования .NET , PHP , Ruby , Python , C , Node.js , Java , Go и Scala .
Язык запросов SQL++ (ранее называвшийся N1QL) используется для манипулирования данными JSON в Couchbase, так же как SQL манипулирует данными в RDBMS. Он имеет операторы SELECT, INSERT, UPDATE, DELETE, MERGE для работы с данными JSON. Первоначально он был анонсирован в марте 2015 года как «SQL для документов». [13]
Модель данных SQL++ не является первой нормальной формой (N1NF) с поддержкой вложенных атрибутов и нормализации, ориентированной на домен . Модель данных SQL++ также является надлежащим надмножеством и обобщением реляционной модели .
{ "email" : "[email protected]" , "friends" : [ { "name" : "Паван" }, { "name" : "Рави" } ] }
SELECT * FROM `bucket` WHERE email LIKE "%@example.org";
SELECT * FROM `bucket` WHERE ANY x IN friends SATISFIES x.name = "Pavan" END;
Couchbase Mobile / Couchbase Lite — мобильная база данных , обеспечивающая репликацию данных. [14]
Couchbase Lite (первоначально TouchDB) предоставляет собственные библиотеки для баз данных NoSQL, работающих в автономном режиме, со встроенными механизмами репликации «точка-точка» или «клиент-сервер» . [15] Sync Gateway управляет безопасным доступом и синхронизацией данных между Couchbase Lite и Couchbase Server. [16]
Couchbase начинался как эволюция Memcached , высокоскоростного кэша данных, и может использоваться в качестве замены Memcached, обеспечивая высокую доступность для приложений Memcached без изменения кода. [17]
Couchbase используется для поддержки приложений, где требуются гибкая модель данных, легкая масштабируемость и постоянная высокая производительность, например, отслеживание активности пользователя в реальном времени или предоставление хранилища пользовательских настроек или онлайн-приложений. [18]
Couchbase Mobile, который хранит данные локально на устройствах (обычно мобильных устройствах), используется для создания «офлайн-приложений», которые могут работать, когда устройство не подключено к сети, и синхронизироваться с Couchbase Server после восстановления сетевого соединения. [19]
Catalyst Lab в Северо-Западном университете использует Couchbase Mobile для поддержки приложения Evo, исследовательской программы здорового образа жизни, где данные используются для помощи участникам в улучшении качества питания, физической активности, стресса или сна. [20]
Amadeus использует Couchbase с Apache Kafka для поддержки своей «открытой, простой и гибкой» стратегии потребления и интеграции данных о программах лояльности для авиакомпаний и других партнеров по путешествиям. Высокая масштабируемость необходима, когда разрушительные туристические события создают необходимость распознавать и компенсировать высокоценных клиентов. [21]
Начиная с 2012 года он играл роль в системах кэширования LinkedIn, включая бэкэнд - кэширование для рекрутинговых и вакансий, счетчиков для механизмов защиты безопасности, для внутренних приложений. [22]
Для кэширования Couchbase конкурирует с Memcached и Redis . Для документных баз данных Couchbase конкурирует с другими документно-ориентированными системами баз данных. Его обычно сравнивают с MongoDB , Amazon DynamoDB , Oracle RDBMS , DataStax , Google Bigtable , MariaDB , IBM Cloudant , Redis Enterprise , SingleStore и MarkLogic . [23] [24]
{{cite web}}
: |last=
имеет общее название ( помощь )