Wydanie systemu baz danych typu dokumentowego Apache CouchDB 3.0

Zdarzyło się wydanie rozproszonej bazy danych z dokumentami Apache CouchDB 3.0, należącej do klasy systemów NoSQL. Źródła projektu są rozpowszechniane na licencji Apache 2.0.

Ulepszenia, 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;
  • Dodano 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;
  • Zrealizowano 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;
  • Dodano 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 IO Queue, 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 Dreyfus 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 MapReduce, 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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster