DuckDB 0.6.0, విశ్లేషణాత్మక ప్రశ్నల కోసం SQLite వేరియంట్ ప్రచురించబడింది

DuckDB 0.6.0 DBMS విడుదల అందుబాటులో ఉంది, SQLite యొక్క కాంపాక్ట్‌నెస్, ఎంబెడెడ్ లైబ్రరీ రూపంలో కనెక్ట్ చేయగల సామర్థ్యం, ​​డేటాబేస్‌ను ఒక ఫైల్‌లో నిల్వ చేయడం మరియు అనుకూలమైన CLI ఇంటర్‌ఫేస్, సాధనాలు మరియు అమలు కోసం ఆప్టిమైజేషన్‌లు వంటి లక్షణాలను మిళితం చేస్తుంది. నిల్వ చేయబడిన డేటాలో గణనీయమైన భాగాన్ని కవర్ చేసే విశ్లేషణాత్మక ప్రశ్నలు, ఉదాహరణకు పట్టికలలోని మొత్తం కంటెంట్‌లను సమగ్రపరచడం లేదా అనేక పెద్ద పట్టికలను విలీనం చేయడం. ప్రాజెక్ట్ కోడ్ MIT లైసెన్స్ క్రింద పంపిణీ చేయబడింది. నిల్వ ఆకృతి ఇంకా స్థిరీకరించబడలేదు మరియు సంస్కరణ నుండి సంస్కరణకు మారినందున, అభివృద్ధి ఇంకా ప్రయోగాత్మక విడుదలలను రూపొందించే దశలో ఉంది.

DuckDB అధునాతన SQL మాండలికాన్ని అందిస్తుంది, ఇది చాలా క్లిష్టమైన మరియు సమయం తీసుకునే ప్రశ్నలను నిర్వహించడానికి అదనపు సామర్థ్యాలను కలిగి ఉంటుంది. సంక్లిష్ట రకాల (శ్రేణులు, నిర్మాణాలు, యూనియన్‌లు) ఉపయోగం మరియు ఏకపక్ష మరియు సమూహ సహసంబంధమైన సబ్‌క్వెరీలను అమలు చేసే సామర్థ్యం మద్దతిస్తుంది. ఇది CSV మరియు Parquet ఫైల్‌ల నుండి నేరుగా క్వెరీలను అమలు చేయడానికి, ఏకకాలంలో బహుళ ప్రశ్నలను అమలు చేయడానికి మద్దతు ఇస్తుంది. PostgreSQL DBMS నుండి దిగుమతి చేసుకోవడం సాధ్యమవుతుంది.

SQLite నుండి షెల్ కోడ్‌తో పాటు, ప్రాజెక్ట్ ప్రత్యేక లైబ్రరీలో PostgreSQL నుండి ఒక పార్సర్‌ను ఉపయోగిస్తుంది, MonetDB నుండి తేదీ గణిత భాగం, దాని స్వంత విండో ఫంక్షన్‌ల అమలు (సెగ్మెంట్ ట్రీ అగ్రిగేషన్ అల్గోరిథం ఆధారంగా), దీని ఆధారంగా ఒక సాధారణ వ్యక్తీకరణ ప్రాసెసర్. RE2 లైబ్రరీ, దాని స్వంత క్వెరీ ఆప్టిమైజర్ మరియు MVCC కంట్రోల్ మెకానిజం ఏకకాలంలో టాస్క్‌ల ఎగ్జిక్యూషన్ (మల్టీ-వెర్షన్ కాన్‌కరెన్సీ కంట్రోల్), అలాగే హైపర్-పైప్‌లైన్ క్వెరీ ఎగ్జిక్యూషన్ అల్గోరిథం ఆధారంగా వెక్టరైజ్డ్ క్వెరీ ఎగ్జిక్యూషన్ ఇంజన్, ఇది పెద్ద విలువ సెట్‌లను అనుమతిస్తుంది. ఒక ఆపరేషన్‌లో ఒకేసారి ప్రాసెస్ చేయబడుతుంది.

కొత్త విడుదలలో మార్పులు:

  • నిల్వ ఆకృతిని మెరుగుపరచడానికి పని కొనసాగింది. ఒక ఆశావాద డిస్క్ రైటింగ్ మోడ్ అమలు చేయబడింది, దీనిలో ఒక లావాదేవీలో పెద్ద మొత్తంలో డేటాను లోడ్ చేస్తున్నప్పుడు, డేటా కంప్రెస్ చేయబడుతుంది మరియు COMMIT కమాండ్‌తో లావాదేవీ నిర్ధారించబడే వరకు వేచి ఉండకుండా డేటాబేస్ నుండి ఫైల్‌కి స్ట్రీమింగ్ మోడ్‌లో వ్రాయబడుతుంది. . COMMIT కమాండ్ స్వీకరించబడినప్పుడు, డేటా ఇప్పటికే డిస్క్‌కు వ్రాయబడుతుంది మరియు ROLLBACK అమలు చేయబడినప్పుడు, అది విస్మరించబడుతుంది. గతంలో, డేటా మొదట్లో పూర్తిగా మెమరీకి సేవ్ చేయబడింది మరియు కట్టుబడి ఉన్నప్పుడు, అది డిస్క్‌లో సేవ్ చేయబడింది.
  • ప్రత్యేక పట్టికలలో డేటాను సమాంతరంగా లోడ్ చేయడానికి మద్దతు జోడించబడింది, ఇది బహుళ-కోర్ సిస్టమ్‌లలో లోడింగ్ వేగాన్ని గణనీయంగా పెంచడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మునుపటి విడుదలలో, 150-కోర్ CPUలో 10 మిలియన్ అడ్డు వరుసలతో డేటాబేస్ లోడ్ చేయడానికి 91 సెకన్లు పట్టింది, అయితే కొత్త వెర్షన్‌లో ఈ ఆపరేషన్ 17 సెకన్లలో పూర్తవుతుంది. రెండు సమాంతర లోడ్ మోడ్‌లు ఉన్నాయి - రికార్డుల క్రమాన్ని భద్రపరచడం మరియు ఆర్డర్ యొక్క సంరక్షణ లేకుండా.
  • డేటా కంప్రెషన్ కోసం, FSST (ఫాస్ట్ స్టాటిక్ సింబల్ టేబుల్) అల్గోరిథం ఉపయోగించబడుతుంది, ఇది సాధారణ మ్యాచ్‌ల యొక్క సాధారణ నిఘంటువును ఉపయోగించి స్ట్రింగ్స్ లోపల డేటాను ప్యాక్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. కొత్త అల్గోరిథం యొక్క ఉపయోగం పరీక్ష డేటాబేస్ యొక్క పరిమాణాన్ని 761MB నుండి 251MBకి తగ్గించడం సాధ్యపడింది.
  • ఫ్లోటింగ్ పాయింట్ నంబర్‌లను (డబుల్ మరియు ఫ్లోట్) కుదించడానికి చింప్ మరియు పటాస్ అల్గారిథమ్‌లు ప్రతిపాదించబడ్డాయి. మునుపటి గొరిల్లాస్ అల్గారిథమ్‌తో పోలిస్తే, చింప్ అధిక స్థాయి కంప్రెషన్ మరియు వేగవంతమైన డికంప్రెషన్‌ను అందిస్తుంది. పటాస్ అల్గోరిథం కంప్రెషన్ రేషియోలో చింప్ కంటే వెనుకబడి ఉంది, కానీ కంప్రెషన్ స్పీడ్‌లో చాలా వేగంగా ఉంటుంది, ఇది కంప్రెస్ చేయని డేటాను చదవడం నుండి దాదాపు భిన్నంగా ఉండదు.
  • CSV ఫైల్‌ల నుండి డేటాను బహుళ సమాంతర స్ట్రీమ్‌లలోకి లోడ్ చేసే ప్రయోగాత్మక సామర్థ్యం జోడించబడింది (SET experimental_parallel_csv=true), ఇది పెద్ద CSV ఫైల్‌లను లోడ్ చేయడానికి పట్టే సమయాన్ని గణనీయంగా తగ్గిస్తుంది. ఉదాహరణకు, ఈ ఎంపిక ప్రారంభించబడినప్పుడు, 720 MB CSV ఫైల్ కోసం డౌన్‌లోడ్ సమయం 3.5 నుండి 0.6 సెకన్లకు తగ్గించబడింది.
  • ఇండెక్స్ సృష్టి మరియు నిర్వహణ కార్యకలాపాలను సమాంతరంగా అమలు చేసే అవకాశం అమలు చేయబడింది. ఉదాహరణకు, 16 మిలియన్ రికార్డ్‌లతో నిలువు వరుసలో క్రియేట్ ఇండెక్స్ ఆపరేషన్ 5.92 నుండి 1.38 సెకన్లకు తగ్గించబడింది.
  • “COUNT(DISTINCT col)” వ్యక్తీకరణను కలిగి ఉన్న ప్రశ్నలలో అగ్రిగేషన్ ఆపరేషన్‌ల సమాంతరీకరణ ప్రారంభించబడింది.
  • SQL UNION రకానికి మద్దతును జోడించింది, ఇది బహుళ రకాలను ఒక మూలకానికి కట్టుబడి ఉండటానికి అనుమతిస్తుంది (ఉదాహరణకు, “UNION(num INT, లోపం VARCHAR))”).
  • SQL "SELECT"కి బదులుగా "FROM" అనే పదంతో ప్రారంభమయ్యే ప్రశ్నలను రూపొందించే సామర్థ్యాన్ని అందిస్తుంది. ఈ సందర్భంలో, ప్రశ్న "SELECT *"తో ప్రారంభమవుతుందని భావించబడుతుంది.
  • SQL COLUMNS వ్యక్తీకరణకు మద్దతును జోడించింది, ఇది వ్యక్తీకరణను నకిలీ చేయకుండా బహుళ నిలువు వరుసలపై ఆపరేషన్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, "obs నుండి MIN(నిలువు వరుసలు(*)) ఎంచుకోండి;" obs పట్టికలోని ప్రతి నిలువు వరుసకు MIN ఫంక్షన్‌ని అమలు చేస్తుంది మరియు obs నుండి "COLUMNS('val[0-9]+')ని ఎంచుకోండి;" "val" మరియు సంఖ్యలతో కూడిన పేరుతో నిలువు వరుసల కోసం.
  • జాబితాలలోని కార్యకలాపాలకు మద్దతు జోడించబడింది, ఉదాహరణకు, “ [1, 1, 2]] AS l కోసం SELECT [x + 3;”.
  • మెమరీ వినియోగం ఆప్టిమైజ్ చేయబడింది. డిఫాల్ట్‌గా, Linux ప్లాట్‌ఫారమ్ మెమరీ నిర్వహణ కోసం jemalloc లైబ్రరీని ఉపయోగిస్తుంది. మెమరీ పరిమితంగా ఉన్నప్పుడు హాష్ విలీన కార్యకలాపాల పనితీరు గణనీయంగా మెరుగుపడింది.
  • కమాండ్ లైన్ ఇంటర్‌ఫేస్‌కు “.mode డక్‌బాక్స్” అవుట్‌పుట్ మోడ్ జోడించబడింది, ఇది టెర్మినల్ విండో యొక్క వెడల్పును పరిగణనలోకి తీసుకుని మధ్య నిలువు వరుసలను విస్మరిస్తుంది (“SELECT * వంటి పెద్ద సంఖ్యలో నిలువు వరుసలతో ప్రశ్నల ఫలితాలను త్వరగా దృశ్యమానంగా అంచనా వేయడానికి తగినది Tbl నుండి”, ఇది సాధారణ మోడ్‌లో అనేక పంక్తులలో విస్తరించి ఉంటుంది). “.maxrows X” పరామితిని ఉపయోగించి, మీరు ప్రదర్శించబడే అడ్డు వరుసల సంఖ్యను అదనంగా పరిమితం చేయవచ్చు.
  • CLI సందర్భాన్ని పరిగణనలోకి తీసుకుని ఇన్‌పుట్ యొక్క స్వయంపూర్తిని అందిస్తుంది (కీవర్డ్‌లు, పట్టిక పేర్లు, విధులు, నిలువు పేర్లు మరియు ఫైల్ పేర్ల ఇన్‌పుట్ పూర్తయింది).
  • CLI డిఫాల్ట్‌గా ప్రారంభించబడిన ప్రశ్న పురోగతి సూచికను కలిగి ఉంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి