The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск документоориентированной СУБД Apache CouchDB 3.0

02.03.2020 11:45

Состоялся релиз распределённой документоориентированной базы данных Apache CouchDB 3.0, относящейся к классу NoSQL-систем. Исходные тексты проекта распространяются под лицензией Apache 2.0.

Улучшения, реализованные в Apache CouchDB 3.0:

  • Произведено усиление защиты в конфигурации по умолчанию. При запуске теперь обязательно должен быть определён пользователь admin, без которого сервер завершит свою работу с ошибкой (позволяет решить проблемы с запуском серверов, по недосмотру оставляющих доступ без аутентификации). Для обращения к вызовам "/_all_dbs" теперь требуется наличие прав администратора, а все БД по умолчанию создаются доступными только для пользователя admin (параметры доступа могут быть изменены через объект "_security"). Запрещено по умолчанию редактирование объектов в БД _users;
  • Добавлена возможность создания определяемых пользователем сегментированных (партицированных) БД, дающих возможность определить собственные правила распределения документов по сегментам (shard range). В представления и индексы Mango добавлены специальные оптимизации для сегментированных БД;
  • Реализован режим автоматического разделения при сегментировании (sharding). В БД теперь возможно перераспределение данных по сегментам с учётом увеличения значения q-фактора, применяемого для определения уровня разбивки;
  • Добавлена подсистема ken для автоматического фонового индексирования и поддержания в актуальном виде вторичных индексов (JavaScript, Mango, индексы для поиска текста) без явного запуска операций их построения;
  • Полностью переписан процесс smoosh, применяемый для автоматической упаковки БД;
  • Предложена новая подсистема IO Queue, применяемая для изменения приоритета ввода/вывода для определённых операций;
  • Реализована система регрессивного тестирования;
  • Добавлена официальная поддержка платформ arm64v8 (aarch64) и ppc64le (ppc64el);
  • Добавлена поддержка связывания с JavaScript-движком SpiderMonkey 1.8.5 (ESR-ветка Firefox 60) с улучшенной поддержкой ES5, ES6 и ES2016+;
  • В состав включён поисковый движок Dreyfus на основе Lucene, позволяющий значительно упростить развёртывание поисковой системы на базе CouchDB;
  • Добавлен бэкенд для ведения логов с использованием systemd-journald;
  • Добавлена настройка "[couchdb] single_node" при установке которой CouchDB автоматически создаст системные БД, если они отсутствуют;
  • Проведена оптимизация производительности процесса couch_server ;
  • Значительно улучшен установщик для платформы Windows;
  • Размер представлений ограничен 2^28 (268435456) результатами. Данный лимит отдельно может быть настроен для обычных и сегментированных представлений при помощью опций query_limit и partition_query_limit в секции "[query_server_config]";
  • Удалён отдельный HTTP-интерфейс управления локальным узлом, запускаемый на сетевом порту 5986, функциональность которого теперь доступна через общий интерфейс управления кластером;
  • Максимальный размер документа сокращён до 8 МБ, что может привести к проблемам с репликацией данных со старых серверов после обновления до CouchDB 3.0. Для повышения лимита можно использовать настройку "[couchdb] max_document_size";
  • Проведена большая чистка устаревших возможностей, таких как вызовы _replicator и _external, поля disk_size и data_size, опция delayed_commits;
  • Для запуска CouchDB теперь требуется Erlang/OTP 20.3.8.11+, 21.2.3+ или 22.0.5. Теоретически сохранена работоспособность с веткой Erlang/OTP 19, но она не охвачена тестами.

Напомним, что CouchDB хранит данные в формате упорядоченного списка и позволяет производить частичную репликацию данных между несколькими БД в режиме «мастер-мастер» с одновременным обнаружением и разрешением конфликтных ситуаций. Каждый сервер хранит свой локальный набор данных, синхронизированный с другими серверами, которые могут переводиться в offline-режим и периодически реплицировать изменения. В частности, данная возможность делает CouchDB привлекательным решением для организации синхронизации настроек программ между разными компьютерами. Решения на базе CouchDB внедрены в таких компаниях как BBC, Apple и CERN.

Запросы к CouchDB и индексация данных могут выполняться в соответствии с парадигмой MapReduce, используя для формирования логики выборки данных язык JavaScript. Ядро системы написано на языке Erlang, оптимизированного для создания обслуживающих множество параллельных запросов распределенных систем. View-сервер написан на языке Си и базируется на JavaScript-движке от проекта Mozilla. Доступ к БД производится при помощи протокола HTTP с использованием RESTful JSON API, что позволяет обращаться к данным в том числе из выполняемых в браузере web-приложений.

В качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Для организации псевдо-структурированного набора данных из произвольных документов (агрегирования и формирования выборок) применяется концепция формирования представлений (view), для определения которых используется язык JavaScript. На JavaScript также можно определять функции для проверки корректности данных при добавлении новых документов в рамках определенного представления.



  1. Главная ссылка к новости (https://blog.couchdb.org/2020/...)
  2. OpenNews: Выпуск документоориентированной СУБД Apache CouchDB 2.3.0
  3. OpenNews: Выпуск СУБД PouchDB 6.4, реализации CouchDB на JavaScript
  4. OpenNews: Уязвимость в Apache CouchDB, позволяющая совершить атаку на реестр пакетов NPM
  5. OpenNews: Следом за MongoDB начались атаки на CouchDB, Hadoop и ElasticSearch
  6. OpenNews: Выпуск СУБД Couchbase Server 4.0, сочетающей возможности CouchDB, memcached и Membase
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52463-couchdb
Ключевые слова: couchdb, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Василий (??), 12:22, 02/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Полнотекстовый поиск добавили?
     
     
  • 2.4, none_first (ok), 13:12, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Полнотекстовый поиск добавили?
    >>В состав включён поисковый движок Dreyfus на основе Lucene, позволяющий значительно упростить развёртывание поисковой системы на базе CouchDB;

    да разные возможности были до того
    https://github.com/gesellix/couchdb-2-elasticsearch (там рекомендуют то что ниже)
    https://www.elastic.co/guide/en/logstash/current/plugins-inputs-couchdb_change
    и из старых
    https://github.com/rnewson/couchdb-lucene

     
  • 2.24, GentooBoy (ok), 04:07, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    добавили простое взаимодействие с lucene, в коммерческом продукте Cloudant lucene  идет из коробки.
    Так что фактически подтянули функциональность до приемлемого уровня.
     

  • 1.2, Ан (??), 12:34, 02/03/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

  • 1.5, none_first (ok), 13:17, 02/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    интересная БД, учитывая историю её появления, создателя (Damien Katz) и развитие в виде couchbase
     
  • 1.6, NameName (?), 17:23, 02/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А зачем оно? Кто-то может объяснить в чём преимущества, скажем, перед хранением документов в том же Слоне?
     
     
  • 2.7, none_first (ok), 17:26, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А зачем оно? Кто-то может объяснить в чём преимущества, скажем, перед хранением
    > документов в том же Слоне?

    попробуйте в jsonb с запросами и возможно вопросы отпадут ;)
    и хотя couchbase несколько другой продукт https://query-tutorial.couchbase.com/tutorial/#1

     
     
  • 3.8, NameName (?), 18:15, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так а преимущества-то в чём?
    Как я понял, в том, что, если в Слоне хранить jsonb, то как-то не так будут работать запросы? Сомневаюсь.
     
     
  • 4.9, none_first (ok), 18:31, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Так а преимущества-то в чём?
    > Как я понял, в том, что, если в Слоне хранить jsonb, то
    > как-то не так будут работать запросы? Сомневаюсь.

    сложнее обслуживание и масштабирование, синтаксис "несколько сложноват", с ключами есть свои особенности, тулинг ещё не весь не везде, с документацией по jsonb не шибко, нужно описывать данные...
    https://blog.couchbase.com/postgres-jsonb-and-nosql/
    бенчей нет - скорость сравнить проблематично
    и кочбэйз мастер-мастер, с достаточно простой клатеризацией и прочими плюшками

    НО это все не про кочДБ ;) там тоже мастер-мастер, но нет мемори-фёст и нет n1ql

     
     
  • 5.10, NameName (?), 18:40, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Понятно, это для тех, у кого json головного мозга. И, соответственно, главное требование к "СУБД", чтоб яваскриптик и ясон. И, да, мемори фёст. Можно подумать где-то мемори не фёст.
    Мастер-мастеров не бывает. Ну не бывает. Мастер-мастер это как сказать ребёнку, что пальцы можно пихать в розетку, главное их сначала заточить, чтобы они в эту розетку влезли.
     
     
  • 6.17, Аноним (17), 19:36, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > не бывает

    Вот это новость. Плохой опыт?

     
  • 5.11, NameName (?), 18:43, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    К слову, там в статье такая дичь дикая написана. Какие-то миллионы миллиардов join-ов в РСУБД. Что за чушь.
     
     
  • 6.13, NameName (?), 18:52, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ... да и нет никакой проблемы хоть в квинтиллионе joins-ов.
     
  • 6.36, ананчик (?), 04:15, 04/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Denis Rosa, Developer Advocate, Couchbase on August 6, 2019
    Просто бизнес, в раше кстати кто то из опсосов пользует
     
     
  • 7.38, Люся (?), 10:50, 04/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Бизнес не бизнес, а дело в том, что в статье (это, кстати, типично для евангелистов NoSQL) перевирается работа с реляционными СУБД. С ними есть проблемы, но совершенно другие. Т.е. текст статье орёт просто о том, что писавший её с реляционными СУБД не работал никогда, а труд его жизни это статейки обо всём на свете крапать (завидное умение).
     
  • 3.12, NameName (?), 18:50, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В общем, преимущество одно -- если у вас есть специалист, который что-то там лабал на яваскрипте или пехепе, то ему не нужно будет разбираться в особенностях реляционного моделирования и декларативных языках запросов. Что, в общем-то, неплохой такой плюс. А минусы? Типичны. Нет транзакционной и структурой целостности, нет изоляций, модель "не защищает себя сама".
     
     
  • 4.14, none_first (ok), 19:15, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > В общем, преимущество одно -- если у вас есть специалист, который что-то
    > там лабал на яваскрипте или пехепе, то ему не нужно будет
    > разбираться в особенностях реляционного моделирования и декларативных языках запросов.
    > Что, в общем-то, неплохой такой плюс. А минусы? Типичны. Нет транзакционной

    у кочбэйз ACID https://blog.couchbase.com/couchbase-brings-distributed-multi-document-acid-tr
    > и структурой целостности, нет изоляций, модель "не защищает себя сама".

    "реляционное моделирование" не всегда нужно (чаще не нужно), зачем оверинжиниринг?

     
     
  • 5.15, Ээээ (?), 19:25, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. ACID-а там в принципе быть не может. Обеспечивается целостность только на уровне записи, но не документа.
     
     
  • 6.19, none_first (ok), 20:17, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Нет. ACID-а там в принципе быть не может. Обеспечивается целостность только на
    > уровне записи, но не документа.

    если вы хотите поспорить с документацией...
    "The database tier now offers ACID transactions across multiple documents, multiple buckets, and multiple nodes."
    https://i2.wp.com/blog.couchbase.com/wp-content/uploads/2019/08/ACID-Transacti

     
     
  • 7.31, Ээээ (?), 16:50, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, но тут скорее не спор, а то, что в документации просто манипулируют понятием.
     
     
  • 8.41, none_first (ok), 19:33, 05/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    дык напишите прям там, развенчайте манипуляцию , примерчики подкиньте - где не ... текст свёрнут, показать
     
     
  • 9.46, Айяйяй (?), 00:14, 07/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем и для кого ... текст свёрнут, показать
     
  • 5.16, Ээээ (?), 19:31, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Не нужно кому и для чего? Если у вас есть ОО-модель, то ОРМ сам вам всё разложит. И поэтому никакое моделирование и не потребуется. Другое дело, что реляционные модели просто эффективней. Т.е. надёжно хранить что-то, надёжно изменять что-то, искать что-то или агрегировать что-то куда проще по реляционной модели (даже если вы никак с ней напрямую не работаете). Поэтому мне и не ясно зачем хранить сериализацию состояний объектов (пусть и в ясон-представлении), вместо того, чтобы давать указания "проигрывать" реляционную модель. Ведь выгоды никакой вообще, а издержек масса.
     
     
  • 6.20, none_first (ok), 20:24, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не нужно кому и для чего? Если у вас есть ОО-модель, то
    > ОРМ сам вам всё разложит. И поэтому никакое моделирование и не
    > потребуется. Другое дело, что реляционные модели просто эффективней. Т.е. надёжно хранить
    > что-то, надёжно изменять что-то, искать что-то или агрегировать что-то куда проще
    > по реляционной модели (даже если вы никак с ней напрямую не
    > работаете). Поэтому мне и не ясно зачем хранить сериализацию состояний объектов
    > (пусть и в ясон-представлении), вместо того, чтобы давать указания "проигрывать" реляционную
    > модель. Ведь выгоды никакой вообще, а издержек масса.

    ну как-то вот живут ;) https://habr.com/ru/post/436762/

     
     
  • 7.32, Ээээ (?), 16:50, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    хабр? фу
     
  • 7.34, Масса (?), 19:07, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это просто модно так.
     
  • 7.35, Масса (?), 19:14, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Люди пишут, что в ряде случаев, "чтобы работало быстрее" они отказываются от транзакционной надёжности. Есть большой накопитель "в памяти", с предельно денормализованный моделью, который и принимает решения, а затем уже принятое таким образом решение дублируется относительно медленной обычной реляционной транзакционной СУБД. Решение вполне сносное: "накопитель в памяти" относительно их требований вполне надёжен, "грязь" в случае сбоя редка и решается административно и персонально. Но тут коуч используется не как СУБД, а как кэш (накопитель), персистируют же данные вполне традиционно -- в толстый реляционный надёжный Оракл.
     
     
  • 8.42, none_first (ok), 19:38, 05/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    написано в каментах на предложение другой модели но с рсубд, что трудозатр... текст свёрнут, показать
     
     
  • 9.43, Нама (?), 18:29, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это всё похоже на бла-бла-бла Обчитался потциент Клипмана вот и произошёл такой... текст свёрнут, показать
     
     
  • 10.44, none_first (ok), 18:59, 06/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ну сделайте проект - докажите обратное, вы же уверены Мариот - тоже кучу вс... текст свёрнут, показать
     
     
  • 11.45, Айяйяй (?), 00:05, 07/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, мы все очень злы к друг другу -- сразу бросаемся разоблачать и сомневаться ... текст свёрнут, показать
     
  • 2.25, GentooBoy (ok), 04:20, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А зачем оно? Кто-то может объяснить в чём преимущества, скажем, перед хранением
    > документов в том же Слоне?

    Сейчас нету смысла, 12 лет назад да эта БД считалась как прорыв, а сегодня остальные технологии подтянулись в то время как CouchDB все еще полируют изначальную задумку.

    Отличие от слоника в том что CouchDB это AP  база, слоник CA.

     
     
  • 3.30, none_first (ok), 12:49, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >> А зачем оно? Кто-то может объяснить в чём преимущества, скажем, перед хранением
    >> документов в том же Слоне?
    > Сейчас нету смысла, 12 лет назад да эта БД считалась как прорыв,
    > а сегодня остальные технологии подтянулись в то время как CouchDB все
    > еще полируют изначальную задумку.

    больше - "ушли" в кочбэйз и его пилят активно
    > Отличие от слоника в том что CouchDB это AP  база, слоник
    > CA.

     

  • 1.18, qsdg (ok), 19:45, 02/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Таки выпилили совсем Erlang?
     
     
  • 2.21, none_first (ok), 20:44, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Таки выпилили совсем Erlang?

    стесняюсь спросить первоисточник такого предположения ;)

     
     
  • 3.23, qsdg (ok), 22:44, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Таки выпилили совсем Erlang?
    > стесняюсь спросить первоисточник такого предположения ;)

    Ну в статье этой ни одного упоминания

     
     
  • 4.29, none_first (ok), 12:45, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Таки выпилили совсем Erlang?
    >> стесняюсь спросить первоисточник такого предположения ;)
    > Ну в статье этой ни одного упоминания

    вы точно читали?

    >> Для запуска CouchDB теперь требуется Erlang/OTP 20.3.8.11+, 21.2.3+ или 22.0.5. Теоретически сохранена работоспособность с веткой Erlang/OTP 19, но она не охвачена тестами.

     

  • 1.22, YetAnotherOnanym (ok), 21:37, 02/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Понимаю, что надежды мало, но спрошу: кто-нибудь пробовал запихнуть в неё ФИАС (к чему соблазняют шардинг и кластеризация) и делать поиск по нему?
     
     
  • 2.26, GentooBoy (ok), 04:30, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Понимаю, что надежды мало, но спрошу: кто-нибудь пробовал запихнуть в неё ФИАС
    > (к чему соблазняют шардинг и кластеризация) и делать поиск по нему?

    Запихнуть конечно можно и даже работать будет, она даже будет в нормально синхронизироваться между регионами. Только учтите что нужно 2 раза больше места на диске чем сама база, запись медленная. можете еще посмотреть на riak  если вам так нужна распространенность. А лучше опишите свои требования и спросите в tg  на канале тарантула сможет Tarantool то что вам нужно или нет.  


     
     
  • 3.27, YetAnotherOnanym (ok), 11:30, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > riak
    > Tarantool

    Спасибо, пощупаю

     

  • 1.28, qq (??), 12:11, 03/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как она, по сравнению в MongoDB? Интересно послушать тех, кто имеет опыт разработки под обе.
     
     
  • 2.33, NameName (?), 17:56, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Опыт разработки в наше время это ни о чём, увы. Каждый хвалит свой опыт.
     
  • 2.39, none_first (ok), 13:09, 04/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Как она, по сравнению в MongoDB?

    конкретно кочДБ ориентирован на несколько иные задачи (если так можно выразиться)
    + ограничение для "файла" помещенного в БД - 4Гб (ЕМНИП)

    стоит сравнивать с кочбэйз...
    https://www.couchbase.com/comparing-couchbase-vs-mongodb
    бенчи еще для 5.5 версии (текущая 6.5 )
    https://resources.couchbase.com/c/altoros-nosql-performance-benchmark?x=N-I_ik

    единственный момент - файлы в базе хранить не получится (ограничение по размеру) и надо будет кастылить что-то своё
    хотя с т.з. хранить "большие" файлы в БД - это не совсем "правильно" ;)

     

  • 1.37, Аноним (37), 09:42, 04/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Заюзал предыдущую версию как кэш json данных. По началу было не плохо. Данные сжимаются, бегают. Можно было слейвов натыкать, если бы в производительность стал упираться. Только не работает она. При одном живом мастере постоянно ругается на конфликты записей, при обновлении записи.
    В общем не работает.
     
  • 1.40, Аноним (40), 17:40, 04/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сейчас PostgreSQL с типом jsonb и индексами GIS намного круче.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру