Pagpagawas sa DBMS SQLite 3.42 ug DuckDB 0.8.0. CG/SQL uban ang pagpatuman sa gitipigan nga mga pamaagi alang sa SQLite

Ang pagpagawas sa SQLite 3.42, usa ka gaan nga DBMS nga gidisenyo isip usa ka plug-in library, gimantala. Ang kodigo sa SQLite giapod-apod sa publikong dominyo, i.e. mahimong gamiton nga walay mga pagdili ug walay bayad alang sa bisan unsa nga katuyoan. Ang pinansyal nga suporta alang sa SQLite developers gihatag sa usa ka espesyal nga gibuhat consortium, nga naglakip sa mga kompanya sama sa Adobe, Oracle, Mozilla, Bentley ug Bloomberg.

Panguna nga mga pagbag-o:

  • Para sa FTS5 full-text index, ang secure-delete nga command gipatuman, nga hingpit nga nagwagtang sa tanang nahabilin nga datos human sa pagtangtang.
  • Ang mga gimbuhaton sa pagproseso sa datos sa JSON karon nagsuporta sa mga extension sa JSON5.
  • Gipauswag nga tigplano sa pangutana. Ang pag-optimize sa count-of-view gipalihok pinaagi sa default. Ang pagproseso sa wala magamit nga mga kolum sa mga subquery giwagtang. Gipauswag nga pagpatuman sa push-down optimization.
  • Gidugang ang "--unsafe-testing" nga opsyon sa command line interface, nga nagtugot sa paggamit sa pipila ka makuyaw nga mga sugo, sama sa ".testctrl", gituyo aron gamiton sa pagsulay. Sa safe mode (“-safe”), ang paggamit sa “.log on” ug “.log off” nga mga sugo gitugotan. Gidugang nga suporta alang sa "-" delimiter, alang sa mga argumento nga pagkahuman ang pagproseso sa opsyon dili na magamit. Gidugang ang ":inf" ug ":nan" nga mga parametro nga nalangkit sa infinity ug NaN values.
  • Ang mga ngalan sa mga function sa SQL nga gitakda sa aplikasyon nagtugot sa intersection sa CROSS, FULL, INNER, LEFT, NATURAL, OUTER, ug RIGHT keywords.
  • Ang mga kapabilidad sa PRAGMA integrity_check gipalapdan. Gidugang nga pagsusi alang sa pagtino sa mga kantidad sa NaN sa mga kolum nga adunay kondisyon nga DILI NULL. Gipauswag nga sulud sa kasayuran sa mga mensahe sa sayup.
  • Ang session add-on nagtugot sa intercepting mga kausaban gikan sa mga lamesa nga walay ROWID.
  • Ang "subsec" modifier gidugang sa mga gimbuhaton alang sa pagtrabaho sa mga oras ug petsa aron magamit ang mga tipik sa mga segundo.
  • Ang default nga giladmon sa recursion alang sa mga arrays ug JSON nga mga butang gikunhoran gikan sa 2000 ngadto sa 1000.

Dugang pa, ang pagpagawas sa DuckDB 0.8.0 DBMS nahimo, nga nagpalambo sa usa ka bersyon sa SQLite, gipalapdan nga adunay mga kapabilidad ug mga pag-optimize alang sa pagpatuman sa mga analytical nga pangutana nga naglangkob sa usa ka hinungdanon nga bahin sa gitipigan nga datos, pananglitan, paghimo sa pagtipon sa tibuuk nga sulud. sa mga lamesa o paghiusa sa daghang dagkong mga lamesa. Naghatag usa ka abante nga diyalekto sa SQL nga naglakip sa dugang nga mga kapabilidad alang sa pagproseso sa labi ka komplikado ug dugay nga mga pangutana, ug nagsuporta usab sa mga komplikado nga tipo (mga array, istruktura, unyon), pagdagan daghang mga pangutana nga dungan, ug pagpadagan sa mga pangutana direkta gikan sa CSV, JSON, ug Parquet nga mga file . Posible ang pag-import gikan sa PostgreSQL DBMS.

