DuckDB 0.6.0, iyatọ SQLite fun awọn ibeere itupalẹ ti a tẹjade

Itusilẹ ti DuckDB 0.6.0 DBMS wa, apapọ iru awọn ohun-ini ti SQLite bi iwapọ, agbara lati sopọ ni irisi ile-ikawe ifibọ, titoju data data sinu faili kan ati wiwo CLI ti o rọrun, pẹlu awọn irinṣẹ ati awọn iṣapeye fun ṣiṣe. awọn ibeere itupalẹ ti o bo apakan pataki ti data ti o fipamọ, fun apẹẹrẹ ti o ṣajọpọ gbogbo awọn akoonu ti awọn tabili tabi dapọ ọpọlọpọ awọn tabili nla. Koodu ise agbese ti pin labẹ iwe-aṣẹ MIT. Idagbasoke naa tun wa ni ipele ti ṣiṣẹda awọn idasilẹ esiperimenta, niwọn igba ti ọna kika ibi ipamọ ko tii diduro ati yipada lati ẹya si ẹya.

DuckDB n pese ede SQL ti ilọsiwaju ti o pẹlu awọn agbara afikun fun mimu idiju pupọ ati awọn ibeere ti n gba akoko. Lilo awọn oriṣi idiju (awọn akojọpọ, awọn ẹya, awọn ẹgbẹ) ati agbara lati ṣiṣẹ lainidii ati awọn ibeere isọdọtun itẹ-ẹiyẹ ni atilẹyin. O ṣe atilẹyin ṣiṣiṣẹ awọn ibeere lọpọlọpọ nigbakanna, ṣiṣe awọn ibeere taara lati awọn faili CSV ati Parquet. O ṣee ṣe lati gbe wọle lati PostgreSQL DBMS.

Ni afikun si koodu ikarahun lati SQLite, ise agbese na nlo parser lati PostgreSQL ni ile-ikawe lọtọ, paati Ọjọ Iṣiro lati MonetDB, imuse ti ara rẹ ti awọn iṣẹ window (da lori algorithm Aggregation Segment Tree), isise ikosile deede ti o da lori ile-ikawe RE2, olupilẹṣẹ ibeere tirẹ, ati ẹrọ iṣakoso MVCC kan nigbakanna ti awọn iṣẹ ṣiṣe (Iṣakoso Concurrency Multi-Version), bakanna bi ẹrọ ipaniyan ibeere vectorized ti o da lori Algorithm Ibeere Ibeere Hyper-Pipeling, eyiti ngbanilaaye awọn ipilẹ nla ti awọn iye lati ṣe ilana ni ẹẹkan ni iṣẹ kan.

Lara awọn ayipada ninu itusilẹ tuntun:

  • Iṣẹ tẹsiwaju lati mu ọna kika ipamọ sii. Ipo kikọ disiki ireti ti ni imuse, ninu eyiti nigbati o ba n ṣajọpọ data nla kan ninu idunadura kan, data naa jẹ fisinuirindigbindigbin ati kọwe si faili kan lati ibi ipamọ data ni ipo ṣiṣanwọle, laisi iduro fun idunadura naa lati jẹrisi pẹlu aṣẹ COMMIT . Nigbati a ba gba aṣẹ COMMIT kan, data naa ti kọ tẹlẹ si disk, ati nigbati ROLLBACK ba ti ṣiṣẹ, a danu. Ni iṣaaju, data ti wa lakoko ti o ti fipamọ patapata si iranti, ati nigbati o ba ṣe, o ti fipamọ si disk.
  • Atilẹyin ti a ṣafikun fun ikojọpọ data ti o jọra sinu awọn tabili lọtọ, eyiti o fun ọ laaye lati mu iyara ikojọpọ pọ si ni pataki lori awọn ọna ṣiṣe pupọ-mojuto. Fun apẹẹrẹ, ninu itusilẹ ti tẹlẹ, ikojọpọ data kan pẹlu awọn ori ila miliọnu 150 lori Sipiyu 10-core gba awọn aaya 91, ṣugbọn ninu ẹya tuntun, iṣẹ ṣiṣe yii ti pari ni iṣẹju-aaya 17. Awọn ipo ikojọpọ afiwera meji wa - pẹlu itọju aṣẹ ti awọn igbasilẹ ati laisi itọju aṣẹ.
  • Fun funmorawon data, FSST (Tabili Alailowaya Yara) algorithm ti lo, eyiti o fun ọ laaye lati di data inu awọn gbolohun ọrọ nipa lilo iwe-itumọ ti o wọpọ ti awọn ere-idije aṣoju. Lilo algorithm tuntun jẹ ki o ṣee ṣe lati dinku iwọn data data idanwo lati 761MB si 251MB.
  • Chimp ati awọn algoridimu Patas ni a ti dabaa lati rọpọ awọn nọmba aaye lilefoofo (DOUBLE ati FLOAT). Ti a ṣe afiwe si algorithm Gorillas ti a ti lo tẹlẹ, Chimp pese awọn ipele ti o ga julọ ti funmorawon ati idinku iyara. Patas alugoridimu lags sile Chimp ni funmorawon ratio, sugbon jẹ Elo yiyara ni decompression iyara, eyi ti o jẹ fere ko si yatọ si lati kika uncompressed data.
  • Ṣafikun agbara idanwo kan lati gbe data lati awọn faili CSV sinu ọpọlọpọ awọn ṣiṣan afiwera (SET experimental_parallel_csv=otitọ), eyiti o dinku ni pataki akoko ti o gba lati kojọpọ awọn faili CSV nla. Fun apẹẹrẹ, nigbati aṣayan yii ba ṣiṣẹ, akoko igbasilẹ fun faili CSV 720 MB dinku lati 3.5 si 0.6 awọn aaya.
  • O ṣeeṣe ti ipaniyan ti o jọra ti ẹda atọka ati awọn iṣẹ iṣakoso ti ni imuse. Fun apẹẹrẹ, iṣẹ CREATE INDEX lori iwe kan pẹlu awọn igbasilẹ miliọnu 16 dinku lati 5.92 si awọn aaya 1.38.
  • Ti ṣiṣẹ parallelization ti awọn iṣẹ iṣakojọpọ ninu awọn ibeere ti o ni ikosile “COUNT(DISTINCT col)” ninu.
  • SQL ti ṣafikun atilẹyin fun iru UNION, eyiti ngbanilaaye awọn oriṣi pupọ lati so pọ si ipin kan (fun apẹẹrẹ, “UNION (nọmba INT, aṣiṣe VARCHAR))”).
  • SQL n pese agbara lati ṣẹda awọn ibeere ti o bẹrẹ pẹlu ọrọ “LATI” dipo “Yan”. Ni idi eyi, a ro pe ibeere naa bẹrẹ pẹlu "Yan *".
  • SQL ti ṣafikun atilẹyin fun ikosile COLUMNS, eyiti o fun ọ laaye lati ṣe iṣẹ kan lori awọn ọwọn pupọ laisi pidánpidán ikosile naa. Fun apẹẹrẹ, “Yan MIN (COLUMNS(*)) lati obs;” yoo jẹ ki iṣẹ MIN ṣiṣẹ fun iwe kọọkan ninu tabili obs, ati "Yan COLUMNS ('val[0-9]+') lati obs;" fun awọn ọwọn pẹlu orukọ ti o ni "val" ati awọn nọmba.
  • Atilẹyin ti a ṣafikun fun awọn iṣẹ ṣiṣe lori awọn atokọ, fun apẹẹrẹ, “Yan [x + 1 fun x ni [1, 2, 3]] AS l;”.
  • Lilo iranti ti jẹ iṣapeye. Nipa aiyipada, Syeed Linux nlo ile-ikawe jemalloc fun iṣakoso iranti. Iṣe ilọsiwaju pataki ti awọn iṣẹ iṣọpọ hash nigbati iranti ba ni opin.
  • Ipo igbejade “.mode duckbox” ti a ṣafikun si wiwo laini aṣẹ, eyiti o da awọn ọwọn aarin silẹ ni akiyesi iwọn ti window ebute (o dara fun wiwo ni iyara wiwo awọn abajade ti awọn ibeere pẹlu nọmba nla ti awọn ọwọn, bii “Yan * LATI tbl”, eyiti o wa ni ipo deede ti tan kaakiri awọn laini pupọ). Lilo paramita “.maxrows X”, o le fi opin si nọmba awọn ori ila ti o han.
  • CLI n pese adaṣe adaṣe ti titẹ sii ni akiyesi ọrọ-ọrọ (titẹwọle ti awọn koko-ọrọ, awọn orukọ tabili, awọn iṣẹ, awọn orukọ ọwọn ati awọn orukọ faili ti pari).
  • CLI naa ni itọka ilọsiwaju ibeere ti o ṣiṣẹ nipasẹ aiyipada.

orisun: opennet.ru

Fi ọrọìwòye kun