Wydanie zorientowanego na dokumenty DBMS Apache CouchDB 3.0

Odbyła się wydanie rozproszonej bazy danych zorientowanej na dokumenty Apache CouchDB 3.0, należące do klasy systemów NoSQL. Źródła projektu rozpowszechnianie się na licencji Apache 2.0.

Improvementszaimplementowano w Apache CouchDB 3.0:

  • Domyślna konfiguracja została ulepszona.
    Podczas uruchamiania należy teraz zdefiniować użytkownika admin, bez którego serwer zakończy działanie z błędem (pozwala rozwiązać problemy z uruchamianiem serwerów, które przypadkowo pozostawiają dostęp bez uwierzytelnienia). Wywołania „/_all_dbs” wymagają teraz uprawnień administratora, a wszystkie bazy danych są tworzone domyślnie i dostępne tylko dla użytkownika admin (parametry dostępu można zmienić poprzez obiekt „_security”). Domyślnie edycja obiektów w bazie _users jest zabroniona;

  • Dodany możliwość tworzenia zdefiniowanych przez użytkownika segmentowanych (partycjonowanych) baz danych, co pozwala na zdefiniowanie własnych reguł dystrybucji dokumentów pomiędzy segmentami (shard range). Dodano specjalne optymalizacje dla podzielonych baz danych do widoków i indeksów Mango;
  • Wdrożone automatyczny tryb podziału podczas segmentacji (sharding). W bazie danych możliwa jest teraz redystrybucja danych pomiędzy segmentami, uwzględniająca wzrost wartości współczynnika q służącego do określenia stopnia rozbicia;
  • Dodany podsystem ken do automatycznego indeksowania w tle i utrzymywania aktualności indeksów wtórnych (JavaScript, Mango, indeksy wyszukiwania tekstowego) bez jawnego uruchamiania operacji ich budowy;
  • Proces smoosh używany do automatycznego pakowania baz danych został całkowicie przepisany;
  • Zaproponowano nowy podsystem Kolejka we/wy, używany do zmiany priorytetu we/wy dla niektórych operacji;
  • Wdrożono system testów regresyjnych;
  • Dodano oficjalne wsparcie dla platform arm64v8 (aarch64) i ppc64le (ppc64el);
  • Dodano obsługę łączenia z silnikiem JavaScript SpiderMonkey 1.8.5 (oddział ESR przeglądarki Firefox 60) z ulepszoną obsługą ES5, ES6 i ES2016+;
  • Wyszukiwarka wliczona w cenę Dreyfus oparty na Lucene, co znacznie ułatwia wdrożenie wyszukiwarki opartej o CouchDB;
  • Dodano backend do logowania przy użyciu systemd-journald;
  • Dodano ustawienie „[couchdb] single_node”, gdy jest ustawione, CouchDB automatycznie utworzy systemowe bazy danych, jeśli ich brakuje;
  • Zoptymalizowano wydajność procesu couch_server;
  • Instalator dla platformy Windows został znacznie ulepszony;
  • Liczba wyświetleń jest ograniczona do 2^28 (268435456) wyników. Limit ten można skonfigurować oddzielnie dla widoków zwykłych i segmentowanych, korzystając z opcji query_limit i Partition_query_limit w sekcji „[query_server_config]”;
  • Usunięto odrębny interfejs zarządzania węzłami lokalnymi HTTP, uruchamiany na porcie sieciowym 5986, którego funkcjonalność jest teraz dostępna poprzez wspólny interfejs zarządzania klastrami;
  • Maksymalny rozmiar dokumentu został zmniejszony do 8 MB, co może powodować problemy z replikacją danych ze starszych serwerów po aktualizacji do CouchDB 3.0. Aby zwiększyć limit, możesz skorzystać z ustawienia „[couchdb] max_document_size”;
  • Dokonano gruntownego oczyszczenia przestarzałych funkcji, takich jak wywołania _replicator i _external, pola disc_size i data_size oraz opcja Delayed_commits;
  • Uruchamianie CouchDB wymaga teraz Erlang/OTP 20.3.8.11+, 21.2.3+ lub 22.0.5. Teoretycznie funkcjonalność z gałęzią Erlang/OTP 19 zostanie zachowana, ale jest to objęte testami.

Przypomnijmy, że CouchDB przechowuje dane w formie uporządkowanej listy i umożliwia częściową replikację danych pomiędzy kilkoma bazami danych w trybie master-master z jednoczesnym wykrywaniem i rozwiązywaniem sytuacji konfliktowych. Każdy serwer przechowuje swój własny lokalny zestaw danych, zsynchronizowany z innymi serwerami, które można przełączyć w tryb offline i okresowo replikować zmiany. W szczególności ta funkcja sprawia, że ​​CouchDB jest atrakcyjnym rozwiązaniem do synchronizacji ustawień programów pomiędzy różnymi komputerami. Rozwiązania oparte na CouchDB zostały wdrożone w takich firmach jak BBC, Apple czy CERN.

Zapytania CouchDB i indeksowanie danych można realizować według paradygmatu MapaReduce, używając JavaScript do generowania logiki próbkowania danych. Rdzeń systemu napisany jest w języku Erlang, który jest zoptymalizowany do tworzenia systemów rozproszonych obsługujących wiele równoległych żądań. Serwer widoku napisany jest w języku C i bazuje na silniku JavaScript z projektu Mozilla. Dostęp do bazy odbywa się przy wykorzystaniu protokołu HTTP z wykorzystaniem RESTful JSON API, które umożliwia dostęp do danych m.in. z aplikacji internetowych działających w przeglądarce.

Jednostka przechowywania danych to dokument posiadający unikalny identyfikator, wersję i zawierający dowolny zestaw nazwanych pól w formacie klucz/wartość. Aby uporządkować pseudostrukturalny zbiór danych z dowolnych dokumentów (agregacja i selekcja), stosuje się koncepcję tworzenia widoków (widoków), aby określić, który język JavaScript jest używany. JavaScript może również definiować funkcje sprawdzające dane podczas dodawania nowych dokumentów w określonym widoku.

Źródło: opennet.ru

Dodaj komentarz