DuckDB 0.6.0, аналитик асуулгад зориулсан SQLite хувилбарыг нийтэлсэн

SQLite-ийн авсаархан байдал, суулгагдсан номын сан хэлбэрээр холбогдох чадвар, мэдээллийн санг нэг файлд хадгалах, тохиромжтой CLI интерфейс, гүйцэтгэх хэрэгсэл, оновчтой болгох зэрэг SQLite-ийн шинж чанаруудыг нэгтгэсэн DuckDB 0.6.0 DBMS-ийг гаргах боломжтой. Хадгалсан өгөгдлийн нэлээд хэсгийг хамарсан аналитик асуулга, жишээлбэл хүснэгтийн агуулгыг бүхэлд нь нэгтгэх эсвэл хэд хэдэн том хүснэгтийг нэгтгэх. Төслийн кодыг MIT лицензийн дагуу түгээдэг. Хадгалах формат хараахан тогтворжоогүй байгаа бөгөөд хувилбараас хувилбар болгон өөрчлөгддөг тул хөгжүүлэлт нь туршилтын хувилбаруудыг бүрдүүлэх шатандаа явж байна.

DuckDB нь маш нарийн төвөгтэй, цаг хугацаа шаардсан асуултуудыг шийдвэрлэх нэмэлт чадамжийг агуулсан дэвшилтэт SQL аялгуугаар хангадаг. Нарийн төвөгтэй төрлүүдийг (массив, бүтэц, нэгдэл) ашиглах, дурын болон үүрлэсэн хамаарал бүхий дэд асуулга ажиллуулах чадварыг дэмждэг. Энэ нь CSV болон Parquet файлуудаас шууд асуулга явуулах, олон асуулга зэрэг ажиллуулахыг дэмждэг. PostgreSQL DBMS-ээс импортлох боломжтой.

Төсөл нь SQLite-ийн бүрхүүлийн кодоос гадна тусдаа номын санд PostgreSQL-ийн задлан шинжлэгч, MonetDB-ийн Date Math бүрэлдэхүүн хэсэг, цонхны функцүүдийн өөрийн хэрэгжилт (Segment Tree Agregation алгоритм дээр суурилсан), ердийн илэрхийлэл процессорыг ашигладаг. RE2 номын сан, өөрийн хүсэлтийг оновчтой болгогч, даалгавруудыг нэгэн зэрэг гүйцэтгэх MVCC хяналтын механизм (Олон хувилбарын зэрэгцээ хяналт), мөн Hyper-Pipelining Query Гүйцэтгэлийн алгоритм дээр суурилсан векторжуулсан асуулга гүйцэтгэх хөдөлгүүр нь их хэмжээний утгыг авах боломжийг олгодог. нэг үйл ажиллагаанд нэг дор боловсруулагдана.

Шинэ хувилбарт гарсан өөрчлөлтүүдийн дунд:

  • Хадгалах форматыг сайжруулах ажлыг үргэлжлүүлэв. Нэг гүйлгээнд их хэмжээний өгөгдлийг ачаалах үед гүйлгээг COMMIT командаар баталгаажуулахыг хүлээлгүйгээр урсгал горимд мэдээллийн сангаас файл руу бичдэг өөдрөг диск бичих горимыг хэрэгжүүлсэн. . COMMIT командыг хүлээн авах үед өгөгдөл аль хэдийн дискэнд бичигдсэн байх ба ROLLBACK гүйцэтгэх үед устгагдах болно. Өмнө нь өгөгдлийг санах ойд бүрэн хадгалдаг байсан бөгөөд үүнийг хийхдээ дискэнд хадгалдаг байв.
  • Тусдаа хүснэгтэд өгөгдлийг зэрэгцээ ачаалах дэмжлэг нэмэгдсэн нь олон цөмт систем дээр ачаалах хурдыг мэдэгдэхүйц нэмэгдүүлэх боломжийг олгодог. Жишээлбэл, өмнөх хувилбарт 150 цөмт CPU дээр 10 сая мөр бүхий мэдээллийн санг ачаалахад 91 секунд зарцуулдаг байсан бол шинэ хувилбарт энэ үйлдлийг 17 секундэд хийж дуусгасан. Зэрэгцээ ачаалах хоёр горим байдаг - бичлэгийн дарааллыг хадгалах, дарааллыг хадгалахгүйгээр.
  • Өгөгдлийн шахалтын хувьд FSST (Fast Static Symbol Table) алгоритмыг ашигладаг бөгөөд энэ нь ердийн тохирох толь бичгийг ашиглан өгөгдлийг мөр дотор багцлах боломжийг олгодог. Шинэ алгоритмыг ашигласнаар тестийн мэдээллийн сангийн хэмжээг 761MB-аас 251MB болгон багасгах боломжтой болсон.
  • Хөвөгч цэгийн тоог (DOUBLE болон FLOAT) шахах Chimp болон Patas алгоритмуудыг санал болгосон. Өмнөх Gorillas алгоритмтай харьцуулахад Chimp нь илүү өндөр түвшний шахалт, хурдан задлах боломжийг олгодог. Patas алгоритм нь шахалтын харьцаагаар Chimp-ээс хоцорч байгаа боловч задлах хурдаараа хамаагүй хурдан бөгөөд энэ нь шахагдаагүй өгөгдлийг уншихаас бараг ялгаагүй юм.
  • CSV файлаас өгөгдлийг олон зэрэгцээ урсгал руу ачаалах туршилтын чадварыг нэмсэн (SET туршилтын_parallel_csv=true) нь том CSV файлуудыг ачаалахад зарцуулдаг цагийг эрс багасгадаг. Жишээлбэл, энэ сонголтыг идэвхжүүлсэн үед 720 MB хэмжээтэй CSV файлыг татаж авах хугацаа 3.5 секундээс 0.6 секунд болж буурсан.
  • Индекс үүсгэх, удирдах үйл ажиллагааг зэрэгцүүлэн гүйцэтгэх боломжийг хэрэгжүүлсэн. Жишээлбэл, 16 сая бичлэг бүхий баганад CREATE INDEX үйлдлийг 5.92 секундээс 1.38 секунд болгон бууруулсан.
  • “COUNT(DISTINCT col)” илэрхийлэл агуулсан асуулгад нэгтгэх үйлдлүүдийг зэрэгцүүлэхийг идэвхжүүлсэн.
  • SQL нь UNION төрлийн дэмжлэгийг нэмсэн бөгөөд энэ нь олон төрлийг нэг элементтэй холбох боломжийг олгодог (жишээлбэл, “UNION(num INT, алдаа VARCHAR))”).
  • SQL нь "SELECT" биш "FROM" гэсэн үгээр эхэлсэн асуулга үүсгэх боломжийг олгодог. Энэ тохиолдолд асуулга "SELECT *" гэж эхэлдэг гэж үздэг.
  • SQL нь COLUMNS илэрхийллийн дэмжлэгийг нэмсэн бөгөөд энэ нь илэрхийллийг хуулбарлахгүйгээр олон багана дээр үйлдэл хийх боломжийг олгодог. Жишээ нь, "Сонгох MIN(COLUMNS(*))-г obs;" obs хүснэгтийн багана бүрийн хувьд MIN функцийг гүйцэтгэх ба "obs-аас COLUMNS('val[0-9]+') SELECT;" "val" болон тооноос бүрдсэн нэртэй баганын хувьд.
  • Жагсаалт дээрх үйлдлүүдийн дэмжлэгийг нэмсэн, жишээлбэл, “SELECT [x + 1 for x in [1, 2, 3]] AS l;”.
  • Санах ойн хэрэглээг оновчтой болгосон. Анхдагч байдлаар Линукс платформ нь санах ойн менежментэд jemalloc номын санг ашигладаг. Санах ой хязгаарлагдмал үед хэш нэгтгэх үйлдлүүдийн гүйцэтгэл мэдэгдэхүйц сайжирсан.
  • ".mode duckbox" гаралтын горимыг командын мөрийн интерфейс дээр нэмсэн бөгөөд энэ нь терминалын цонхны өргөнийг харгалзан дунд баганыг арилгадаг ("SELECT * гэх мэт олон тооны багана бүхий асуулгын үр дүнг нүдээр үнэлэхэд тохиромжтой) FROM tbl "гэж бичнэ. Энэ нь ердийн горимд хэд хэдэн мөрөнд тархсан байдаг). ".maxrows X" параметрийг ашигласнаар та харуулах мөрийн тоог нэмж хязгаарлаж болно.
  • CLI нь контекстийг харгалзан оролтын автомат бөглөх боломжийг олгодог (түлхүүр үг, хүснэгтийн нэр, функц, баганын нэр, файлын нэрийг оруулсан болно).
  • CLI нь асуулгын явцын заагчийг анхдагчаар идэвхжүүлсэн байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх