DuckDB 0.6.0 E hatisitsoe, Kgetho ea SQLite bakeng sa Lipotso tsa Tlhahlobo

Ho lokolloa ha DuckDB 0.6.0 DBMS hoa fumaneha, ho kopanya thepa e joalo ea SQLite joalo ka compactness, bokhoni ba ho hokahana ka mokhoa oa laebrari e kentsoeng, ho boloka database ka faele e le 'ngoe le sebopeho se bonolo sa CLI, se nang le lisebelisoa le lisebelisoa tsa ho phethahatsa. lipotso tsa tlhahlobo tse koahelang karolo ea bohlokoa ea data e bolokiloeng, mohlala, tse kopanyang litaba tsohle tsa litafole kapa tse kopanyang litafole tse 'maloa tse kholo. Khoutu ea projeke e ajoa tlasa laesense ea MIT. Nts'etsopele e ntse e le mothating oa ho theha litokollo tsa liteko, kaha mokhoa oa polokelo ha o so ka o tsitsisoa mme o fetoha ho tloha ho mofuta ho ea ho mofuta.

DuckDB e fana ka puo e tsoetseng pele ea SQL e kenyelletsang bokhoni bo eketsehileng ba ho sebetsana le lipotso tse thata haholo le tse jang nako. Tšebeliso ea mefuta e rarahaneng (li-arrays, libopeho, mekhatlo ea basebetsi) le bokhoni ba ho phethahatsa li-subqueries tse amanang le sehlaha li tšehetsoa. E ts'ehetsa ho botsa lipotso tse ngata ka nako e le 'ngoe, ho botsa lipotso ka kotloloho ho tsoa ho lifaele tsa CSV le Parquet. Hoa khoneha ho reka ho tsoa ho PostgreSQL DBMS.

Ntle le khoutu ea khetla e tsoang ho SQLite, morero o sebelisa parser ho tloha PostgreSQL laebraring e arohaneng, karolo ea Date Math ho tsoa ho MonetDB, ts'ebetsong ea eona ea mesebetsi ea lifensetere (e ipapisitseng le algorithm ea Segment Tree Aggregation), processor ea kamehla ea polelo e thehiloeng ho. laeborari ea RE2, optimizer ea eona ea ho botsa, le mochini oa taolo oa MVCC ho etsa mesebetsi ka nako e le 'ngoe (Multi-Version Concurrency Control), hammoho le enjine ea ho botsa lipotso e thehiloeng ho Hyper-Pipelining Query Execution algorithm, e lumellang lihlopha tse kholo tsa boleng. e lokela ho sebetsoa hang ts'ebetsong e le 'ngoe.

