DuckDB 0.6.0 Imechapishwa, Chaguo la SQLite kwa Maswali ya Uchambuzi

Utoaji wa DuckDB 0.6.0 DBMS unapatikana, unachanganya mali kama hizo za SQLite kama compactness, uwezo wa kuunganishwa katika mfumo wa maktaba iliyoingia, kuhifadhi hifadhidata katika faili moja na kiolesura cha CLI kinachofaa, na zana na uboreshaji wa utekelezaji. maswali ya uchanganuzi yanayojumuisha sehemu kubwa ya data iliyohifadhiwa, kwa mfano inayojumlisha maudhui yote ya majedwali au kuunganisha majedwali kadhaa makubwa. Nambari ya mradi inasambazwa chini ya leseni ya MIT. Utengenezaji bado uko katika hatua ya kuunda matoleo ya majaribio, kwa kuwa umbizo la hifadhi bado halijaimarishwa na mabadiliko kutoka toleo hadi toleo.

DuckDB hutoa lahaja ya hali ya juu ya SQL ambayo inajumuisha uwezo wa ziada wa kushughulikia maswali magumu sana na yanayotumia wakati. Utumiaji wa aina changamano (safu, miundo, miungano) na uwezo wa kutekeleza hoja ndogo za upatanishi za kiholela na zilizowekwa kwenye viota. Inaauni kuendesha hoja nyingi kwa wakati mmoja, ikiendesha maswali moja kwa moja kutoka kwa faili za CSV na Parquet. Inawezekana kuagiza kutoka kwa DBMS ya PostgreSQL.

Kwa kuongezea nambari ya ganda kutoka kwa SQLite, mradi hutumia kichanganuzi kutoka PostgreSQL katika maktaba tofauti, sehemu ya Tarehe ya Hesabu kutoka MonetDB, utekelezaji wake wa kazi za dirisha (kulingana na algorithm ya Segment Tree Aggregation), kichakataji cha kawaida cha kujieleza kulingana na maktaba ya RE2, kiboreshaji hoja yake yenyewe, na utaratibu wa udhibiti wa MVCC utekelezaji wa kazi kwa wakati mmoja (Udhibiti wa Sarafu wa Multi-Version), pamoja na injini ya utekelezaji ya hoja iliyowekewa vekta kulingana na kanuni ya Utekelezaji wa Hoja ya Hyper-Pipelining, ambayo inaruhusu seti kubwa za maadili. kushughulikiwa mara moja katika operesheni moja.

Miongoni mwa mabadiliko katika toleo jipya:

  • Kazi iliendelea kuboresha umbizo la hifadhi. Njia ya matumaini ya uandishi wa diski imetekelezwa, ambayo wakati wa kupakia seti kubwa ya data katika shughuli moja, data inasisitizwa na kuandikwa kwa faili kutoka kwa hifadhidata katika hali ya utiririshaji, bila kungoja shughuli hiyo kuthibitishwa na amri ya COMMIT. . Wakati amri ya COMMIT inapokelewa, data tayari imeandikwa kwa diski, na wakati ROLLBACK inatekelezwa, inatupwa. Hapo awali, data ilihifadhiwa kabisa kwenye kumbukumbu, na wakati wa kujitolea, ilihifadhiwa kwenye diski.
  • Msaada ulioongezwa kwa upakiaji sambamba wa data kwenye meza tofauti, ambayo inakuwezesha kuongeza kasi ya upakiaji kwenye mifumo ya msingi nyingi. Kwa mfano, katika toleo la awali, upakiaji wa hifadhidata na safu milioni 150 kwenye CPU ya msingi-10 ulichukua sekunde 91, lakini katika toleo jipya operesheni hii imekamilika kwa sekunde 17. Kuna njia mbili za upakiaji zinazofanana - na uhifadhi wa mpangilio wa rekodi na bila uhifadhi wa agizo.
  • Kwa ukandamizaji wa data, algorithm ya FSST (Fast Static Symbol Table) hutumiwa, ambayo inakuwezesha kufunga data ndani ya masharti kwa kutumia kamusi ya kawaida ya mechi za kawaida. Matumizi ya algoriti mpya ilifanya iwezekane kupunguza ukubwa wa hifadhidata ya majaribio kutoka 761MB hadi 251MB.
  • Sokwe na kanuni za Patas zimependekezwa kubana nambari za sehemu zinazoelea (DOUBLE na FLOAT). Ikilinganishwa na algoriti ya awali ya Sokwe, Sokwe hutoa viwango vya juu vya mgandamizo na mgandamizo wa haraka zaidi. Algorithm ya Patas iko nyuma ya Chimp katika uwiano wa ukandamizaji, lakini ni kasi zaidi katika kasi ya mtengano, ambayo ni karibu hakuna tofauti na kusoma data isiyo na shinikizo.
  • Imeongeza uwezo wa majaribio wa kupakia data kutoka kwa faili za CSV hadi mitiririko mingi sambamba (SET experimental_parallel_csv=true), ambayo hupunguza kwa kiasi kikubwa muda unaochukua kupakia faili kubwa za CSV. Kwa mfano, chaguo hili lilipowezeshwa, muda wa upakuaji wa faili ya 720 MB CSV ulipunguzwa kutoka sekunde 3.5 hadi 0.6.
  • Uwezekano wa utekelezaji sambamba wa uundaji wa index na uendeshaji wa usimamizi umetekelezwa. Kwa mfano, operesheni ya CREATE INDEX kwenye safu iliyo na rekodi milioni 16 ilipunguzwa kutoka sekunde 5.92 hadi 1.38.
  • Umewasha ulinganifu wa shughuli za ujumlishaji katika hoja zilizo na usemi "COUNT(DISTINCT col)".
  • SQL imeongeza usaidizi kwa aina ya UNION, ambayo inaruhusu aina nyingi kuunganishwa kwa kipengele kimoja (kwa mfano, "UNION(num INT, error VARCHAR))").
  • SQL hutoa uwezo wa kuunda maswali yanayoanza na neno "KUTOKA" badala ya "CHAGUA". Katika kesi hii, inachukuliwa kuwa swala huanza na "SELECT *".
  • SQL imeongeza usaidizi kwa usemi wa COLUMNS, unaokuruhusu kufanya operesheni kwenye safu wima nyingi bila kunakili usemi huo. Kwa mfano, "CHAGUA MIN(COLUMNS(*)) kutoka kwenye obs;" itasababisha kitendakazi cha MIN kutekelezwa kwa kila safu wima kwenye jedwali la obs, na "CHAGUA COLUMNS('val[0-9]+') kutoka kwa obs;" kwa safu wima zilizo na jina linalojumuisha "val" na nambari.
  • Usaidizi ulioongezwa kwa shughuli kwenye orodha, kwa mfano, "CHAGUA [x + 1 kwa x katika [1, 2, 3]] AS l;".
  • Matumizi ya kumbukumbu yameboreshwa. Kwa chaguo-msingi, jukwaa la Linux hutumia maktaba ya jemalloc kwa usimamizi wa kumbukumbu. Utendakazi ulioboreshwa kwa kiasi kikubwa wa shughuli za kuunganisha heshi wakati kumbukumbu ni chache.
  • Imeongeza modi ya kutoa ya ".mode duckbox" kwenye kiolesura cha mstari wa amri, ambayo hutupilia mbali safu wima za kati kwa kuzingatia upana wa dirisha la terminal (inafaa kwa kutathmini kwa haraka matokeo ya hoja kwa kutumia idadi kubwa ya safuwima, kama vile "CHAGUA * KUTOKA tbl”, ambayo katika hali ya kawaida huenea kwenye mistari kadhaa). Kwa kutumia kigezo cha β€œ.maxrows X”, unaweza kuongeza kikomo idadi ya safu mlalo zinazoonyeshwa.
  • CLI hutoa ukamilishaji otomatiki wa ingizo kwa kuzingatia muktadha (ingizo la maneno muhimu, majina ya jedwali, vitendaji, majina ya safu wima na majina ya faili imekamilika).
  • CLI ina kiashirio cha maendeleo ya hoja kilichowezeshwa na chaguo-msingi.

Chanzo: opennet.ru

Kuongeza maoni