Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π²Π΅ΡΡΠΈΡ 1.0 Π½Π° Π‘Π£ΠΠ DuckDB, ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° SQLite Π·Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. DuckDB ΡΡΡΠ΅ΡΠ°Π²Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° SQLite, ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ CLI ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°ΡΡ ΠΎΡ ΡΡ Ρ ΡΠ°Π½ΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ² ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++ ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ MIT Π»ΠΈΡΠ΅Π½Π·.
ΠΠ΅ΡΡΠΈΡ 1.0 Π΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½Π° ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΈ ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ Π΅ Π±ΠΈΠ»ΠΎ ΠΎΠ±ΡΡΠ½Π°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ°, Π° Π½Π΅ Π½Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π·Π°ΠΊΡΠ΅ΠΏΠ΅Π½Π° ΡΠΈΠΊΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΠΎΡ ΠΌΠΈΠ½Π°Π»ΠΈΡ ΡΠ΅Π»ΠΈΠ· ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ Π΄Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΠΎ-Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΠΊΡΠΌ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π΄Π° ΡΠ΅ Π³ΡΠΈΠΆΠ°Ρ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΠΈΡΠ΅, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Ρ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° Π½Π° SQL ΠΈ C API. ΠΠΊΠΎ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π² ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°ΡΠ° Π½Π° SQL, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ ΠΊΠΎΠ΄.
DuckDB ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ Π΄ΠΈΠ°Π»Π΅ΠΊΡ Π½Π° SQL, Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (ΠΌΠ°ΡΠΈΠ²ΠΈ, ΡΡΡΡΠΊΡΡΡΠΈ, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΊΠΎΡΠ΅Π»ΠΈΡΠ°ΡΠΈ ΠΏΠΎΠ΄Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΡΠ²ΠΊΠΈ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ CSV ΠΈ Parquet. ΠΠ°Π»ΠΈΡΠ΅ Π΅ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π²Π½ΠΎΡ ΠΎΡ Π‘Π£ΠΠ PostgreSQL.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π½Π° SQLite, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ΄Π΅Π»Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΎΡ PostgreSQL, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Date Math ΠΎΡ MonetDB, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Segment Tree Aggregation), ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RE2, ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ MVCC Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ (Multi-Version Concurrency Control), ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Hyper-Pipelining Query Execution, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π² Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
