DuckDB 0.6.0፣ SQLite ተለዋጭ የትንታኔ መጠይቆች ታትመዋል

የዱክዲቢ 0.6.0 ዲቢኤምኤስ መለቀቅ ይገኛል የ SQLite ባህሪያትን እንደ ኮምፓክትነት በማጣመር፣ በተከተተ ቤተ-መጽሐፍት ውስጥ የመገናኘት ችሎታ፣ የውሂብ ጎታውን በአንድ ፋይል ውስጥ ማከማቸት እና ምቹ የ CLI በይነገጽ ፣ ከመሳሪያዎች እና ማመቻቸት ጋር። የተከማቸ ውሂብን ጉልህ ክፍል የሚሸፍኑ የትንታኔ መጠይቆች፣ ለምሳሌ ሙሉውን የሠንጠረዦችን ይዘቶች የሚያጠቃልሉ ወይም ብዙ ትላልቅ ሠንጠረዦችን የሚያዋህዱ። የፕሮጀክት ኮድ በ MIT ፈቃድ ስር ተሰራጭቷል። የማጠራቀሚያው ቅርጸት ገና ስላልተረጋጋ እና ከስሪት ወደ ስሪት ስለሚቀየር እድገቱ አሁንም የሙከራ ልቀቶችን በማቋቋም ደረጃ ላይ ነው።

DuckDB በጣም ውስብስብ እና ጊዜ የሚወስዱ መጠይቆችን ለማስተናገድ ተጨማሪ ችሎታዎችን ያካተተ የላቀ SQL ዘዬ ያቀርባል። ውስብስብ ዓይነቶችን (ድርደራዎችን ፣ መዋቅሮችን ፣ ማህበራትን) መጠቀም እና የዘፈቀደ እና የጎጆ ተጓዳኝ ንዑስ መጠይቆችን የማስፈፀም ችሎታ ይደገፋሉ። ብዙ መጠይቆችን በአንድ ጊዜ ማስኬድ ይደግፋል፣ መጠይቆችን ከCSV እና Parquet ፋይሎች በቀጥታ ማሄድ ነው። ከPostgreSQL DBMS ማስመጣት ይቻላል።

ከ SQLite የሼል ኮድ በተጨማሪ፣ ፕሮጀክቱ ከ PostgreSQL በተለየ ቤተ-መጽሐፍት ውስጥ፣ የቀን ሒሳብ ክፍል ከ MonetDB፣ የራሱ የመስኮት ተግባራት አተገባበር (በ Segment Tree Aggregation Algorithm ላይ የተመሰረተ)፣ መደበኛ የገለፃ ፕሮሰሰር ይጠቀማል። የ RE2 ቤተ መፃህፍት፣ የራሱ መጠይቅ አመቻች እና የ MVCC መቆጣጠሪያ ዘዴ በአንድ ጊዜ ተግባራትን መፈጸም (ባለብዙ ስሪት ኮንኩሬሽን ቁጥጥር) እንዲሁም በሃይፐር-ፓይፕሊኒንግ መጠይቅ አፈፃፀም ስልተ-ቀመር ላይ የተመሰረተ የቬክተር የተደረገ መጠይቅ ማስፈጸሚያ ሞተር፣ ይህም ትልቅ የእሴት ስብስቦችን ይፈቅዳል። በአንድ ኦፕሬሽን ውስጥ በአንድ ጊዜ እንዲሰራ.