Dugang pa sa shell code gikan sa SQLite, ang proyekto naggamit sa usa ka parser gikan sa PostgreSQL sa usa ka bulag nga librarya, ang Date Math component gikan sa MonetDB, ang kaugalingon nga pagpatuman sa mga function sa bintana (base sa Segment Tree Aggregation algorithm), usa ka regular nga expression processor base sa ang RE2 library, ang kaugalingon nga query optimizer, ug usa ka mekanismo sa pagkontrol sa MVCC nga dungan nga pagpatuman sa mga buluhaton (Multi-Version Concurrency Control), ingon man usa ka vectorized query execution engine base sa Hyper-Pipelining Query Execution algorithm, nga nagtugot sa dagkong mga set sa mga kantidad aron maproseso dayon sa usa ka operasyon. Ang code sa proyekto giapod-apod ubos sa lisensya sa MIT.

Sa bag-ong bersyon sa DuckDB:

  • Gidugang ang mga bag-ong ekspresyon nga "PIVOT" ug "UNPIVOT" aron mabag-o ang mga linya sa mga kolum ug vice versa.
  • Gipauswag nga parallelization kung nag-import ug nag-export sa datos. Sa kasagaran, ang multi-threaded nga pagbasa gikan sa CSV files ug multi-threaded nga pagsulat kay gipatuman sa paggamit sa Parquet, CSV ug JSON nga mga format.
  • Gidugang ang "**" operator aron balik-balikon ang pag-uli pinaagi sa mga direktoryo sa pagtino sa mga agianan sa file (pananglitan, GIKAN sa "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Gidugang nga suporta alang sa mga operasyon sa paghiusa (JOIN) alang sa datos sa porma sa usa ka serye sa oras (mga hiwa sa mga kantidad sa parameter sa piho nga mga agwat sa oras), diin ang sukdanan sa paghiusa sa mga rekord dili eksakto, apan usa ka gibanabana nga sulagma sa mga kantidad. sa usa ka uma nga adunay oras (pananglitan, mahimo nimong i-merge ang mga rekord, oras nga lahi sa dili molapas sa 1 minuto).
  • Gipatuman ang tapulan nga pagkarga sa metadata sa database, nga nagpaposible sa pagpadali sa paglansad sa DBMS sa napulo ka beses.
  • Gidugang nga suporta alang sa pagkonektar sa naandan nga mga gimbuhaton sa Python.
  • Gidugang nga suporta alang sa ADBC ​​​​(Arrow Database Connectivity) API alang sa pagbalhin sa datos gamit ang Apache Arrow.
  • Ang usa ka pagbugkos gipatuman alang sa panagsama sa Swift code.
  • Gibag-o ang pamatasan sa operator sa dibisyon ("/") aron mahimo ang mga kalkulasyon sa floating point imbes nga mga operasyon sa integer nga default. Usa ka bag-ong operator "//" gisugyot alang sa integer division. Ang daan nga pamatasan mahimong ibalik pinaagi sa pagtakda sa "SET integer_division = tinuod;".
  • Ang pamaagi sa pagkonsiderar sa zero nga mga rekord kung ang paghan-ay giusab gikan sa "NULLS FIRST" ngadto sa "NULLS LAST", i.e. Ang NULL nga mga kantidad i-imprinta na karon sa katapusan kaysa sa sinugdanan sa lista. Ang daan nga kinaiya mahimong ibalik pinaagi sa pagbutang sa "SET default_null_order = 'nulls_first';".

Dugang pa, mahimo natong timan-an ang proyekto sa CG/SQL nga gimugna sa Facebook, nga naghatag og code generator alang sa paggamit sa gitipigan nga mga pamaagi sa SQLite. Gitugotan ka sa CG/SQL nga isulat ang gitipigan nga mga pamaagi sa usa ka espesyal nga diyalekto sa T-SQL (Transact-SQL), nga nagtugot sa mga function sa pagtawag sa standard nga librarya sa C ug pag-access sa datos sa SQLite. Ang namugna nga gitipigan nga mga pamaagi gihugpong ngadto sa C code nga naggamit sa SQLite C API aron sa paghimo sa piho nga mga aksyon ug proseso sa komplikadong mga pangutana. Ang hinipos nga gitipigan nga mga pamaagi mahimong konektado sa C, Java, ug Objective-C nga mga programa. Ang code sa proyekto gisulat sa C ug giapod-apod ubos sa lisensya sa MIT.

Source: opennet.ru

Idugang sa usa ka comment