ဆက်စပ်ဂရပ် DBMS EdgeDB 4.0 ကို ဖြန့်ချိသည်။

EdgeDB 4.0 DBMS ၏ထွက်ရှိမှုသည် ဆက်စပ်ဂရပ်ဖစ်ဒေတာမော်ဒယ်နှင့် EdgeQL query language ကို အကောင်အထည်ဖော်ပြီး ရှုပ်ထွေးသော အထက်တန်းကျသောဒေတာဖြင့် လုပ်ဆောင်ရန်အတွက် အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးပါသည်။ ကုဒ်ကို Python နှင့် Rust (parser နှင့် performance-critical parts) ဖြင့် ရေးသားထားပြီး Apache 2.0 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။ ပရောဂျက်ကို PostgreSQL အတွက် အပိုပရိုဂရမ်တစ်ခုအဖြစ် တီထွင်နေပါသည်။ Client စာကြည့်တိုက်များသည် Python, Go, Rust ဘာသာစကားများအတွက် ပြင်ဆင်ထားပါသည်။ .NET၊ Elixir နှင့် TypeScript/Javascript DBMS စီမံခန့်ခွဲမှုနှင့် အပြန်အလှန်မေးမြန်းမှုလုပ်ဆောင်ခြင်း (REPL) အတွက် command line tools များကို ပံ့ပိုးပေးပါသည်။

ဇယားအခြေခံဒေတာမော်ဒယ်အစား EdgeDB သည် အရာဝတ္ထုအမျိုးအစားများအပေါ်အခြေခံ၍ ကြေငြာစနစ်တစ်ခုကိုအသုံးပြုသည်။ နိုင်ငံခြားသော့များအစား၊ အမျိုးအစားများကြား ဆက်နွယ်မှုကို အကိုးအကားဖြင့် ချိတ်ဆက်ခြင်းကို အသုံးပြုသည် (အရာဝတ္ထုတစ်ခုကို အခြားအရာဝတ္ထုတစ်ခု၏ ပိုင်ဆိုင်မှုအဖြစ် သုံးနိုင်သည်)။

type Person { လိုအပ်သော အမည်: str; } အမျိုးအစား ရုပ်ရှင် { လိုအပ်သော ခေါင်းစဉ်- str; သရုပ်ဆောင်ပေါင်းများစွာ- ပုဂ္ဂိုလ်၊ }

query processing ကို အရှိန်မြှင့်ရန် အညွှန်းများကို သုံးနိုင်သည်။ ခိုင်မာသော ပိုင်ဆိုင်မှုစာရိုက်ခြင်း၊ ပိုင်ဆိုင်မှုတန်ဖိုးကန့်သတ်ချက်များ၊ တွက်ချက်ထားသော ဂုဏ်သတ္တိများနှင့် သိမ်းဆည်းထားသည့် လုပ်ထုံးလုပ်နည်းများကဲ့သို့သော အင်္ဂါရပ်များကို ပံ့ပိုးပေးပါသည်။ ORM တစ်ခုနှင့်အတန်ငယ်အမှတ်ရနေသည့် EdgeDB object storage scheme ၏အင်္ဂါရပ်များသည် schemas များကို ရောနှောခြင်း၊ မတူညီသောအရာဝတ္ထုများမှ ဂုဏ်သတ္တိများကို ချိတ်ဆက်ခြင်းနှင့် ပေါင်းစပ်ထားသော JSON ပံ့ပိုးမှုတို့ ပါဝင်ပါသည်။

Built-in tools များကို schema migration ကို သိမ်းဆည်းရန်အတွက် ထောက်ပံ့ပေးသည် - သီးခြား esdl ဖိုင်တွင် သတ်မှတ်ထားသည့် schema ကိုပြောင်းလဲပြီးနောက်၊ "edgedb migration create" command ကို run လိုက်ရုံဖြင့် DBMS သည် schema အတွင်းရှိ မတူညီမှုများကို ပိုင်းခြားစိတ်ဖြာပြီး script တစ်ခုသို့ ရွှေ့ပြောင်းရန်အတွက် အပြန်အလှန်အကျိုးသက်ရောက်စွာ ဖန်တီးပေးမည်ဖြစ်ပါသည်။ schema အသစ်။ schema အပြောင်းအလဲများ၏သမိုင်းကိုအလိုအလျောက်ခြေရာခံသည်။

