DuckDB 0.6.0 DBMS ááẠSQLite á áá»á áºáá áºááááºáááºážááŸá¯áá²á·ááá¯á· áá¯ááºááá¹áááá»á¬ážá ááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ á á¬ááŒáá·áºááá¯ááºáá¯á¶á á¶ááŒáá·áº áá»áááºáááºááá¯ááºááŸá¯á ááá¯ááºáá áºáá¯áááºážááœáẠáá±áá¬áá±á·á áºááᯠááááºážáááºážááŒááºážááŸáá·áº á¡áááºááŒá±áá±á¬ CLI áá»ááºááŸá¬ááŒááºááᯠáá±á«ááºážá ááºááŒá®áž áááŸáááá¯ááºááŒá®ááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áº ááááºážáááºážáá¬ážáá±á¬ áá±áá¬á á¡áá±ážáá«áá±á¬ á¡á áááºá¡ááá¯ááºážááᯠáá¯á¶ážá¡á¯ááºáá¬ážáá±á¬ ááœá²ááŒááºážá áááºááŒá¬áá±á¬ á á¯á¶á ááºážáá±ážááŒááºážááŸá¯áá»á¬ážá á¥ááᬠááá¬ážáá»á¬ážá á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯áá¯á¶ážááᯠáá±á«ááºážá ááºážááŒááºáž ááá¯á·ááá¯áẠááŒá®ážáá¬ážáá±á¬ ááá¬ážáá»á¬ážá áœá¬ááᯠáá±á«ááºážá ááºážááŒááºážá ááá±á¬áá»ááºáá¯ááºááᯠMIT ááá¯ááºá ááºá¡á±á¬ááºááœáẠááŒáá·áºáá±áá¬ážáááºá ááá¯ááŸá±á¬ááºááŸá¯áá±á¬áºáááºááᯠááááºááŒáááºáá±ážáá² áá¬ážááŸááºážá០áá¬ážááŸááºážááá¯á· ááŒá±á¬ááºážáá²ááŒááºážááŒá±á¬áá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááẠá ááºážáááºáá¯ááºáá±ááŸá¯áá»á¬áž ááŒá¯áá¯ááºááá·áºá¡ááá·áºááœáẠááŸááá±áá²ááŒá áºáááºá
DuckDB ááẠá¡ááœááºááŸá¯ááºááœá±ážááŒá®áž á¡áá»áááºáá¯ááºáá±á¬ áá±ážááœááºážáá»á¬ážááᯠááá¯ááºááœááºáááºá¡ááœáẠáááºáá±á¬ááºážá áœááºážáááºáá»á¬ážáá«áááºááá·áº á¡ááá·áºááŒáá·áº SQL áá±ááááá¬áá¬á áá¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá ááŸá¯ááºááœá±ážáá±á¬á¡áá»áá¯ážá¡á á¬ážáá»á¬áž (á¡áááºážá¡áá»ááºážáá»á¬ážá ááœá²á·á ááºážáá¯á¶áá»á¬ážá áááá¹ááá»á¬áž) ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŸáá·áº áááºá ááºáá±áá±á¬ áááºá ááºáá±ážááœááºážááœá²áá»á¬ážááᯠáááá¬ážááŸáá·áº nested áá¯ááºááá¯ááºá áœááºážááᯠáá¶á·ááá¯ážáá±ážáá¬ážáááºá áááºážááẠCSV ááŸáá·áº Parquet ááá¯ááºáá»á¬ážá០ááá¯ááºááá¯ááºáá±ážááŒááºážáá»ááºáá»á¬ážá áœá¬ááᯠáá áºááŒáá¯ááºáááºáá¯ááºáá±á¬ááºááŒááºážááᯠáá¶á·ááá¯ážáá±ážáááºá PostgreSQL DBMS ááŸáááºááœááºážáááºááŒá áºááá¯ááºáááºá
SQLite á០shell code á¡ááŒááºá ááá±á¬áá»ááºááẠáá®ážááŒá¬ážá á¬ááŒáá·áºááá¯ááºáá áºáá¯ááŸá PostgreSQL á០parser áá áºáá¯á MonetDB á០Date Math á¡á áááºá¡ááá¯ááºážá áááºážáááá¯ááºááá¯áẠwindow functions (Segment Tree Aggregation algorithm ááá¯á¡ááŒá±áá¶á) ááá¯á¡ááŒá±áá¶ááá·áº áá¯á¶ááŸáẠexpression processor ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá RE2 á á¬ááŒáá·áºááá¯ááºá áááºážáááá¯ááºááá¯áẠquery optimizer ááŸáá·áº MVCC ááááºážáá»á¯ááºááŸá¯ááá¹ááá¬áž (Multi-Version Concurrency Control) ááŸáá·áº áá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááᯠáááŒáá¯ááºáááºáááºáž áá¯ááºáá±á¬ááºááŒááºážá¡ááŒáẠHyper-Pipelining Query Execution algorithm ááá¯á¡ááŒá±áá¶á áááºááá¯ážá¡á á¯á¶á¡áááºááᯠá¡ááŒá±áá¶áá¬ážáá±á¬ vectorized query execution engine á áááºáááºááŸá¯áá áºáá¯ááœáẠáá áºááŒáááºáááºáž áá¯ááºáá±á¬ááºáááºá
á¡áá áºááœááºááŸááá¬ážáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážáá²ááœááº-
- ááá¯ááŸá±á¬ááºááŸá¯áá¯á¶á á¶ááᯠááŒáŸáá·áºáááºááẠáááºáááºáá¯ááºáá±á¬ááºáááºá á¡ááŒá¯ááá±á¬áá±á¬ááºáá±á¬ áá áºááºá á¬áá±ážáá¯ááºááᯠá¡áá±á¬ááºá¡ááẠáá±á¬áºáá¬ážááŒá®ážá ááœá±áá±ážááœá±áá°áá áºáá¯ááœáẠáá±áá¬á¡á á¯á¡áá±ážááŒá®ážááᯠáááºááá·áºá¡áá«á áá±áá¬áá»á¬ážááᯠCOMMIT á¡áááá·áºááŒáá·áº á¡áááºááŒá¯ááẠáá á±á¬áá·áºááá¯ááºážáá² áá±áá¬áá±á·á áºá០ááá¯ááºáá áºáá¯ááá¯á· áá»á¯á¶á·ááŒá®áž ááá¯ááºáá áºáá¯ááá¯á· áá»á¯á¶á·ááŒá®áž á á¬áá±ážááá¯ááºáá«áááºá . COMMIT á¡áááá·áºááᯠáááºáá¶áááŸááá±á¬á¡áá«á áá±áá¬ááᯠáá áºááºááœáẠáá±ážáá¬ážáá¬ážááŒá®ážá ROLLBACK ááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá«á áááºážááᯠá áœáá·áºáá áºáááºááŒá áºáááºá ááááºáá áá±áá¬ááᯠá¡á ááá¯ááºážááœáẠáááºááá¯áá®ááœáẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž ááááºážáááºážáá²á·ááŒá®áž áá»á°ážááœááºáá±á¬á¡áá«ááœáẠáááºážááᯠáá áºááºááœáẠááááºážáááºážáá²á·áááºá
- Multi-core á áá áºáá»á¬ážááœáẠáá±áá¬ááᯠáá®ážááŒá¬ážááá¬ážáá»á¬ážáá²ááá¯á· á¡ááŒáá¯ááºáááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºááœááºážáá¬ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááááºáá¯ááºááœáŸááºááŸá¯ááœáẠ150-core CPU ááœáẠá¡áááºážáá±á«ááºáž áááºáž 10 áá«áá±á¬ áá±áá¬áá±á·á áºááᯠáááºáá¬ááœáẠ91 á áá¹ááá·áºááŒá¬áá±á¬áºáááºáž áá¬ážááŸááºážá¡áá áºááœáẠá€áá¯ááºáá±á¬ááºáá»ááºááẠ17 á áá¹ááá·áºá¡ááœááºáž ááŒá®ážáá¯á¶ážáá«áááºá á¡ááŒáá¯ááºáááºááŒááºážáá¯ááºááŸá áºáá¯ááŸáááẠ- ááŸááºáááºážáá»á¬ážáá¡á á®á¡á á¥áºááá¯ááááºážááááºážááŒááºážááŸáá·áºá¡áááá·áºááá¯ááááºážááááºážááŒááºážáááŸááá²á
- áá±áá¬áá»á¯á¶á·ááŒááºážá¡ááœááºá FSST (Fast Static Symbol Table) á¡ááºáááá¯áá®áááºááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž áá¯á¶ááŸááºááá¯ááºáá®ááŸá¯ááŸááá±á¬ á¡áááá¬ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á á¬ááŒá±á¬ááºážáá»á¬ážá¡ááœááºážáá±áá¬áá»á¬ážááᯠáá¯ááºááá¯ážááá¯ááºá á±áá«áááºá á¡ááºáááá¯áá®áááºá¡áá áºááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº á ááºážáááºáá±áá¬áá±á·á áºáá¡ááœááºá¡á á¬ážááᯠ761MB á០251MB ááá¯á· áá»áŸá±á¬á·áá»ááá¯ááºá á±áá²á·áááºá
- Chimp ááŸáá·áº Patas algorithms ááẠFloating Point áá¶áá«ááºáá»á¬áž (DOUBLE ááŸáá·áº FLOAT) ááᯠáá»á¯á¶á·ááẠá¡ááá¯ááŒá¯áá¬ážáááºá áááẠGorillas algorithm ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á Chimp ááẠááá¯ááá¯ááŒáá·áºáá¬ážáá±á¬ compression ááŸáá·áº decompression ááá¯ááá¯ááá¯ááŒááºáááºá á±áááºá Patas algorithm ááẠcompression ratio ááœáẠChimp ááá±á¬ááºááœáẠáá±á¬ááºáá»áá±áá±á¬áºáááºážá áá»á¯á¶á·ááá¬ážáá±á¬ data áá»á¬ážááá¯áááºááŒááºážááŸáá·áºááá°ááá±á¬ááºááŒá áºááá·áº decompression speed ááœááºááá¯ááá¯ááŒááºáááºáá«áááºá
- CSV ááá¯ááºáá»á¬ážá០áá±áá¬áá»á¬ážááᯠá¡ááŒáá¯ááºá á®ážááŒá±á¬ááºážáá»á¬ážá áœá¬ (SET experimental_parallel_csv=true) ááá¯á· CSV ááá¯ááºááŒá®ážáá»á¬ážáááºááẠááá¯á¡ááºááá·áºá¡áá»áááºááᯠáááá¬á áœá¬ áá»áŸá±á¬á·áá»ááá¯ááºááá·áº á ááºážáááºá áœááºážáááºááᯠáá±á«ááºážááá·áºáá¬ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá á€ááœá±ážáá»ááºááŸá¯ááᯠááœáá·áºáá¬ážáá±á¬á¡áá«á 720 MB CSV ááá¯ááºá¡ááœáẠáá±á«ááºážáá¯ááºá¡áá»áááºááᯠ3.5 á០0.6 á áá¹ááá·áºááá¯á· áá»áŸá±á¬á·áá»áá²á·áááºá
- á¡ááœáŸááºážáááºáá®ážááŸá¯ááŸáá·áº á á®áá¶ááá·áºááœá²ááŸá¯ááá¯ááºáᬠáá¯ááºáááºážáá»á¬áž á¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááá¯ááºááŒá±ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®ážááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááŸááºáááºážáá±á«ááºáž 16 áááºážááŸááá±á¬ áá±á¬áºáá¶áá áºáá¯áá±á«áºááœáẠCREATE INDEX áá¯ááºáá±á¬ááºáá»ááºááᯠ5.92 á០1.38 á áá¹ááá·áºááá¯á· áá»áŸá±á¬á·áá»áá²á·áááºá
- âCOUNT(DISTINCT col)â áá°áá±á¬ á áá¬ážáááºáá«ááŸááá±á¬ áá±ážááŒááºážáá»ááºáá»á¬ážááœáẠáá±á«ááºážá ááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááŸá¯ááᯠááœáá·áºáá¬ážáááºá
- SQL ááẠá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá áœá¬ááᯠááŒááºá ááºáá áºáá¯ááá¯á· áá»ááºááŸá±á¬ááºááá¯ááºá á±ááá·áº UNION á¡áá»áá¯ážá¡á á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážáá±ážááẠ(á¥ááá¬á "UNION(num INTá á¡ááŸá¬áž VARCHAR))")á
- SQL ááẠ"SELECT" á¡á á¬áž "FROM" ááŒáá·áº á¡á ááŒá¯áá±á¬ áá±ážááœááºážáá»á¬áž ááœá²á·á ááºážááá¯ááºá á±áá«áááºá á€ááá á¹á ááœááºá áá±ážááœááºážááẠ"SELECT *" ááŒáá·áº á áááºáááºáᯠáá°ááá«áááºá
- SQL ááẠá áá¬ážáááºááᯠááœá¬ážá áá¬áááá¯áá² áá±á¬áºáá¶á¡áá»á¬ážá¡ááŒá¬ážááœáẠáá¯ááºáá±á¬ááºáá»ááºáá áºáᯠáá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº COLUMNS á áá¬ážáááºá¡ááœáẠá¡áá±á¬ááºá¡áá¶á·ááᯠáá±á«ááºážááá·áºáá¬ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá obs á០âSELECT MIN(COLUMNS(*))) obs ááá¬ážááŸá áá±á¬áºáá¶áá áºáá¯á á®á¡ááœáẠMIN áá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºá á±áááºááŒá áºááŒá®áž "SELECT COLUMNS('val[0-9]+') á០obs;" "val" ááŸáá·áº áá¶áá«ááºáá»á¬ážáá«ááŸááá±á¬ á¡áááºáá áºáá¯ááŸááá±á¬ áá±á¬áºáá¶áá»á¬ážá¡ááœááºá
- á á¬áááºážáá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºáá¬ážáááºá á¥ááá¬á âSELECT [x + 1 for x [1á 2á 3]] AS l;âá
- ááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáá«áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá Linux ááááºáá±á¬ááºážááẠááŸááºáá¬ááºá á®áá¶ááá·áºááœá²ááŸá¯á¡ááœáẠjemalloc á á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áááºá áááºááá¯áá®ááᯠááá·áºáááºáá¬ážááá·áºá¡áá« hash áá±á«ááºážá ááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá á áœááºážáá±á¬ááºáááºááᯠáááá¬á áœá¬ ááŒáŸáá·áºáááºáá¬ážáááºá
- ".mode duckbox" á¡ááœááºáá¯ááºááᯠááá·áºááœááºážááŒá®áž á¡áááºáá±á¬áºáá¶áá»á¬ážááᯠáá¬áá®áááºáááºážááá¯ážá á¡áá»ááºááᯠááá·áºááœááºážá ááºážá á¬ážááŒááºáž (âSELECT * áá²á·ááá¯á·áá±á¬ áá±á¬áºáá¶á¡áá»á¬ážá¡ááŒá¬ážááŒáá·áº á á¯á¶á ááºážááŸá¯áá»á¬ážáááááºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬ á¡ááŒááºá¡á¬áá¯á¶ááŒáá·áº á¡áá²ááŒááºáááºá¡ááœáẠááá·áºáá»á±á¬áºáááºá tbl ááŸá áá¯á¶ááŸááºáá¯ááºááœáẠááá¯ááºážáá»á¬ážá áœá¬áá±á«áºááœáẠáá»á¶á·ááŸá¶á·áá±áááº)á â.maxrows Xâ áá«áá¬áá®áá¬ááᯠá¡áá¯á¶ážááŒá¯á ááŒááá¬ážáá±á¬ á¡áááºážá¡áá±á¡ááœááºááᯠáááºáá¶ááá·áºáááºááá¯ááºáááºá
- CLI ááẠá¡ááŒá±á¬ááºážá¡áá¬ááᯠááá·áºááœááºážá ááºážá á¬ážááŒá®áž á¡ááá¯á¡áá»á±á¬ááºááŒáá·áºááœááºážááŸá¯ááᯠáá¶á·ááá¯ážáá±ážááẠ(áá±á¬á·áá»ááºá á¬áá¯á¶ážáá»á¬ážá ááá¬ážá¡áááºáá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áá±á¬áºáá¶á¡áááºáá»á¬ážááŸáá·áº ááá¯ááºá¡áááºáá»á¬áž ááŒá®ážááŒá±á¬ááºáááº)á
- CLI ááœáẠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº ááœáá·áºáá¬ážááá·áº áá±ážááœááºážááá¯ážáááºááŸá¯ á¡ááœáŸááºážáá áºáᯠááŸááááºá
source: opennet.ru