Liberigo de la dokument-orientita DBMS Apache CouchDB 3.0

okazis liberigo de distribuita dokument-orientita datumbazo Apache CouchDB 3.0, apartenanta al la klaso de NoSQL-sistemoj. Projektfontoj disvastigi licencita sub Apache 2.0.

Plibonigojefektivigite en Apache CouchDB 3.0:

  • La defaŭlta agordo estis plibonigita.
    Komencante, la administranto-uzanto nun devas esti difinita, sen kiu la servilo finiĝos per eraro (ebligas al vi solvi problemojn kun lanĉaj serviloj, kiuj pretervole lasas aliron sen aŭtentigo). Alvokoj al "/_all_dbs" nun postulas administrajn rajtojn, kaj ĉiuj datumbazoj estas kreitaj defaŭlte nur alireblaj por la administra uzanto (aliraj parametroj povas esti ŝanĝitaj per la objekto "_security"). Defaŭlte, redaktado de objektoj en la datumbazo _users estas malpermesita;

  • Aldonita la kapablo krei uzant-difinitajn segmentitajn (dividitajn) datumbazojn, ebligante difini viajn proprajn regulojn por distribuado de dokumentoj trans segmentoj (fragmenta gamo). Aldonitaj specialaj optimumigoj por fragmentaj datumbazoj al Mango-vidoj kaj indeksoj;
  • Efektivigita aŭtomata divida reĝimo dum segmentado (sharding). En la datumbazo, nun eblas redistribui datumojn inter segmentoj, konsiderante pliiĝon de la valoro de la q-faktoro uzata por determini la nivelon de rompo;
  • Aldonita ken-subsistemo por aŭtomata fonindeksado kaj konservado de sekundaraj indeksoj (JavaScript, Mango, tekstoserĉaj indeksoj) ĝisdatigita sen eksplicite lanĉado de siaj konstruoperacioj;
  • La smoosh procezo uzita por aŭtomata datumbaza pakado estis tute reverkita;
  • Nova subsistemo proponita IO-Vico, uzata por ŝanĝi la I/O prioritaton por certaj operacioj;
  • Efektivigis regresan testan sistemon;
  • Aldonita oficiala subteno por arm64v8 (aarch64) kaj ppc64le (ppc64el) platformoj;
  • Aldonita subteno por ligo kun la JavaScript-motoro SpiderMonkey 1.8.5 (ESR-branĉo de Firefox 60) kun plibonigita subteno por ES5, ES6 kaj ES2016+;
  • Serĉilo inkluzivita Dreyfus surbaze de Lucene, kiu ege simpligas la deplojon de serĉilo bazita sur CouchDB;
  • Aldonita backend por ensaluti uzante systemd-journald;
  • Aldonita la agordo "[couchdb] single_node", kiam ĝi estas agordita, CouchDB aŭtomate kreos sistemajn datumbazojn se ili mankas;
  • La agado de la procezo couch_server estis optimumigita;
  • La instalilo por la Vindoza platformo estis signife plibonigita;
  • Vidoj estas limigitaj al 2^28 (268435456) rezultoj. Ĉi tiu limo povas esti aparte agordita por regulaj kaj segmentitaj vidoj uzante la opciojn query_limit kaj partition_query_limit en la sekcio "[query_server_config]";
  • Aparta HTTP-loka noda administradinterfaco, lanĉita sur rethaveno 5986, estis forigita, kies funkcieco nun estas havebla tra la komuna cluster-administra interfaco;
  • La maksimuma dokumentgrandeco estis reduktita al 8 MB, kio povas kaŭzi problemojn kun datumreproduktado de pli malnovaj serviloj post ĝisdatigo al CouchDB 3.0. Por pliigi la limon, vi povas uzi la agordon "[couchdb] max_document_size";
  • Grava purigado de malnoviĝintaj funkcioj estis farita, kiel la _replicator kaj _external vokoj, la disk_size kaj data_size kampoj, kaj la delayed_commits opcio;
  • Ruli CouchDB nun postulas Erlang/OTP 20.3.8.11+, 21.2.3+ aŭ 22.0.5. Teorie, la funkcieco kun la branĉo Erlang/OTP 19 estas konservita, sed ĝi estas kovrita per testoj.

Ni memoru, ke CouchDB stokas datumojn en ordigita listo-formato kaj permesas partan reproduktadon de datumoj inter pluraj datumbazoj en majstra-mastra reĝimo kun samtempa detekto kaj solvado de konfliktsituacioj. Ĉiu servilo stokas sian propran lokan aron de datumoj, sinkronigitaj kun aliaj serviloj, kiuj povas esti prenitaj eksterrete kaj periode reprodukti ŝanĝojn. Aparte, ĉi tiu funkcio igas CouchDB alloga solvo por sinkronigi programajn agordojn inter malsamaj komputiloj. CouchDB-bazitaj solvoj estis efektivigitaj en kompanioj kiel BBC, Apple kaj CERN.

CouchDB-demandoj kaj datenindeksado povas esti faritaj laŭ la paradigmo MapReduce, uzante JavaScript por generi datuman specimenan logikon. La sistemkerno estas skribita en Erlang, kiu estas optimumigita por krei distribuitajn sistemojn, kiuj servas plurajn paralelajn petojn. La vidoservilo estas skribita en C kaj baziĝas sur la JavaScript-motoro de la projekto Mozilla. Aliro al la datumbazo estas farita per la HTTP-protokolo uzante RESTful JSON API, kiu ebligas al vi aliri datumojn, inkluzive de retaj aplikaĵoj kurantaj en la retumilo.

La datumstoka unuo estas dokumento kiu havas unikan identigilon, version kaj enhavas arbitran aron de nomitaj kampoj en la ŝlosilo/valorformato. Por organizi pseŭdostrukturitan aron de datumoj de arbitraj dokumentoj (agregado kaj elekto), la koncepto de formado de vidoj (vidoj) estas uzata, por difini kiu la JavaScript lingvo estas uzata. JavaScript ankaŭ povas difini funkciojn por validigi datumojn aldonante novajn dokumentojn ene de aparta vido.

fonto: opennet.ru

Aldoni komenton