မေးခွန်းများဖန်တီးရန်အတွက်၊ GraphQL query language နှင့် proprietary EdgeDB language ဖြစ်သည့် hierarchical data အတွက် SQL ကို လိုက်လျောညီထွေဖြစ်အောင် လုပ်ဆောင်ပေးပါသည်။ စာရင်းများအစား၊ စုံစမ်းမေးမြန်းမှုရလဒ်များကို ဖွဲ့စည်းတည်ဆောက်ပုံနည်းလမ်းဖြင့် ဖော်မတ်ထားပြီး၊ အသေးစိပ်မေးမြန်းချက်များနှင့် ချိတ်ဆက်မှုများအစား၊ သင်သည် EdgeQL မေးခွန်းတစ်ခုအား အခြားမေးခွန်းတစ်ခုအတွင်း ဖော်ပြချက်တစ်ခုအဖြစ် သတ်မှတ်နိုင်သည်။ ငွေပေးချေမှုများနှင့် လည်ပတ်မှုများကို ပံ့ပိုးထားသည်။

ရုပ်ရှင် { ခေါင်းစဉ်၊ သရုပ်ဆောင်များ- { name } } filter .title = "The Matrix" ရုပ်ရှင်ကို ထည့်သွင်းပါ { title := "The Matrix Resurrections", သရုပ်ဆောင်များ := ( Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss ၊ 'Laurence Fishburne' } ) }

ဗားရှင်းအသစ်တွင်-

  • fts ပလပ်အင်မှတစ်ဆင့် စာသားအပြည့်အစုံရှာဖွေမှုအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားသည်။ မည်သည့်အရာဝတ္တုကိုမဆို ရှာဖွေနိုင်သောစာရွက်စာတမ်းအဖြစ်ပြောင်းလဲရန်၊ သင်သည် fts::index အညွှန်းကိုအသုံးပြုသင့်ပြီး fts::search() လုပ်ဆောင်ချက်ကို အညွှန်းပြုထားသောစာရွက်စာတမ်းများကြားတွင် သီးခြားစာစုတစ်ခုရှာဖွေရန် အဆိုပြုထားသည်။ ရလဒ်များကို တွေ့ရှိသည့်အရာနှင့် ၎င်း၏ရှာဖွေမှုအလေးချိန်ပါရှိသော tuple ပုံစံဖြင့် ပြန်ပေးသည်။ ဥပမာ- Item အမျိုးအစား { လိုအပ်သည် : bool { default := false; }; လိုအပ်သောအမည်: str; လိုအပ်သောဖော်ပြချက်- str; အညွှန်း fts::index on ( fts::with_options( .name, language := fts::Language.eng ) ); } with res := ( select fts::search(Item, 'candy corn', language := 'eng') ) res.object {name, score := res.score} ကို res.score desc ဖြင့် မှာယူပါ။
  • ကြားဖြတ်ကြားကာလများကိုကိုယ်စားပြုရန် တန်ဖိုးတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော အပိုင်းအခြားများကို သတ်မှတ်သည့် ဒေတာအမျိုးအစား "မျိုးစုံ" အသစ်တစ်ခု ထပ်ထည့်ထားသည်။ သတ်မှတ်ထားသော အပိုင်းအခြားများအတွင်း ထပ်နေသော ဧရိယာများကို ပုံမှန်ဖြစ်အောင် အလိုအလျောက် လုပ်ဆောင်ပါသည်။ လုပ်ဆောင်မှုအပိုင်းအခြားများအတွက် ယခင်က ရရှိနိုင်သော လုပ်ဆောင်ချက်များနှင့် အော်ပရေတာများအားလုံးသည် "မျိုးစုံသော" အမျိုးအစားဖြင့် လုပ်ဆောင်နိုင်ပါသည်။ မျိုးစုံကို ရွေးပါ([အပိုင်း(၈၊ ၁၀)]) + အပိုင်းအခြား(၁၊ ၅) — အပိုင်းအခြား(၃၊ ၄);
  • HTTP မှတဆင့် GraphQL နှင့် EdgeQL သို့ ဝင်ရောက်ခွင့်ကို ကန့်သတ်ရန် မူရင်းအထောက်အထားစိစစ်ခြင်း ပံ့ပိုးမှုဖြင့် ထည့်သွင်းပြီး ဖွင့်ထားသည်။
  • ဒေတာဘေ့စ်ဥပမာမှ သီးခြားလုပ်ဆောင်သည့် အထောက်အထားစိစစ်ခြင်းဝန်ဆောင်မှုကို စတင်ရန်၊ OAuth နှင့် အီးမေးလ်နှင့် စကားဝှက်ကို အသုံးပြု၍ အကောင့်ဝင်ခြင်းကို ပံ့ပိုးပေးသည့် "auth" တိုးချဲ့မှုကို ထည့်သွင်းထားသည်။
  • hashing နှင့် ကုဒ်ဝှက်ခြင်းအတွက် hmac၊ gen_salt နှင့် crypt လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးသည့် pgcrypto တိုးချဲ့မှု။ ext::pgcrypto::digest('ဤအရာကို စာဝှက်ရန်'၊ 'sha1');
  • string ဆင်တူယိုးမှားကို ဆုံးဖြတ်ရန်အတွက် လုပ်ဆောင်ချက်များနှင့်အတူ pg_trgm တိုးချဲ့မှုကို ထည့်သွင်းထားသည်။
  • စွမ်းဆောင်ရည်တိုးတက်စေရန် အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ထားပါသည်။ မှတ်ဉာဏ်သုံးစွဲမှုကို ဖွင့်ထားသည် ဆာဗာ ၄၀% လျှော့ချထားသည်။ EdgeQL query parser ကုဒ်ကို Rust တွင် ပြန်လည်ရေးသားထားသည်။
  • EdgeQL သည် ပိုမိုရင်းနှီးသော အခြေအနေဆိုင်ရာ အထားအသိုလ်တစ်ခုအတွက် ပံ့ပိုးမှု ထပ်လောင်းပေးသည် ( if ... then.. else ... ) သတ်မှတ်ထားသော အခြေအနေများအပေါ် အခြေခံ၍ အမျိုးမျိုးသော အရာဝတ္ထုများကို ဖန်တီးရန်၊ အပ်ဒိတ်လုပ်ရန်နှင့် ဖျက်ရန် အခြေအနေအလိုက် DML ကို အသုံးပြုရန် စွမ်းရည်ကို ပံ့ပိုးပေးပါသည်။ လုပ်ဆောင်ချက်များကို to_bytes(), to_str(), enc::base64_encode နှင့် enc::base64_decode. Triggers များကို "when" expressions များကို အသုံးပြုရန် ခွင့်ပြုထားသည်။ အကယ်၍ count(Object) > 0 ကိုရွေးပါ ထို့နောက် 'ဒေတာရရှိသည်' အခြား 'ဒေတာမရှိပါ'၊ select (အသုံးပြုသူ filter ကိုရွေးချယ်ပါ။name = 'Alice') ?? (အသုံးပြုသူ {အမည် := 'Alice' } ကိုထည့်သွင်းပါ။ enc::base64_encode(b'hello');
  • GraphQL queries သို့ ဂလိုဘယ်တန်ဖိုးများကို ဖြတ်သန်းရန် နည်းလမ်းအသစ်တစ်ခု ထပ်ထည့်ခဲ့သည် - သီးခြားအကွက်ကို အသုံးပြုမည့်အစား __globals__ အရာဝတ္ထုအပေါ် အခြေခံထားသော ကိန်းရှင်များကို ကျော်ဖြတ်နိုင်မှုကို ထည့်သွင်းထားပါသည်။

    source: opennet.ru
DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster