DuckDB 0.6.0 Published, SQLite Option for Analytical Queries

Loaʻa ka hoʻokuʻu ʻana o ka DuckDB 0.6.0 DBMS, e hui pū ana i kēlā mau waiwai o SQLite e like me ka compactness, ka hiki ke hoʻohui i ke ʻano o kahi waihona i hoʻopili ʻia, mālama i ka waihona i hoʻokahi faila a me kahi interface CLI kūpono, me nā mea hana a me nā optimizations no ka hoʻokō. nā nīnau noiʻi e uhi ana i kahi hapa nui o ka ʻikepili i mālama ʻia, no ka laʻana e hōʻuluʻulu i nā ʻike holoʻokoʻa o nā papa a i ʻole e hoʻohui i kekahi mau papa nui. Hāʻawi ʻia ke code papahana ma lalo o ka laikini MIT. Aia ka hoʻomohala ʻana ma ke kahua o ka hoʻokumu ʻana i nā hoʻokuʻu hoʻokolohua, ʻoiai ʻaʻole i hoʻopaʻa ʻia ka ʻano waihona a hoʻololi ʻia mai kahi mana i kahi mana.

Hāʻawi ʻo DuckDB i kahi dialect SQL kiʻekiʻe e loaʻa ana nā mana hou no ka lawelawe ʻana i nā nīnau paʻakikī a hoʻopau manawa. Kākoʻo ʻia ka hoʻohana ʻana i nā ʻano paʻakikī (nā pūʻulu, nā hale, nā uniona) a me ka hiki ke hoʻokō i nā subqueries arbitrary a me nested correlated subqueries. Kākoʻo ia i ka holo ʻana i nā nīnau he nui i ka manawa like, e holo pololei ana i nā nīnau mai nā faila CSV a me Parquet. Hiki ke hoʻokomo mai ka PostgreSQL DBMS.

Ma waho aʻe o ka code shell mai SQLite, hoʻohana ka papahana i kahi parser mai PostgreSQL i kahi waihona ʻokoʻa, ʻo ka Date Math component mai MonetDB, kāna hoʻokō ponoʻī i nā hana pukaaniani (e pili ana i ka Segment Tree Aggregation algorithm), kahi kaʻina hana maʻamau e pili ana i ka. ʻO ka waihona RE2, kāna mea hoʻoponopono hulina ponoʻī, a me kahi mīkini hoʻomalu MVCC e hoʻokō like i nā hana (Multi-Version Concurrency Control), a me kahi mīkini hoʻokō query vectorized e pili ana i ka Hyper-Pipelining Query Execution algorithm, e hiki ai i nā pūʻulu waiwai nui. e hana ʻia i ka manawa hoʻokahi i hoʻokahi hana.

Ma waena o nā loli i ka hoʻokuʻu hou:

  • Ua hoʻomau ka hana e hoʻomaikaʻi i ke ʻano waihona. Ua hoʻokō ʻia kahi ʻano kākau disk optimistic, kahi i ka wā e hoʻouka ai i kahi pūʻulu nui o ka ʻikepili i hoʻokahi kālepa, hoʻopaʻa ʻia ka ʻikepili a kākau ʻia i kahi faila mai ka waihona i ka mode streaming, me ke kali ʻole i ka hoʻopaʻa ʻia ʻana me ke kauoha COMMIT. . Ke loaʻa kahi kauoha COMMIT, ua kākau mua ʻia ka ʻikepili i ka disk, a i ka wā e hoʻokō ʻia ai kahi ROLLBACK, hoʻolei ʻia. Ma mua, ua mālama mua ʻia ka ʻikepili i ka hoʻomanaʻo, a i ka wā i hana ai, ua mālama ʻia i ka disk.
  • Hoʻohui kākoʻo no ka hoʻouka like ʻana o ka ʻikepili i nā papa ʻokoʻa, e hiki ai iā ʻoe ke hoʻonui nui i ka wikiwiki o ka hoʻouka ʻana ma nā ʻōnaehana multi-core. No ka laʻana, i ka hoʻokuʻu mua ʻana, hoʻouka i kahi waihona me 150 miliona mau lālani ma kahi 10-core CPU i 91 kekona, akā i ka mana hou ua pau kēia hana i 17 kekona. ʻElua mau ʻano hoʻouka like - me ka mālama ʻana i ke kauoha o nā moʻolelo a me ka mālama ʻole ʻana i ke kauoha.
  • No ka hoʻopili ʻana i ka ʻikepili, hoʻohana ʻia ka algorithm FSST (Fast Static Symbol Table), kahi e hiki ai iā ʻoe ke hoʻopaʻa i ka ʻikepili i loko o nā kaula me ka hoʻohana ʻana i kahi puke wehewehe ʻōlelo maʻamau o nā pāʻani maʻamau. ʻO ka hoʻohana ʻana i ka algorithm hou i hiki ke hōʻemi i ka nui o ka waihona hōʻike hōʻike mai 761MB a i 251MB.
  • Ua manaʻo ʻia ʻo Chimp a me Patas algorithms e hoʻopaʻa i nā helu helu lana (DOUBLE a me FLOAT). Hoʻohālikelike ʻia i ka algorithm Gorillas ma mua, hāʻawi ʻo Chimp i nā pae kiʻekiʻe o ka hoʻopiʻi a me ka decompression wikiwiki. Aia ka algorithm Patas ma hope o Chimp i ka lakene hoʻopaʻa, akā ʻoi aku ka wikiwiki o ka decompression wikiwiki, ʻaʻohe mea ʻokoʻa i ka heluhelu ʻana i ka ʻikepili i hoʻopaʻa ʻole ʻia.
  • Hoʻohui i kahi hiki hoʻokolohua e hoʻouka i ka ʻikepili mai nā faila CSV i nā kahawai like ʻole (SET experimental_parallel_csv=ʻoiaʻiʻo), e hōʻemi nui ana i ka manawa e hoʻouka ai i nā faila CSV nui. No ka laʻana, i ka hiki ʻana o kēia koho, ua hoʻemi ʻia ka manawa hoʻoiho no kahi faila 720 MB CSV mai 3.5 a i 0.6 kekona.
  • Ua hoʻokō ʻia ka hiki ke hoʻokō like o ka hana ʻana i ka index a me nā hana hoʻokele. No ka laʻana, ua hoʻemi ʻia ka hana CREATE INDEX ma kahi kolamu me 16 miliona mau moʻolelo mai 5.92 a i 1.38 kekona.
  • Hoʻohana ʻia ka hoʻohālikelike ʻana o nā hana hōʻuluʻulu i nā nīnau i loaʻa ka huaʻōlelo “COUNT(DISTINCT col)”.
  • Ua hoʻohui ʻo SQL i ke kākoʻo no ke ʻano UNION, kahi e hiki ai i nā ʻano he nui ke hoʻopaʻa ʻia i hoʻokahi mea (no ka laʻana, "UNION(num INT, error VARCHAR))").
  • Hāʻawi ʻo SQL i ka hiki ke hana i nā nīnau e hoʻomaka me ka huaʻōlelo "FROM" ma kahi o "SELECT". I kēia hihia, ua manaʻo ʻia e hoʻomaka ka nīnau me "SELECT *".
  • Ua hoʻohui ʻo SQL i ke kākoʻo no ka ʻōlelo COLUMNS, kahi e hiki ai iā ʻoe ke hana i kahi hana ma nā kolamu he nui me ka ʻole o ke kope ʻana i ka ʻōlelo. No ka laʻana, "koho i ka MIN(COLUMNS(*)) mai obs;" e hoʻokō i ka hana MIN no kēlā me kēia kolamu i ka papa obs, a me "SELECT COLUMNS('val[0-9]+') from obs;" no nā kolamu me ka inoa me "val" a me nā helu.
  • Hoʻohui i ke kākoʻo no nā hana ma nā papa inoa, no ka laʻana, "koho [x + 1 no x i [1, 2, 3]] AS l;".
  • Ua hoʻonui ʻia ka hoʻohana ʻana i ka hoʻomanaʻo. Ma ka maʻamau, hoʻohana ka Linux platform i ka waihona jemalloc no ka hoʻokele hoʻomanaʻo. Hoʻomaikaʻi nui ʻia ka hana o nā hana hoʻohui hash ke kaupalena ʻia ka hoʻomanaʻo.
  • Hoʻohui ʻia ke ʻano hoʻopuka ".mode duckbox" i ke kikowaena laina kauoha, ka mea e hoʻolei i nā kolamu waena me ka noʻonoʻo ʻana i ka laulā o ka puka aniani (kūpono no ka nānā ʻana i nā hopena o nā nīnau me ka nui o nā kolamu, e like me "SELECT * FROM tbl", i hohola ʻia ma ke ʻano maʻamau ma luna o kekahi mau laina). Ke hoʻohana nei i ka ".maxrows X", hiki iā ʻoe ke kaupalena i ka helu o nā lālani i hōʻike ʻia.
  • Hāʻawi ka CLI i ka autocompletion o ka hoʻokomo ʻana me ka noʻonoʻo ʻana i ka pōʻaiapili (ka hoʻokomo ʻana o nā huaʻōlelo, nā inoa papa, nā hana, nā inoa kolamu a me nā inoa faila ua pau).
  • Loaʻa i ka CLI kahi hōʻailona holomua hulina i hoʻohana ʻia e ka paʻamau.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka