ခလဲခဌမ်သစိတ်ဖဌာမေသမဌန်သချက်မျာသအတလက် DuckDB 0.6.0၊ SQLite မူကလဲကို ထုတ်ဝေခဲ့သည်။

DuckDB 0.6.0 DBMS သည် SQLite ၏ ကျစ်လစ်သိပ်သည်သမဟုကဲ့သို့ ဂုဏ်သတ္တိမျာသ၊ မဌဟုပ်သလင်သထာသသော စာကဌည့်တိုက်ပုံစံဖဌင့် ချိတ်ဆက်နိုင်မဟု၊ ဖိုင်တစ်ခုတည်သတလင် ဒေတာဘေ့စ်ကို သိမ်သဆည်သခဌင်သနဟင့် အဆင်ပဌေသော CLI မျက်နဟာပဌင်ကို ပေါင်သစပ်ပဌီသ ရရဟိနိုင်ပဌီဖဌစ်သည်။ ဥပမာအာသဖဌင့် သိမ်သဆည်သထာသသော ဒေတာ၏ အရေသပါသော အစိတ်အပိုင်သကို ဖုံသအုပ်ထာသသော ခလဲခဌမ်သစိတ်ဖဌာသော စုံစမ်သမေသမဌန်သမဟုမျာသ၊ ဥပမာ ဇယာသမျာသ၏ အကဌောင်သအရာတစ်ခုလုံသကို ပေါင်သစည်သခဌင်သ သို့မဟုတ် ကဌီသမာသသော ဇယာသမျာသစလာကို ပေါင်သစည်သခဌင်သ။ ပရောဂျက်ကုဒ်ကို MIT လိုင်စင်အောက်တလင် ဖဌန့်ဝေထာသသည်။ သိုလဟောင်မဟုဖော်မတ်ကို မတည်ငဌိမ်သေသဘဲ ဗာသရဟင်သမဟ ဗာသရဟင်သသို့ ပဌောင်သလဲခဌင်သကဌောင့် ဖလံ့ဖဌိုသတိုသတက်မဟုသည် စမ်သသပ်ထုတ်ဝေမဟုမျာသ ပဌုလုပ်သည့်အဆင့်တလင် ရဟိနေဆဲဖဌစ်သည်။

DuckDB သည် အလလန်ရဟုပ်ထလေသပဌီသ အချိန်ကုန်သော မေသခလန်သမျာသကို ကိုင်တလယ်ရန်အတလက် ထပ်လောင်သစလမ်သရည်မျာသပါ၀င်သည့် အဆင့်မဌင့် SQL ဒေသိယဘာသာစကာသကို ပံ့ပိုသပေသပါသည်။ ရဟုပ်ထလေသသောအမျိုသအစာသမျာသ (အခင်သအကျင်သမျာသ၊ ဖလဲ့စည်သပုံမျာသ၊ သမဂ္ဂမျာသ) ကိုအသုံသပဌုခဌင်သနဟင့် ဆက်စပ်နေသော ဆက်စပ်မေသခလန်သခလဲမျာသကို မတရာသနဟင့် nested လုပ်နိုင်စလမ်သကို ပံ့ပိုသပေသထာသသည်။ ၎င်သသည် CSV နဟင့် Parquet ဖိုင်မျာသမဟ တိုက်ရိုက်မေသမဌန်သချက်မျာသစလာကို တစ်ပဌိုင်နက်လုပ်ဆောင်ခဌင်သကို ပံ့ပိုသပေသသည်။ PostgreSQL DBMS မဟတင်သလင်သရန်ဖဌစ်နိုင်သည်။

SQLite မဟ shell code အပဌင်၊ ပရောဂျက်သည် သီသခဌာသစာကဌည့်တိုက်တစ်ခုရဟိ PostgreSQL မဟ parser တစ်ခု၊ MonetDB မဟ Date Math အစိတ်အပိုင်သ၊ ၎င်သ၏ကိုယ်ပိုင် window functions (Segment Tree Aggregation algorithm ကိုအခဌေခံ၍) ကိုအခဌေခံသည့် ပုံမဟန် expression processor ကို အသုံသပဌုပါသည်။ RE2 စာကဌည့်တိုက်၊ ၎င်သ၏ကိုယ်ပိုင် query optimizer နဟင့် MVCC ထိန်သချုပ်မဟုယန္တရာသ (Multi-Version Concurrency Control) နဟင့် လုပ်ငန်သဆောင်တာမျာသကို တပဌိုင်နက်တည်သ လုပ်ဆောင်ခဌင်သအပဌင် Hyper-Pipelining Query Execution algorithm ကိုအခဌေခံ၍ တန်ဖိုသအစုံအလင်ကို အခဌေခံထာသသော vectorized query execution engine ၊ လည်ပတ်မဟုတစ်ခုတလင် တစ်ကဌိမ်တည်သ လုပ်ဆောင်ရန်။

အသစ်ထလက်ရဟိထာသသော အပဌောင်သအလဲမျာသထဲတလင်-

  • သိုလဟောင်မဟုပုံစံကို မဌဟင့်တင်ရန် ဆက်လက်လုပ်ဆောင်သည်။ အပဌုသဘောဆောင်သော ဒစ်ခ်စာရေသမုဒ်ကို အကောင်အထည် ဖော်ထာသပဌီသ၊ ငလေပေသငလေယူတစ်ခုတလင် ဒေတာအစုအဝေသကဌီသကို တင်သည့်အခါ၊ ဒေတာမျာသကို COMMIT အမိန့်ဖဌင့် အတည်ပဌုရန် မစောင့်ဆိုင်သဘဲ ဒေတာဘေ့စ်မဟ ဖိုင်တစ်ခုသို့ ချုံ့ပဌီသ ဖိုင်တစ်ခုသို့ ချုံ့ပဌီသ စာရေသလိုက်ပါသည်။ . COMMIT အမိန့်ကို လက်ခံရရဟိသောအခါ၊ ဒေတာကို ဒစ်ခ်တလင် ရေသသာသထာသပဌီသ၊ ROLLBACK ကို လုပ်ဆောင်သည့်အခါ၊ ၎င်သကို စလန့်ပစ်မည်ဖဌစ်သည်။ ယခင်က၊ ဒေတာကို အစပိုင်သတလင် မန်မိုရီတလင် လုံသလုံသလျာသလျာသ သိမ်သဆည်သခဲ့ပဌီသ ကျူသလလန်သောအခါတလင် ၎င်သကို ဒစ်ခ်တလင် သိမ်သဆည်သခဲ့သည်။
  • Multi-core စနစ်မျာသတလင် ဒေတာကို သီသခဌာသဇယာသမျာသထဲသို့ အပဌိုင်တင်ခဌင်သအတလက် ပံ့ပိုသမဟု ထပ်လောင်သထည့်သလင်သထာသသည်။ ဥပမာအာသဖဌင့်၊ ယခင်ထုတ်လလဟတ်မဟုတလင် 150-core CPU တလင် အတန်သပေါင်သ သန်သ 10 ပါသော ဒေတာဘေ့စ်ကို တင်ရာတလင် 91 စက္ကန့်ကဌာသော်လည်သ ဗာသရဟင်သအသစ်တလင် ကလုပ်ဆောင်ချက်သည် 17 စက္ကန့်အတလင်သ ပဌီသဆုံသပါသည်။ အပဌိုင်တင်ခဌင်သမုဒ်နဟစ်ခုရဟိသည် - မဟတ်တမ်သမျာသ၏အစီအစဥ်ကိုထိန်သသိမ်သခဌင်သနဟင့်အမိန့်ကိုထိန်သသိမ်သခဌင်သမရဟိဘဲ။
  • ဒေတာချုံ့ခဌင်သအတလက်၊ FSST (Fast Static Symbol Table) အယ်လဂိုရီသမ်ကို အသုံသပဌုပဌီသ ပုံမဟန်ကိုက်ညီမဟုရဟိသော အဘိဓာန်မျာသကို အသုံသပဌု၍ စာကဌောင်သမျာသအတလင်သဒေတာမျာသကို ထုပ်ပိုသနိုင်စေပါသည်။ အယ်လဂိုရီသမ်အသစ်ကို အသုံသပဌုခဌင်သဖဌင့် စမ်သသပ်ဒေတာဘေ့စ်၏အရလယ်အစာသကို 761MB မဟ 251MB သို့ လျဟော့ချနိုင်စေခဲ့သည်။
  • Chimp နဟင့် Patas algorithms သည် Floating Point နံပါတ်မျာသ (DOUBLE နဟင့် FLOAT) ကို ချုံ့ရန် အဆိုပဌုထာသသည်။ ယခင် Gorillas algorithm နဟင့် နဟိုင်သယဟဉ်ပါက Chimp သည် ပိုမိုမဌင့်မာသသော compression နဟင့် decompression ကိုပိုမိုမဌန်ဆန်စေသည်။ Patas algorithm သည် compression ratio တလင် Chimp ၏နောက်တလင် နောက်ကျနေသော်လည်သ၊ ချုံ့မထာသသော data မျာသကိုဖတ်ခဌင်သနဟင့်မတူသလောက်ဖဌစ်သည့် decompression speed တလင်ပိုမိုမဌန်ဆန်ပါသည်။
  • CSV ဖိုင်မျာသမဟ ဒေတာမျာသကို အပဌိုင်စီသကဌောင်သမျာသစလာ (SET experimental_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 စကာသရပ်အတလက် အထောက်အပံ့ကို ပေါင်သထည့်ထာသသည်။ ဥပမာအာသဖဌင့်၊ obs မဟ “SELECT MIN(COLUMNS(*))) obs ဇယာသရဟိ ကော်လံတစ်ခုစီအတလက် MIN လုပ်ဆောင်ချက်ကို လုပ်ဆောင်စေမည်ဖဌစ်ပဌီသ "SELECT COLUMNS('val[0-9]+') မဟ obs;" "val" နဟင့် နံပါတ်မျာသပါရဟိသော အမည်တစ်ခုရဟိသော ကော်လံမျာသအတလက်။
  • စာရင်သမျာသတလင် လုပ်ဆောင်ချက်မျာသအတလက် ပံ့ပိုသမဟု ထပ်လောင်သထည့်ထာသသည်၊ ဥပမာ၊ “SELECT [x + 1 for x [1၊ 2၊ 3]] AS l;”။
  • မဟတ်ဉာဏ်သုံသစလဲမဟုကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ထာသပါသည်။ ပုံမဟန်အာသဖဌင့်၊ Linux ပလပ်ဖောင်သသည် မဟတ်ဉာဏ်စီမံခန့်ခလဲမဟုအတလက် jemalloc စာကဌည့်တိုက်ကို အသုံသပဌုသည်။ မမ်မိုရီကို ကန့်သတ်ထာသသည့်အခါ hash ပေါင်သစပ်လုပ်ဆောင်မဟုမျာသ၏ စလမ်သဆောင်ရည်ကို သိသာစလာ မဌဟင့်တင်ထာသသည်။
  • ".mode duckbox" အထလက်မုဒ်ကို ထည့်သလင်သပဌီသ အလယ်ကော်လံမျာသကို တာမီနယ်ဝင်သဒိုသ၏ အကျယ်ကို ထည့်သလင်သစဉ်သစာသခဌင်သ (“SELECT * ကဲ့သို့သော ကော်လံအမျာသအပဌာသဖဌင့် စုံစမ်သမဟုမျာသ၏ရလဒ်မျာသကို လျင်မဌန်စလာ အမဌင်အာရုံဖဌင့် အကဲဖဌတ်ရန်အတလက် သင့်လျော်သည်။ tbl မဟ၊ ပုံမဟန်မုဒ်တလင် လိုင်သမျာသစလာပေါ်တလင် ပျံ့နဟံ့နေသည်)။ “.maxrows X” ပါရာမီတာကို အသုံသပဌု၍ ပဌသထာသသော အတန်သအရေအတလက်ကို ထပ်မံကန့်သတ်နိုင်သည်။
  • CLI သည် အကဌောင်သအရာကို ထည့်သလင်သစဉ်သစာသပဌီသ အလိုအလျောက်ဖဌည့်သလင်သမဟုကို ပံ့ပိုသပေသသည် (သော့ချက်စာလုံသမျာသ၊ ဇယာသအမည်မျာသ၊ လုပ်ဆောင်ချက်မျာသ၊ ကော်လံအမည်မျာသနဟင့် ဖိုင်အမည်မျာသ ပဌီသမဌောက်သည်)။
  • CLI တလင် ပုံမဟန်အာသဖဌင့် ဖလင့်ထာသသည့် မေသခလန်သတိုသတက်မဟု အညလဟန်သတစ်ခု ရဟိသည်။

source: opennet.ru

မဟတ်ချက် Add