เบเบฒเบ™เบ›เปˆเบญเบ DuckDB 0.10.0, เบ•เบปเบงเปเบ› SQLite เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ

เบเบฒเบ™เบ›เปˆเบญเบ DuckDB 0.10.0 DBMS เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต, เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ‚เบญเบ‡ SQLite เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบซเบ™เบฒเปเบซเบ™เป‰เบ™, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบเบฑเบ‡เบ•เบปเบง, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป„เบŸเบฅเปŒเบ”เบฝเบงเปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš CLI เบ—เบตเปˆเบชเบฐเบ”เบงเบ, เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ„เปเบฒเบ–เบฒเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบงเบกเป€เบญเบปเบฒเบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป€เบ™เบทเป‰เบญเปƒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบผเบทเบฅเบงเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT. เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ›เปˆเบญเบเบ—เบปเบ”เบฅเบญเบ‡, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฒเบเบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒ.

DuckDB เบชเบฐเบซเบ™เบญเบ‡เบžเบฒเบชเบฒเบ‚เบฑเป‰เบ™เบชเบนเบ‡เบ‚เบญเบ‡ SQL เบ—เบตเปˆเบ›เบฐเบเบญเบšเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเปเบฅเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบ. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เบญเบ‡โ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบชเบฐโ€‹เบฅเบฑเบšโ€‹เบชเบฑเบšโ€‹เบŠเป‰เบญเบ™ (เบญเบฒโ€‹เป€เบฃโ€‹, เป‚เบ„เบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบเบฒเบ™โ€‹, เบชเบฐโ€‹เบซเบฐโ€‹เบžเบฒเบšโ€‹) เปเบฅเบฐโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ„เปเบฒโ€‹เบ–เบฒเบกโ€‹เบเปˆเบญเบโ€‹เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เป‚เบ”เบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹เปเบฅเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบฎเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹. เบกเบฑเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบเบฒเบ™โ€‹เปเบฅเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบชเบญเบšโ€‹เบ–เบฒเบกโ€‹เบซเบผเบฒเบโ€‹เบžเป‰เบญเบกโ€‹เบเบฑเบ™โ€‹, เปเบฅเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบชเบญเบšโ€‹เบ–เบฒเบกโ€‹เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹เบˆเบฒเบโ€‹เป„เบŸเบฅโ€‹เปŒ CSV เปเบฅเบฐ Parquetโ€‹. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบˆเบฒเบ PostgreSQL DBMS.

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบฅเบฐเบซเบฑเบ” shell เบˆเบฒเบ SQLite, เป‚เบ„เบ‡เบเบฒเบ™เปƒเบŠเป‰ parser เบˆเบฒเบ PostgreSQL เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบญเบปเบ‡เบ›เบฐเบเบญเบš Date Math เบˆเบฒเบ MonetDB, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡ (เบญเบตเบ‡เปƒเบชเปˆ Segment Tree Aggregation algorithm), เป‚เบฎเบ‡เบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบดเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ. เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” RE2, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบšเบšเบชเบญเบšเบ–เบฒเบกเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบเบปเบ™เป„เบเบเบฒเบ™เบ„เบงเบšเบ„เบธเบก MVCC เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบงเบฝเบเบžเป‰เบญเบกเป†เบเบฑเบ™ (เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบซเบผเบฒเบเบฎเบธเปˆเบ™), เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก vectorized เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Hyper-Pipelining Query Execution algorithm, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบ„เปˆเบฒเบŠเบธเบ”เปƒเบซเบเปˆ. เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เปƒเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ”เบฝเบงโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ:

  • เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš CSV เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบญเปˆเบฒเบ™เป„เบŸเบฅเปŒ CSV เบ—เบตเปˆเบกเบต 11 เบฅเป‰เบฒเบ™เปเบ–เบงเปƒเบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เบˆเบฒเบ 2.6 เบงเบดเบ™เบฒเบ—เบต. เบชเบนเบ‡เบชเบธเบ” 1.15 เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ โ€œSELECT COUNT(*)โ€ เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒ CSV เบˆเบฒเบ 1.8 เบงเบดเบ™เบฒเบ—เบต. เบชเบนเบ‡เบชเบธเบ” 0.3 เบงเบดเบ™เบฒเบ—เบต.
  • เป€เบžเบตเปˆเบกโ€‹เบเบฒเบ™โ€‹เบฎเบญเบ‡โ€‹เบฎเบฑเบšโ€‹เบชเบณโ€‹เบฅเบฑเบšโ€‹เบญเบฒโ€‹เป€เบฃโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡โ€‹เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบšโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบˆเบณโ€‹เบ™เบงเบ™โ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆ (โ€œCREATE TABLE vectors(v DOUBLE[3]);โ€).
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš MySQL, PostgreSQL เปเบฅเบฐ SQLite DBMS, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ DBMS เบžเบฒเบเบ™เบญเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ DuckDB เปเบฅเบฐเบเป‰เบฒเบเบกเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบฐเบšเบปเบšเบ•เปˆเบฒเบ‡เป†. เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เปเบ™เบš 'postgres:dbname=postgresscanner' AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ "เบ„เปเบฒเป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบš" เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบ—เบถเบเบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบฑเบ”เบ–เบธเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ "COPY FROM DATABASE" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป€เบ™เบทเป‰เบญเบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบตเบ.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบเป‰เป„เบ‚ "ALL" เปƒเบ™ EXCEPT เปเบฅเบฐ INTERSECT เบชเบฐเปเบ”เบ‡เบญเบญเบ.
  • เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ” ยป

    เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™