EdgeDB 4.0 DBMS విడుదల అందించబడింది, ఇది రిలేషనల్ గ్రాఫ్ డేటా మోడల్ మరియు EdgeQL ప్రశ్న భాషని అమలు చేస్తుంది, ఇది సంక్లిష్ట క్రమానుగత డేటాతో పని చేయడానికి అనుకూలీకరించబడింది. కోడ్ పైథాన్ మరియు రస్ట్ (పార్సర్ మరియు పనితీరు-క్లిష్ట భాగాలు)లో వ్రాయబడింది మరియు Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది. ప్రాజెక్ట్ PostgreSQL కోసం యాడ్-ఆన్గా అభివృద్ధి చేయబడుతోంది. పైథాన్, గో, రస్ట్ భాషల కోసం క్లయింట్ లైబ్రరీలు సిద్ధం చేయబడ్డాయి. .NET, అమృతం మరియు టైప్స్క్రిప్ట్/జావాస్క్రిప్ట్. DBMS నిర్వహణ మరియు ఇంటరాక్టివ్ క్వెరీ ఎగ్జిక్యూషన్ (REPL) కోసం కమాండ్ లైన్ సాధనాలను అందిస్తుంది.
పట్టిక-ఆధారిత డేటా మోడల్కు బదులుగా, EdgeDB ఆబ్జెక్ట్ రకాల ఆధారంగా డిక్లరేటివ్ సిస్టమ్ను ఉపయోగిస్తుంది. విదేశీ కీలకు బదులుగా, రకాల మధ్య సంబంధాన్ని నిర్వచించడానికి సూచన ద్వారా లింక్ చేయడం ఉపయోగించబడుతుంది (ఒక వస్తువును మరొక వస్తువు యొక్క ఆస్తిగా ఉపయోగించవచ్చు).
వ్యక్తి {అవసరమైన పేరు: str; } టైప్ మూవీ {అవసరమైన శీర్షిక: str; బహుళ నటులు: వ్యక్తి; }
ప్రశ్న ప్రాసెసింగ్ను వేగవంతం చేయడానికి సూచికలను ఉపయోగించవచ్చు. బలమైన ప్రాపర్టీ టైపింగ్, ప్రాపర్టీ విలువ పరిమితులు, కంప్యూటెడ్ ప్రాపర్టీలు మరియు స్టోర్డ్ ప్రొసీజర్లు వంటి ఫీచర్లకు కూడా మద్దతు ఉంది. EdgeDB ఆబ్జెక్ట్ స్టోరేజ్ స్కీమ్ యొక్క ఫీచర్లు, ఇది కొంతవరకు ORMని గుర్తుకు తెస్తుంది, స్కీమాలను కలపగల సామర్థ్యం, విభిన్న వస్తువుల నుండి లక్షణాలను లింక్ చేయడం మరియు ఇంటిగ్రేటెడ్ JSON మద్దతు ఉన్నాయి.
స్కీమా మైగ్రేషన్ను నిల్వ చేయడానికి అంతర్నిర్మిత సాధనాలు అందించబడ్డాయి - ప్రత్యేక esdl ఫైల్లో పేర్కొన్న స్కీమాను మార్చిన తర్వాత, “edgedb మైగ్రేషన్ క్రియేట్” ఆదేశాన్ని అమలు చేయండి మరియు DBMS స్కీమాలోని తేడాలను విశ్లేషిస్తుంది మరియు ఇంటరాక్టివ్గా స్కీమాకు మైగ్రేషన్ కోసం స్క్రిప్ట్ను రూపొందిస్తుంది. కొత్త స్కీమా. స్కీమా మార్పుల చరిత్ర స్వయంచాలకంగా ట్రాక్ చేయబడుతుంది.
ప్రశ్నలను రూపొందించడానికి, GraphQL ప్రశ్న భాష మరియు క్రమానుగత డేటా కోసం SQL యొక్క అనుసరణ అయిన యాజమాన్య EdgeDB భాష రెండూ మద్దతునిస్తాయి. జాబితాలకు బదులుగా, ప్రశ్న ఫలితాలు నిర్మాణాత్మక పద్ధతిలో ఫార్మాట్ చేయబడతాయి మరియు సబ్క్వెరీలు మరియు JOINలకు బదులుగా, మీరు ఒక EdgeQL ప్రశ్నను మరొక ప్రశ్నలో వ్యక్తీకరణగా పేర్కొనవచ్చు. లావాదేవీలు మరియు చక్రాలకు మద్దతు ఉంది.
సినిమా {శీర్షిక, నటీనటులు: {పేరు}} ఫిల్టర్ .title = "ది మ్యాట్రిక్స్" చలనచిత్రాన్ని చొప్పించండి {శీర్షిక := "ది మ్యాట్రిక్స్ పునరుద్ధరణలు", నటులు := ( {'కీను రీవ్స్', 'క్యారీ-లో వ్యక్తి ఫిల్టర్ .పేరును ఎంచుకోండి- అన్నే మోస్', 'లారెన్స్ ఫిష్బర్న్' }) }
కొత్త వెర్షన్లో:
- పూర్తి-వచన శోధనకు మద్దతు జోడించబడింది, fts ప్లగ్ఇన్ ద్వారా అమలు చేయబడింది. ఏదైనా వస్తువును శోధించదగిన పత్రంగా మార్చడానికి, మీరు fts :: ఇండెక్స్ ఇండెక్స్ని ఉపయోగించాలి మరియు ఇండెక్స్డ్ డాక్యుమెంట్లలో నిర్దిష్ట పదబంధం కోసం శోధించడానికి fts ::search() ఫంక్షన్ ప్రతిపాదించబడింది. ఫలితాలు కనుగొనబడిన వస్తువు మరియు దాని శోధన బరువును కలిగి ఉన్న టుపుల్స్ రూపంలో అందించబడతాయి. ఉదాహరణకు: ఐటెమ్ టైప్ చేయండి {అవసరం అందుబాటులో ఉంది: bool {default := false; }; అవసరమైన పేరు: str; అవసరమైన వివరణ: str; ఇండెక్స్ fts::index on (fts::with_options( .name, language := fts::Language.eng ) ); } తో res := ( fts ఎంచుకోండి::search(ఐటెమ్, 'కాండీ కార్న్', భాష := 'eng') ) res.objectని ఎంచుకోండి {పేరు, స్కోర్ := res.స్కోర్} res.స్కోర్ డెస్క్ ద్వారా ఆర్డర్;
- అడపాదడపా విరామాలను సూచించడానికి ఒకటి లేదా అంతకంటే ఎక్కువ విలువల పరిధులను నిర్వచించే కొత్త డేటా రకం "మల్టీరేంజ్" జోడించబడింది. పేర్కొన్న పరిధులలో అతివ్యాప్తి చెందుతున్న ప్రాంతాల సాధారణీకరణ స్వయంచాలకంగా నిర్వహించబడుతుంది. ప్రాసెసింగ్ పరిధుల కోసం గతంలో అందుబాటులో ఉన్న అన్ని విధులు మరియు ఆపరేటర్లు "మల్టీరేంజ్" రకంతో పని చేయవచ్చు. బహుళశ్రేణిని ఎంచుకోండి([పరిధి(8, 10)]) + పరిధి(1, 5) — పరిధి(3, 4);
- HTTP ద్వారా GraphQL మరియు EdgeQLకి యాక్సెస్ని పరిమితం చేయడానికి డిఫాల్ట్ ప్రమాణీకరణ మద్దతు ద్వారా జోడించబడింది మరియు ప్రారంభించబడింది.
- డేటాబేస్ ఉదాహరణ నుండి విడిగా పనిచేసే ప్రామాణీకరణ సేవను ప్రారంభించడానికి, “ప్రామాణీకరణ” పొడిగింపు జోడించబడింది, OAuthకు మద్దతు ఇస్తుంది లేదా ఇమెయిల్ మరియు పాస్వర్డ్ ఉపయోగించి లాగిన్ చేయండి.
- హ్యాషింగ్ మరియు ఎన్క్రిప్షన్ కోసం hmac, gen_salt మరియు క్రిప్ట్ ఫంక్షన్లను అందించే pgcrypto పొడిగింపు జోడించబడింది. ext ఎంచుకోండి ::pgcrypto::digest('encrypt this', 'sha1');
- స్ట్రింగ్ సారూప్యతను నిర్ణయించడానికి ఫంక్షన్లతో pg_trgm పొడిగింపు జోడించబడింది.
- పనితీరును మెరుగుపరచడానికి ఆప్టిమైజేషన్లు చేయబడ్డాయి. మెమరీ వినియోగం సర్వర్ 40% తగ్గించబడింది. EdgeQL క్వెరీ పార్సర్ కోడ్ రస్ట్లో తిరిగి వ్రాయబడింది.
- EdgeQL మరింత సుపరిచితమైన షరతులతో కూడిన సింటాక్స్కు మద్దతును జోడించింది (అయితే ... ఆపై .. else ...). పేర్కొన్న షరతుల ఆధారంగా వివిధ వస్తువులను సృష్టించడానికి, నవీకరించడానికి మరియు తొలగించడానికి షరతులతో కూడిన DMLని ఉపయోగించే సామర్థ్యాన్ని అందిస్తుంది. విధులు to_bytes(), to_str(), enc::base64_encode మరియు enc::base64_decode జోడించబడ్డాయి. ట్రిగ్గర్లు "ఎప్పుడు" వ్యక్తీకరణలను ఉపయోగించడానికి అనుమతించబడతాయి. కౌంట్ (ఆబ్జెక్ట్) > 0 అయితే ఎంచుకోండి ఆపై 'డేటా వచ్చింది' లేకపోతే 'డేటా లేదు'; ఎంచుకోండి (యూజర్ ఫిల్టర్ .name = 'Alice' ఎంచుకోండి) ?? (యూజర్ {పేరు := 'ఆలిస్'}ని చొప్పించండి); enc ఎంచుకోండి ::base64_encode(b'hello');
- GraphQL ప్రశ్నలకు గ్లోబల్ విలువలను పాస్ చేయడానికి కొత్త మార్గం జోడించబడింది - ప్రత్యేక ఫీల్డ్ని ఉపయోగించకుండా, __globals__ ఆబ్జెక్ట్ ఆధారంగా వేరియబుల్స్ పాస్ చేసే సామర్థ్యం జోడించబడింది.
మూలం: opennet.ru
