wydanie rozproszonej bazy danych z dokumentami , należącej do klasy systemów NoSQL. Źródła projektu na licencji Apache 2.0.
, zaimplementowane w Apache CouchDB 3.0:
- Wzmocniono zabezpieczenia w konfiguracji domyślnej.
Podczas uruchamiania musi być teraz zdefiniowany użytkownik admin, bez którego serwer zakończy pracę z błędem (umożliwia to rozwiązanie problemów z uruchamianiem serwerów, które przez przeoczenie pozostawiają dostęp bez uwierzytelnienia). Do wywołań „/_all_dbs” teraz wymagane są uprawnienia administratora, a wszystkie bazy danych są domyślnie tworzone dostępne tylko dla użytkownika admin (parametry dostępu mogą być zmienione za pomocą obiektu „_security”). Edytowanie obiektów w bazie danych _users jest domyślnie zabronione; - możliwość tworzenia definiowanych przez użytkownika segmentowanych (partycjonowanych) baz danych, co pozwala na określenie własnych zasad rozdzielania dokumentów na segmenty (zakres shardów). Do widoków i indeksów Mango dodano specjalne optymalizacje dla baz danych segmentowanych;
- tryb automatycznego podziału podczas segmentacji (sharding). W bazach danych możliwe jest teraz redistribucja danych na segmenty w zależności od wzrostu wartości czynnika q, stosowanego do określenia poziomu podziału;
- podsystem ken do automatycznego indeksowania w tle i utrzymywania na bieżąco wtórnych indeksów (JavaScript, Mango, indeksy do wyszukiwania tekstu) bez jawnego uruchamiania operacji ich tworzenia;
- Całkowicie przepisano proces smoosh, stosowany do automatycznego pakowania baz danych;
- Proponowany nowy podsystem , stosowany do zmiany priorytetu wejścia/wyjścia dla określonych operacji;
- Wdrożono system testów regresyjnych;
- Dodano oficjalne wsparcie dla platform arm64v8 (aarch64) i ppc64le (ppc64el);
- Dodano wsparcie dla silnika JavaScript SpiderMonkey 1.8.5 (gałąź ESR Firefox 60) z ulepszonym wsparciem ES5, ES6 i ES2016+;
- W skład włączono silnik wyszukiwania oparty na Lucene, co znacząco upraszcza wdrożenie systemu wyszukiwania w oparciu o CouchDB;
- Dodano backend do prowadzenia logów z użyciem systemd-journald;
- Dodano ustawienie „[couchdb] single_node”, przy instalacji którego CouchDB automatycznie stworzy bazy danych systemowe, jeśli ich nie ma;
- Przeprowadzono optymalizację wydajności procesu couch_server;
- Zdecydowanie poprawiono instalator dla platformy Windows;
- Rozmiar widoków jest ograniczony do 2^28 (268435456) wyników. Ten limit może być dostosowywany osobno dla zwykłych i segmentowanych widoków za pomocą opcji query_limit i partition_query_limit w sekcji „[query_server_config]”;
- Usunięto osobny interfejs HTTP do zarządzania lokalnym węzłem, uruchamiany na porcie sieciowym 5986, którego funkcjonalność jest teraz dostępna za pośrednictwem wspólnego interfejsu zarządzania klastrem;
- Maksymalny rozmiar dokumentu zmniejszono do 8 MB, co może prowadzić do problemów z replikacją danych ze starszych serwerów po aktualizacji do CouchDB 3.0. Aby zwiększyć limit, można użyć ustawienia „[couchdb] max_document_size”;
- Przeprowadzono dużą czyszczenie przestarzałych funkcji, takich jak wywołania _replicator i _external, pola disk_size i data_size, opcja delayed_commits;
- Do uruchomienia CouchDB wymagana jest teraz Erlang/OTP 20.3.8.11+, 21.2.3+ lub 22.0.5. Teoretycznie zachowano funkcjonalność z gałęzi Erlang/OTP 19, ale jest ona objęta testami.
Przypominamy, że CouchDB przechowuje dane w formacie uporządkowanej listy i umożliwia częściową replikację danych między wieloma bazami danych w trybie „master-master” z jednoczesnym wykrywaniem i rozwiązywaniem konfliktów. Każdy serwer przechowuje swój lokalny zestaw danych, synchronizowany z innymi serwerami, które mogą być przełączane w tryb offline i okresowo replikować zmiany. W szczególności ta funkcjonalność sprawia, że CouchDB jest atrakcyjnym rozwiązaniem do organizacji synchronizacji ustawień aplikacji między różnymi komputerami. Rozwiązania oparte na CouchDB są wdrażane w takich firmach jak BBC, Apple i CERN.
Zapytania do CouchDB i indeksacja danych mogą być wykonywane zgodnie z paradygmatem , wykorzystując do formułowania logiki wyboru danych język JavaScript. Jądro systemu napisane jest w języku Erlang, zoptymalizowanym do obsługi wielu równoległych zapytań w systemach rozproszonych. Serwer widoków napisany jest w języku C i bazuje na silniku JavaScript projektu Mozilla. Dostęp do bazy danych odbywa się za pomocą protokołu HTTP z wykorzystaniem RESTful JSON API, co umożliwia dostęp do danych również z aplikacji webowych uruchamianych w przeglądarkach.
Jednostką przechowywania danych jest dokument z unikalnym identyfikatorem, wersją oraz zawierający dowolny zestaw nazwanych pól w formacie klucz/wartość. Aby zorganizować pseudostrukturalny zestaw danych z dowolnych dokumentów (agregacja i formowanie próbek), stosuje się koncepcję tworzenia widoków (view), do określenia których używa się języka JavaScript. W JavaScript można również definiować funkcje do sprawdzania poprawności danych podczas dodawania nowych dokumentów w ramach określonego widoku.
Źródło: opennet.ru