Har'a liphetoho tse hlahang tokollong e ncha:

  • Mosebetsi o ile oa tsoela pele ho ntlafatsa mokhoa oa ho boloka. Mokhoa o nang le tšepo oa ho ngola oa disk o kentsoe ts'ebetsong, moo ha o kenya sete e kholo ea data ts'ebetsong e le 'ngoe, data e hatelloa ebe e ngoloa faeleng e tsoang ho database ka mokhoa oa ho phallela, ntle le ho emela hore transaction e tiisetsoe ka taelo ea COMMIT. . Ha taelo ea COMMIT e amoheloa, data e se e ngotsoe ho disk, 'me ha ROLLBACK e etsoa, ​​​​e lahloa. Pele, data e ne e bolokoa ka botlalo mohopolong, 'me ha e etsoa, ​​​​e bolokoa ho disk.
  • Ts'ehetso e kenyellelitsoeng bakeng sa ho kenya data ka mokhoa o ts'oanang litafoleng tse arohaneng, tse u lumellang ho eketsa lebelo la ho jarolla lits'ebetsong tsa mantlha tse ngata. Ka mohlala, tokollong e fetileng, ho kenya database ka mela e limilione tse 150 ho CPU ea 10-core ho nkile metsotsoana e 91, empa phetolelong e ncha ts'ebetso ena e phethoa ka metsotsoana e 17. Ho na le mekhoa e 'meli e tšoanang ea ho kenya - ka ho boloka tatellano ea lirekoto le ntle le ho boloka taelo.
  • Bakeng sa khatello ea data, ho sebelisoa algorithm ea FSST (Fast Static Symbol Table), e u lumellang ho paka data ka har'a likhoele u sebelisa dikishinari e tloaelehileng ea lipapali tse tloaelehileng. Tšebeliso ea algorithm e ncha e entse hore ho khonehe ho fokotsa boholo ba database ea liteko ho tloha ho 761MB ho ea ho 251MB.
  • Li-algorithms tsa Chimp le Patas li khothalelitsoe ho hatella linomoro tsa lintlha tse phaphametseng (DOUBLE le FLOAT). Ha ho bapisoa le algorithm e fetileng ea Li-Gorilla, Chimp e fana ka maemo a holimo a khatello le khatello ea maikutlo e potlakileng. Patas algorithm e salletse ka morao ho Chimp ka tekanyo ea compression, empa e potlakile haholo ka lebelo la decompression, e batlang e sa fapane le ho bala data e sa hatelloang.
  • E kentse bokhoni ba teko ea ho kenya data ho tsoa ho lifaele tsa CSV ho melapo e mengata e tšoanang (SET experimental_parallel_csv=true), e fokotsang haholo nako e hlokahalang ho kenya lifaele tse kholo tsa CSV. Mohlala, ha khetho ena e ne e entsoe, nako ea ho jarolla file ea 720 MB CSV e fokotsehile ho tloha ho metsotsoana e 3.5 ho isa ho 0.6.
  • Monyetla oa ts'ebetso e ts'oanang ea tlhahiso ea index le ts'ebetso ea taolo e kentsoe ts'ebetsong. Mohlala, ts'ebetso ea CREATE INDEX kholomong e nang le lirekoto tse limilione tse 16 e fokotsoe ho tloha ho metsotsoana e 5.92 ho isa ho 1.38.
  • E lumelletse ho tsamaisana ha mesebetsi e kopantseng lipotso tse nang le poleloana "COUNT(DISTINCT col)".
  • SQL e ekelitse tšehetso ea mofuta oa UNION, e lumellang mefuta e mengata hore e tlameletsoe nthong e le 'ngoe (mohlala, "UNION(num INT, error VARCHAR))").
  • SQL e fana ka bokhoni ba ho bopa lipotso tse qalang ka lentsoe "FROM" sebakeng sa "KHETHA". Tabeng ena, ho nahanoa hore potso e qala ka "KHETHA *".
  • SQL e kentse tšehetso bakeng sa polelo ea COLUMNS, e u lumellang ho etsa ts'ebetso likholomong tse ngata ntle le ho qopitsa polelo. Ka mohlala, "KHETHA MIN(COLUMNS(*)) ho tswa ho obs;" e tla etsa hore mosebetsi oa MIN o phethiloe bakeng sa kholomo e 'ngoe le e 'ngoe ea tafole ea obs, le "KHETHA LIKHOLOMO('val[0-9]+') ho tsoa ho obs;" bakeng sa litšiea tse nang le lebitso le nang le "val" le linomoro.
  • Tšehetso e ekelitsoeng bakeng sa ts'ebetso ea manane, mohlala, "KHETHA [x + 1 bakeng sa x ho [1, 2, 3]] AS l;".
  • Tšebeliso ea memori e ntlafalitsoe. Ka ho sa feleng, sethala sa Linux se sebelisa laebrari ea jemalloc bakeng sa taolo ea memori. Ts'ebetso e ntlafalitsoeng haholo ea ts'ebetso ea ho kopanya hash ha memori e lekanyelitsoe.
  • E kenyellelitsoe ".mode duckbox" mokhoa oa tlhahiso ho sebopeho sa mola oa taelo, o lahlang litšiea tse bohareng ho nahanoa ka bophara ba fensetere ea terminal (e loketseng ho hlahloba kapele liphetho tsa lipotso ka palo e kholo ea likholomo, tse kang "KHETHA * HO TLOHA tbl”, eo ka mokhoa o tloaelehileng e phatlalalitsoeng meleng e mengata). U sebelisa ".maxrows X" parameter, u ka eketsa palo ea mela e bontšitsoeng.
  • CLI e fana ka tlatsetso e ikemetseng ea ho kenya ho nahanela maemo (kenyo ea mantsoe a sehlooho, mabitso a litafole, mesebetsi, mabitso a likholomo le mabitso a lifaele a phethiloe).
  • CLI e na le pontšo ea tsoelo-pele ea lipotso e nolofalitsoeng ke kamehla.

Source: opennet.ru

Eketsa ka tlhaloso