በአዲሱ ልቀት ላይ የተደረጉ ለውጦች የሚከተሉትን ያካትታሉ፡-

  • የማከማቻ ቅርጸቱን ለማሻሻል ሥራ ቀጥሏል። ብሩህ አመለካከት ያለው የዲስክ አጻጻፍ ሁነታ ተተግብሯል, በአንድ ግብይት ውስጥ ብዙ የውሂብ ስብስብ ሲጭኑ, ውሂቡ ተጨምቆ እና በዥረት ሁነታ ከመረጃ ቋቱ ወደ ፋይል ይፃፋል, በ COMMIT ትዕዛዝ ግብይቱ እስኪረጋገጥ ድረስ ሳይጠብቅ. . COMMIT ትእዛዝ ሲደርስ ውሂቡ አስቀድሞ ወደ ዲስክ ይጻፋል፣ እና ROLLBACK ሲተገበር ይጣላል። ቀደም ሲል, ውሂቡ መጀመሪያ ላይ ሙሉ በሙሉ ወደ ማህደረ ትውስታ ተቀምጧል, እና ሲሰራ, ወደ ዲስክ ተቀምጧል.
  • በባለብዙ-ኮር ስርዓቶች ላይ የመጫኛ ፍጥነት በከፍተኛ ሁኔታ እንዲጨምሩ የሚያስችልዎ ወደ ተለያዩ ሰንጠረዦች ለትይዩ ጭነት ውሂብን ለመጨመር ድጋፍ ታክሏል። ለምሳሌ ባለፈው እትም በ150-ኮር ሲፒዩ 10 ሚሊዮን ረድፎች ያለው ዳታቤዝ መጫን 91 ሰከንድ ፈጅቷል ነገርግን በአዲሱ ስሪት ይህ ክዋኔ በ17 ሰከንድ ውስጥ ተጠናቋል። ሁለት ትይዩ የመጫኛ ሁነታዎች አሉ - የመዝገቦችን ቅደም ተከተል በመጠበቅ እና ያለ ቅደም ተከተል።
  • ለውሂብ መጭመቂያ፣ FSST (ፈጣን የስታቲክ ምልክት ሠንጠረዥ) ስልተ ቀመር ጥቅም ላይ ይውላል፣ይህም በተለመደው ግጥሚያዎች የጋራ መዝገበ-ቃላት በመጠቀም ውሂብን ወደ ሕብረቁምፊዎች ለማሸግ ያስችልዎታል። አዲሱ አልጎሪዝም ጥቅም ላይ መዋሉ የሙከራ ዳታቤዝ መጠኑን ከ 761 ሜባ ወደ 251 ሜባ ለመቀነስ አስችሏል.
  • Chimp እና Patas ስልተ ቀመሮች ተንሳፋፊ ነጥብ ቁጥሮችን (DOUBLE እና FLOAT) ለመጭመቅ ቀርበዋል። ከቀደመው የጎሪላ ስልተ ቀመር ጋር ሲወዳደር ቺምፕ ከፍተኛ የመጨመቅ እና ፈጣን የመበስበስ ደረጃን ይሰጣል። የፓታስ ስልተ ቀመር ከቺምፕ በመጭመቅ ጥምርታ ከኋላ ነው፣ ነገር ግን በዲኮምፕሬሽን ፍጥነት በጣም ፈጣን ነው፣ ይህም ያልተጨመቀ መረጃን ከማንበብ የተለየ አይደለም።
  • ከCSV ፋይሎች ወደ ብዙ ትይዩ ዥረቶች (SET experimental_parallel_csv=true) የመጫን የሙከራ ችሎታ ታክሏል፣ ይህም ትላልቅ CSV ፋይሎችን ለመጫን የሚፈጀውን ጊዜ በእጅጉ ይቀንሳል። ለምሳሌ ይህ አማራጭ ሲነቃ ለ 720 ሜባ የሲኤስቪ ፋይል የማውረድ ጊዜ ከ 3.5 ወደ 0.6 ሰከንድ ቀንሷል።
  • የኢንዴክስ ፈጠራ እና የአስተዳደር ስራዎች ትይዩ የማስፈጸም እድል ተተግብሯል። ለምሳሌ፣ 16 ሚሊዮን መዝገቦች ባለው አምድ ላይ ያለው የCREATE INDEX ክወና ከ5.92 ወደ 1.38 ሰከንድ ቀንሷል።
  • "COUNT(DISTINCT col)" የሚለውን አገላለጽ በያዙ ጥያቄዎች ውስጥ የማጠቃለያ ስራዎችን ትይዩ ማድረግ ነቅቷል።
  • SQL ለ UNION አይነት ድጋፍ አክሏል፣ ይህም ብዙ ዓይነቶች ከአንድ አካል ጋር እንዲተሳሰሩ ያስችላቸዋል (ለምሳሌ፣ “UNION(num INT፣ስህተት VARCHAR))”)።
  • SQL ከ "ምረጥ" ይልቅ "FROM" በሚለው ቃል የሚጀምሩ ጥያቄዎችን የመቅረጽ ችሎታ ይሰጣል. በዚህ ጉዳይ ላይ ጥያቄው የሚጀምረው በ "SELECT *" ነው ተብሎ ይታሰባል.
  • SQL ለ COLUMNS አገላለጽ ድጋፍን አክሏል፣ ይህም አገላለጹን ሳያባዙ በበርካታ አምዶች ላይ ቀዶ ጥገና እንዲያደርጉ ያስችልዎታል። ለምሳሌ፣ “MIN(አምድ(*)) ከ obs ይምረጡ፤” በ obs ሠንጠረዥ ውስጥ ላለው እያንዳንዱ አምድ የMIN ተግባር እንዲፈፀም ያደርጋል፣ እና "COLUMNS('val[0-9]+') from obs;" "ቫል" እና ቁጥሮችን ያካተተ ስም ላላቸው አምዶች.
  • በዝርዝሮች ላይ ላሉ ኦፕሬሽኖች ድጋፍ ታክሏል፣ ለምሳሌ፣ "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • የማህደረ ትውስታ ፍጆታ ተሻሽሏል። በነባሪ የሊኑክስ መድረክ የጄማልሎክ ላይብረሪውን ለማህደረ ትውስታ አስተዳደር ይጠቀማል። የማህደረ ትውስታ ውስን በሚሆንበት ጊዜ የሃሽ ውህደት ስራዎችን በከፍተኛ ሁኔታ የተሻሻለ።
  • የተርሚናል መስኮቱን ስፋት ግምት ውስጥ በማስገባት መካከለኛውን አምዶች የሚያስወግድ ".mode duckbox" የውጤት ሁነታ በትእዛዝ መስመር በይነገጽ ላይ ተጨምሯል (እንደ "ምረጥ * ያሉ ብዙ ቁጥር ያላቸውን የጥያቄዎች ውጤት በፍጥነት ለመገምገም ተስማሚ ነው) ከ tbl", በተለመደው ሁነታ በበርካታ መስመሮች ላይ ተዘርግቷል). የ".maxrows X" መለኪያን በመጠቀም የረድፎችን ብዛት በተጨማሪ መወሰን ይችላሉ።
  • CLI አገባቡን ግምት ውስጥ በማስገባት በራስ ሰር ማጠናቀቅን ያቀርባል (የቁልፍ ቃላት ግቤት፣ የሰንጠረዥ ስሞች፣ ተግባራት፣ የአምድ ስሞች እና የፋይል ስሞች ተሟልተዋል)።
  • CLI በነባሪ የነቃ የጥያቄ ሂደት አመልካች አለው።

ምንጭ: opennet.ru

አስተያየት ያክሉ