ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ Π²ΡΠΏΡΡΠΊΡΡ Π½Π° Π‘Π£ΠΠ DuckDB 0.10.0, ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° SQLite ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΊΠ°ΡΠΎ Π²Π³ΡΠ°Π΄Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ CLI ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°ΡΡ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π½Π° ΡΡΠ»ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· MIT. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π² Π΅ΡΠ°ΠΏ Π½Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΡΠΌΠ°ΡΡΡ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΎΡ Π²Π΅ΡΡΠΈΡ Π½Π° Π²Π΅ΡΡΠΈΡ.
DuckDB ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ Π΄ΠΈΠ°Π»Π΅ΠΊΡ Π½Π° SQL, Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (ΠΌΠ°ΡΠΈΠ²ΠΈ, ΡΡΡΡΠΊΡΡΡΠΈ, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ) ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΊΠΎΡΠ΅Π»ΠΈΡΠ°ΡΠΈ ΠΏΠΎΠ΄Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° simultΠ°Π½Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² CSV ΠΈ Parquet ΡΠΎΡΠΌΠ°Ρ. ΠΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠΌΠΏΠΎΡΡ ΠΎΡ Π‘Π£ΠΠ PostgreSQL.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π½Π° SQLite, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ΄Π΅Π»Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΎΡ PostgreSQL, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Date Math ΠΎΡ MonetDB, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Segment Tree Aggregation), ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RE2, ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ MVCC Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ (Multi-Version Concurrency Control), ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Hyper-Pipelining Query Execution, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π² Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² CSV ΡΠΎΡΠΌΠ°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° CSV ΡΠ°ΠΉΠ» Ρ 11 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ ΠΎΡ 2.6 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° 1.15 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° βSELECT COUNT(*)β Π²ΡΡΡ Ρ CSV ΡΠ°ΠΉΠ»Π° Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½Π° ΠΎΡ 1.8 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° 0.3 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π°Ρ ΡΠΏΠΈΡΡΡΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΡΠΈΠΊΡΠΈΡΠ°Π½ Π±ΡΠΎΠΉ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, βCREATE TABLE vectors(v DOUBLE[3]);β).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ Π‘Π£ΠΠ MySQL, PostgreSQL ΠΈ SQLite, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² DuckDB ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈ Π‘Π£ΠΠ ΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠΎΡΡΡΠΏΡΡ Π΄ΠΎ Π²ΡΠ½ΡΠ½ΠΈ ΠΠ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ATTACH βpostgres:dbname=postgresscannerβ AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ·ΡΠ°Π·Π° βCOMMENT ONβ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ Π·Π° ΠΎΠ±Π΅ΠΊΡ Π² ΠΠ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ·ΡΠ°Π·Π° βCOPY FROM DATABASEβ Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΠΎΡ Π΅Π΄Π½Π° ΠΠ Π² Π΄ΡΡΠ³Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° βALLβ Π² ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ EXCEPT ΠΈ INTERSECT.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΠΈΠΏ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
