DuckDB 0.6.0, Варианти SQLite барои дархостҳои таҳлилӣ нашр шудааст

Нашри DBMS DuckDB 0.6.0 дастрас аст, ки чунин хосиятҳои SQLite -ро муттаҳид мекунад, ба монанди компактӣ, қобилияти пайвастшавӣ дар шакли китобхонаи дарунсохт, нигоҳ доштани пойгоҳи додаҳо дар як файл ва интерфейси мувофиқи CLI, бо асбобҳо ва оптимизатсияҳо барои иҷрои дархостҳои таҳлилӣ ки қисми муҳими маълумоти захирашударо фаро мегирад, масалан, ҷамъкунии тамоми мундариҷаи ҷадвалҳоро иҷро мекунад ё якчанд ҷадвалҳои калонро муттаҳид мекунад. Рамзи лоиҳа тибқи иҷозатномаи MIT паҳн карда мешавад. Таҳия ҳоло дар марҳилаи ташаккули релизҳои таҷрибавӣ қарор дорад, зеро формати репозиторий ҳанӯз устувор нашудааст ва аз версия ба версия тағйир меёбад.

DuckDB лаҳҷаи васеъи забони SQL-ро пешниҳод мекунад, ки дорои қобилиятҳои иловагӣ барои коркарди дархостҳои хеле мураккаб ва дарозмуддат мебошад. Он истифодаи намудҳои мураккаб (массивҳо, сохторҳо, иттифоқҳо) ва қобилияти иҷро кардани зерпурсишҳои марбути худсарона ва лонаро дастгирӣ мекунад. Иҷрои ҳамзамон дархостҳои сершумор, иҷрои дархостҳоро мустақиман аз файлҳо дар формати CSV ва Паркет дастгирӣ мекунад. Аз DBMS PostgreSQL ворид кардан мумкин аст.

Илова ба рамзи қабати SQLite, лоиҳа як таҳлилгари PostgreSQL-ро истифода мебарад, ки ба китобхонаи алоҳида интиқол дода мешавад, ҷузъи Date Math аз MonetDB, татбиқи худи функсияҳои тиреза (дар асоси алгоритми Aggregation Tree Segment), протсессори ифодаи муқаррарӣ дар асоси китобхонаи RE2, оптимизатори дархостҳои худ, механизми идоракунии MVCC ҳамзамон иҷрои вазифаҳо (Назорати ҳамзамон бисёр версия), инчунин як муҳаррики иҷроиши дархостҳои векторӣ дар асоси алгоритми Execution Query Hyper-Pipelining, ки ба коркарди маҷмӯи зиёди арзишҳо якбора дар як амалиёт.

Дар байни тағйирот дар версияи нав:

  • Кор оид ба такмил додани формати нигоҳдорӣ идома ёфт. Реҷаи оптимистии навиштани диск амалӣ карда шудааст, ки дар он ҳангоми дар як транзаксия маҷмӯи додаҳои калон бор карда мешавад, маълумот фишурда мешавад ва бе интизори тасдиқи транзаксия бо фармони COMMIT ба файл аз базаи маълумот интиқол дода мешавад. Ҳангоми ворид шудани фармони COMMIT, маълумот аллакай ба диск навишта мешавад ва ҳангоми иҷро шудани ROLLBACK, он партофта мешавад. Пештар, маълумот дар аввал пурра дар хотира нигоҳ дошта мешуд ва ҳангоми содир шудан он дар диск захира карда мешуд.
  • Дастгирии мувозии боркунии маълумот ба ҷадвалҳои алоҳида илова карда шудааст, ки метавонад суръати боркуниро дар системаҳои бисёраслӣ ба таври назаррас афзоиш диҳад. Масалан, дар версияи қаблӣ бор кардани пойгоҳи додаҳо бо 150 миллион сатр дар CPU-и 10-аслӣ 91 сония ва дар версияи нав ин амалиёт 17 сонияро дар бар мегирад. Ду намуди боркунии параллелӣ вуҷуд дорад - бо нигоҳ доштани тартиби сабтҳо ва бидуни нигоҳ доштани тартиб.
  • Барои фишурдани додаҳо, алгоритми FSST (Ҷадвали аломатҳои фаврии статикӣ) истифода мешавад, ки ба шумо имкон медиҳад, ки маълумотро дар дохили сатрҳо бо истифода аз луғати маъмулии мувофиқатҳо ҷамъ кунед. Татбиқи алгоритми нав имкон дод, ки андозаи базаи санҷишӣ аз 761 МБ то 251 МБ кам карда шавад.
  • Барои фишурдани ададҳои нуқтаи шинокунанда (DUBLET ва FLOAT), алгоритмҳои Chimp ва Patas пешниҳод карда мешаванд. Дар муқоиса бо алгоритми қаблии Gorillas, Chimp сатҳи баландтари фишурдашавӣ ва декомпрессияи тезтарро таъмин мекунад. Алгоритми Патас аз ҷиҳати фишурдан аз Chimp ақиб мемонад, аммо дар суръати декомпрессия ба таври назаррас тезтар аст, ки тақрибан ба хондани маълумоти фишурнашуда баробар аст.
  • Қобилияти таҷрибавӣ барои бор кардани маълумот аз файлҳои CSV ба якчанд ҷараёнҳои мувозӣ илова карда шуд (SET experimental_parallel_csv=true), ки вақти боркунии файлҳои CSV-ро ба таври назаррас коҳиш медиҳад. Масалан, вақте ки хосият фаъол карда шуд, вақти зеркашии файли CSV-и 720 МБ аз 3.5 то 0.6 сония кам карда шуд.
  • Имконияти ба ҳам пайвастани амалиётҳо оид ба эҷод ва идоракунии индексҳо амалӣ карда шуд. Масалан, иҷрои амалиёти CREATE INDEX дар сутуни дорои 16 миллион сабт аз 5.92 то 1.38 сония кам карда шуд.
  • Параллелизатсияи амалиёти ҷамъоварӣ дар дархостҳое, ки ифодаи "COUNT(DISTINCT col)" пешбинӣ шудааст.
  • Дастгирии навъи UNION ба SQL илова карда шудааст, ки имкон медиҳад намудҳои сершумор ба як элемент пайваст карда шаванд (масалан, "UNION(num INT, хатои VARCHAR))".
  • SQL қобилияти тавлиди дархостҳоро бо калимаи "FROM" ба ҷои "SELECT" таъмин мекунад. Дар ин ҳолат тахмин карда мешавад, ки дархост бо "SELECT *" оғоз мешавад.
  • Дастгирии иловагии ифодаи "COLUMNS" дар SQL, ба шумо имкон медиҳад, ки амалиётро дар сутунҳои сершумор бидуни такрори ифода иҷро кунед. Масалан, "SELECT MIN(COLUMNS(*)) from obs;" боиси иҷро шудани функсияи MIN барои ҳар як сутуни ҷадвали obs мегардад ва "SELECT COLUMNS('val[0-9]+') аз obs;" барои сутунҳо бо номи иборат аз "val" ва рақамҳо.
  • Дастгирии иловашуда барои амалиёти рӯйхат, ба монанди "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • Истеъмоли хотираи оптимизатсияшуда. Бо нобаёнӣ дар платформаи Linux, китобхонаи jemalloc барои идоракунии хотира истифода мешавад. Фаъолияти амалиёти якҷоякунии hash ҳангоми маҳдуд будани хотира ба таври назаррас беҳтар карда шуд.
  • Ҳолати баромади ".mode duckbox" ба CLI илова карда шуда, сутунҳои мобайнӣ дар асоси хатҳои паҳнои равзанаи терминал партофт). Бо истифода аз параметри ".maxrows X", шумо метавонед ба таври иловагӣ шумораи сатрҳои баромадро маҳдуд кунед.
  • CLI бо дарназардошти контекст (вориди калимаҳои калидӣ, номҳои ҷадвал, функсияҳо, номи сутунҳо ва номи файлҳо анҷом дода мешавад) автоматии вурудро таъмин мекунад.
  • CLI бо нобаёнӣ барои намоиш додани нишондиҳандаи пешрафти дархост фаъол аст.

Манбаъ: opennet.ru

Илова Эзоҳ