DuckDB 0.6.0, varian SQLite kanggo pitakon analitis diterbitake

ДоступСн выпуск Π‘Π£Π‘Π” DuckDB 0.6.0, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅ΠΉ Ρ‚Π°ΠΊΠΈΠ΅ свойства SQLite, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ„ΠΎΡ€ΠΌΠ΅ встраиваСмой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π‘Π” Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ CLI-интСрфСйс, со срСдствами ΠΈ оптимизациями для выполнСния аналитичСских запросов, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСго содСрТимого Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ слияниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠΊΠ° находится Π½Π° стадии формирования ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… выпусков, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠΎΠΊΠ° Π½Π΅ стабилизирован ΠΈ мСняСтся ΠΎΡ‚ вСрсии ΠΊ вСрсии.

DuckDB nyedhiyakake dialek SQL canggih sing kalebu kemampuan tambahan kanggo nangani pitakon sing rumit lan mbutuhake wektu. Panggunaan jinis kompleks (larik, struktur, serikat pekerja) lan kemampuan kanggo nglakokake subkueri sing sewenang-wenang lan bersarang didhukung. Ndhukung pirang-pirang pitakon bebarengan, mbukak pitakon langsung saka file CSV lan Parquet. Sampeyan bisa ngimpor saka PostgreSQL DBMS.

Saliyane kode cangkang saka SQLite, proyek nggunakake parser saka PostgreSQL ing perpustakaan kapisah, komponen Date Math saka MonetDB, implementasine dhewe saka fungsi jendhela (adhedhasar algoritma Segment Tree Aggregation), prosesor ekspresi reguler adhedhasar perpustakaan RE2, optimizer pitakonan dhewe, lan mekanisme kontrol MVCC eksekusi tugas simultan (Multi-Version Concurrency Control), uga mesin eksekusi query vectorized adhedhasar algoritma Hyper-Pipelining Query Execution, sing ngidini set gedhe saka nilai. diproses bebarengan ing siji operasi.

Antarane owah-owahan ing rilis anyar:

  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° хранСния. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ оптимистичный Ρ€Π΅ΠΆΠΈΠΌ записи Π½Π° диск, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΈ Π² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ» с Π‘Π”, Π½Π΅ доТидаясь Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ подтвСрТдСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ COMMIT. Π’ΠΎ врСмя поступлСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ COMMIT Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ записанными Π½Π° диск, Π° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ROLLBACK β€” ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ. Π Π°Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ Π½Π° диск.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° многоядСрных систСмах. НапримСр, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ выпускС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π‘Π” с 150 ΠΌΠ»Π½ строк Π½Π° 10-ядСрном CPU Π·Π°Π½ΠΈΠΌΠ°Π»Π° 91 сСкунду, Π° Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии данная опСрация выполняСтся Π·Π° 17 сСкунд. ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ Π΄Π²Π° Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ β€” с сохранСниСм порядка слСдования записСй ΠΈ Π±Π΅Π· сохранСния порядка.
  • Для сТатия Π΄Π°Π½Π½Ρ‹Ρ… задСйствован Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ FSST (Fast Static Symbol Table), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ строк, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ‰ΠΈΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… совпадСний. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ тСстовой Π‘Π” с 761MB Π΄ΠΎ 251MB.
  • Для сТатия чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (DOUBLE ΠΈ FLOAT) ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Chimp ΠΈ Patas. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€Π°Π½Π΅Π΅ примСняСмым Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Gorillas, Chimp обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сТатия ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ распаковку. Алгоритм Patas отстаёт ΠΏΠΎ стСпСни сТатия ΠΎΡ‚ Chimp, Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС ΠΏΠΎ скорости распаковки, которая ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° отличаСтся ΠΎΡ‚ чтСния нСсТатых Π΄Π°Π½Π½Ρ‹Ρ….
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² CSV Π² нСсколько ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (SET experimental_parallel_csv=true), которая сущСствСнно сокращаСт врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… CSV-Ρ„Π°ΠΉΠ»ΠΎΠ². НапримСр, ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ CSV-Ρ„Π°ΠΉΠ»Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 720 ΠœΠ‘ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ с 3.5 Π΄ΠΎ 0.6 сСкунд.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ создания ΠΈ управлСния индСксами. НапримСр, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ CREATE INDEX для столбца с 16 ΠΌΠ»Π½ записСй ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ с 5.92 Π΄ΠΎ 1.38 сСкунд.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ распараллСливаниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ агрСгирования Π² запросах, содСрТащих Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Β«COUNT(DISTINCT col)Β».
  • Π’ SQL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΈΠΏΠ° UNION, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ привязку ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«UNION(num INT, error VARCHAR))Β»).
  • Π’ SQL прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ формирования запросов, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° слово Β«FROMΒ» вмСсто Β«SELECTΒ». Π’ этом случаС подразумСваСтся, Ρ‡Ρ‚ΠΎ запрос начинаСтся Π½Π° Β«SELECT *Β».
  • Π’ SQL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° выраТСния Β«COLUMNSΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ нСсколькими столбцами Π±Π΅Π· дублирования выраТСния. НапримСр, Β«SELECT MIN(COLUMNS(*)) from obs;Β» ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MIN для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ obs, Π° Β«SELECT COLUMNS(β€˜val[0-9]+’) from obs;Β» для столбцов с ΠΈΠΌΠ΅Π½Π΅ΠΌ, состоящим ΠΈΠ· Β«valΒ» ΠΈ Ρ†ΠΈΡ„Ρ€.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ списками, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«SELECT [x + 1 for x in [1, 2, 3]] AS l;Β».
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация потрСблСния памяти. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Linux для управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ задСйствована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° jemalloc. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ объСдинСния Ρ…ΡΡˆΠ΅ΠΉ ΠΏΡ€ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ памяти.
  • Π’ интСрфСйсС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° Β«.mode duckboxΒ», ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ срСдниС столбцы c ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΎΠΊΠ½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для быстрой наглядной ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов с большим числом столбцов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Β«SELECT * FROM tblΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·ΡŠΠ΅Π·ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° нСсколько строк). ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Β«.maxrows XΒ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈ число Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… строк.
  • Π’ CLI обСспСчСно Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ контСкста (дополняСтся Π²Π²ΠΎΠ΄ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΈΠΌΡ‘Π½ Ρ‚Π°Π±Π»ΠΈΡ†, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΡ‘Π½ столбцов ΠΈ ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²).
  • Π’ CLI Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прогрСсса выполнСния запроса.

Source: opennet.ru

Add a comment