ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π»ΠΈΠ· Π½Π° Π‘Π£ΠΠ DuckDB 1.2.0, Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΡΡΠ° Π½Π° SQLite. DuckDB ΡΡΡΠ΅ΡΠ°Π²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° SQLite, ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈ CLI ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Ρ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°ΡΡ ΠΎΡ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++ ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· MIT.
DuckDB ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ Π΄ΠΈΠ°Π»Π΅ΠΊΡ Π½Π° SQL, Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (ΠΌΠ°ΡΠΈΠ²ΠΈ, ΡΡΡΡΠΊΡΡΡΠΈ, ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ), Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΊΠΎΡΠ΅Π»ΠΈΡΠ°ΡΠΈ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΡΠ²ΠΊΠΈ, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠΈ CSV ΠΈ Parquet. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠΌΠΏΠΎΡΡ ΠΎΡ Π‘Π£ΠΠ PostgreSQL.
ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΎΡ SQLite, ΠΏΠ°ΡΡΠ΅Ρ ΠΎΡ PostgreSQL, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π΄Π°ΡΠΈ ΠΎΡ MonetDB, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π° Π±Π°Π·Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Segment Tree Aggregation), ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RE2, ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ MVCC Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ (Multi-Version Concurrency Control), ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π½Π° Π±Π°Π·Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Hyper-Pipelining Query Execution, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π² Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ²ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° DuckDB. ΠΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Ρ Π½ΠΎΠΌΠ΅Ρ Π½Π° Π²Π΅ΡΡΠΈΡ β ΠΏΡΠΈ ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° βSTORAGE_VERSIONβ Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: βATTACH βfile.dbβ (STORAGE_VERSION βv1.2.0β);β). ΠΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π² ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° SQL ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° COPY, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: ATTACH βfile1.dbβ; ATTACH βconverted_file.dbβ (STORAGE_VERSION βv1.0.0β); COPY FROM DATABASE file1 TO converted_file;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° SQL ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βALTER TABLE β¦ ADD PRIMARY KEYβ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠ»ΡΡ ΠΊΡΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°.
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ, ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎΡΡ, Π°ΠΊΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ ΡΠ° Π±ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠΈΡΠΈ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½ΠΈΡΡ SQL ΠΊΠΎΠ΄ Π²Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π³ΡΠ΅ΡΠΊΠ°: CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR); INSERT INTO students VALUES (1, βJohn Doeβ); BEGIN; DELETE FROM students WHERE id = 1; INSERT INTO students VALUES (1, βJane Doeβ);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° CSV ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Latin-1 ΠΈ UTF-16 (ΠΏΠΎ-ΡΠ°Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° UTF-8). FROM read_csv(βcities-latin-1.csvβ, encoding = βlatin-1β);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π² CSV ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (Π΄ΠΎ 4 Π±Π°ΠΉΡΠ°), ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° emoji ΠΊΠ°ΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π» Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅. aπ¦b helloπ¦world FROM read_csv(βexample.dsvβ, sep = βπ¦β);
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΡΡΡΠΎΠ³ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° CSV ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ("strict_mode = true"), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° RFC 4180. Π ΡΡΡΠΎΠ³ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΡΠ°ΠΌΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΎΠΏΠΈΡ Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π² ΠΊΠΎΠΈΡΠΎ Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° Π½ΠΎΠ² ΡΠ΅Π΄, Π° ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΠΊΠ°ΡΠ° ("\r\n").
- Π ΠΏΠ°ΡΡΠ΅ΡΠ° Π·Π° CSV Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π½ΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π½ΠΎΠ² ΡΠ΅Π΄, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ ΡΡΠΊΠΎΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π½Π° CSV Ρ ΠΎΠΊΠΎΠ»ΠΎ 15%.
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΠ΅Π΄Π° Π² CSV ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ (ΠΏΠΎ-ΡΠ°Π½ΠΎ ΡΠ΅Π΄ΡΡ Π½Π΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° 8 ΠΠ).
- ΠΡΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ Parquet Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Ρ Π΅ΡΠΎΠ²Π΅ (Π΄ΡΠΌΠΈ) ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Bloom. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ DELTA_BINARY_PACKED, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° Parquet ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅.
- Π ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ, Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρ ΠΎΠΏΡΠΈΡΡΠ° "-safe" ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ".safe_mode". Π ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏ ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ ΡΠ°ΠΉΠ» Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π° ΠΎΠΏΠΈΡΠΈΡΠ΅ Π·Π° ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ°.
- Π ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π²Ρ ΠΎΠ΄Π°. ΠΠΎΠ΄ΡΡ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° PEG (Parsing Expression Grammar).
- ΠΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΈΡΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΠ»ΠΎΡΠΎ 100000000, ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ "(100 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°)".
- Π SQL Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ ΠΊΡΠ°ΡΠΊΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΊΠ°Π·Π°Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠΎΡΠ°Ρ (Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ "ΠΈΠ·ΡΠ°Π· AS ΠΈΠΌΠ΅"): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "SELECT" Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° "RENAME" Π·Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½ΠΈ ΠΏΡΠΈ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠ°Π·Π° "*": SELECT * RENAME (col1 AS new_col1) FROM integers;
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "SELECT" Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ "LIKE" ΠΈ "SIMILAR TO" ΠΏΡΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ ΡΡΠ΅Π· "*": SELECT * LIKE βval%β FROM key_val;
- ΠΠΎΠ²ΠΈΡΠ΅Π½ΠΎ Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠΈΡΠ»Π°.
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ΅ΡΡΠ° TPC-H SF100 Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° Ρ 13%.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ² Π‘ΠΈ-ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ API Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΈ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Musl.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
