DuckDB 0.6.0, ප්‍රකාශිත විශ්ලේෂණ විමසුම් සඳහා SQLite ප්‍රභේදය

DuckDB 0.6.0 DBMS නිකුතුව ලබා ගත හැකි අතර, SQLite හි සංයුක්තතාවය, කාවැද්දූ පුස්තකාලයක ස්වරූපයෙන් සම්බන්ධ වීමේ හැකියාව, දත්ත සමුදාය එක් ගොනුවක ගබඩා කිරීම සහ පහසු CLI අතුරු මුහුණතක්, මෙවලම් සහ ක්‍රියාත්මක කිරීම සඳහා ප්‍රශස්තිකරණයන් වැනි ගුණාංග ඒකාබද්ධ කරයි. ගබඩා කර ඇති දත්තවල සැලකිය යුතු කොටසක් ආවරණය වන විශ්ලේෂණාත්මක විමසුම්, උදාහරණයක් ලෙස වගු වල සම්පූර්ණ අන්තර්ගතය එකතු කිරීම හෝ විශාල වගු කිහිපයක් ඒකාබද්ධ කිරීම. ව්යාපෘති කේතය MIT බලපත්රය යටතේ බෙදා හරිනු ලැබේ. ගබඩා ආකෘතිය තවමත් ස්ථායී වී නොමැති අතර අනුවාදයෙන් අනුවාදයට වෙනස් වන බැවින් සංවර්ධනය තවමත් පර්යේෂණාත්මක නිකුතු සැකසීමේ අදියරේ පවතී.

DuckDB විසින් උසස් SQL උපභාෂාවක් සපයන අතර එය ඉතා සංකීර්ණ සහ කාලය ගතවන විමසුම් හැසිරවීමට අමතර හැකියාවන් ඇතුළත් වේ. සංකීර්ණ වර්ග (අරාවන්, ව්‍යුහයන්, වෘත්තීය සමිති) භාවිතය සහ අත්තනෝමතික සහ කැදලි සහසම්බන්ධ උප විමසුම් ක්‍රියාත්මක කිරීමේ හැකියාව සඳහා සහාය වේ. එය එකවර විමසුම් කිහිපයක් ධාවනය කිරීමට සහය දක්වයි, CSV සහ Parquet ගොනු වලින් සෘජුවම විමසුම් ධාවනය කරයි. PostgreSQL DBMS වෙතින් ආනයනය කළ හැක.

SQLite වෙතින් ෂෙල් කේතයට අමතරව, ව්‍යාපෘතිය වෙනම පුස්තකාලයක PostgreSQL වෙතින් විග්‍රහයක් භාවිතා කරයි, MonetDB වෙතින් Date Math සංරචකය, කවුළු ශ්‍රිතයන් තමන්ගේම ක්‍රියාත්මක කිරීම (Segment Tree Aggregation algorithm මත පදනම්ව), සාමාන්‍ය ප්‍රකාශන ප්‍රොසෙසරයක් RE2 පුස්තකාලය, එහිම විමසුම් ප්‍රශස්තකාරකය සහ MVCC පාලන යාන්ත්‍රණයක් එකවර කාර්යයන් ක්‍රියාත්මක කිරීම (බහු-අනුවාද සමගාමී පාලනය), මෙන්ම විශාල අගයන් සැකසීමට ඉඩ සලසන Hyper-Pipelining Query Execution ඇල්ගොරිතම මත පදනම් වූ දෛශික විමසුම් ක්‍රියාත්මක කිරීමේ එන්ජිමක්. එක් මෙහෙයුමකදී එකවර සැකසීමට.

නව නිකුතුවේ වෙනස්කම් අතර:

  • ගබඩා ආකෘතිය වැඩිදියුණු කිරීම සඳහා වැඩ දිගටම කරගෙන ගියේය. ශුභවාදී තැටි ලිවීමේ මාදිලියක් ක්‍රියාත්මක කර ඇති අතර, එක් ගනුදෙනුවක විශාල දත්ත කට්ටලයක් පූරණය කරන විට, දත්ත සම්පීඩනය කර, COMMIT විධානය සමඟ ගනුදෙනුව තහවුරු වන තෙක් බලා නොසිට, දත්ත සමුදායෙන් ප්‍රවාහ ප්‍රකාරයට දත්ත ගොනුවකට ලියා ඇත. . COMMIT විධානයක් ලැබුණු විට, දත්ත දැනටමත් තැටියට ලියා ඇති අතර, ROLLBACK ක්රියාත්මක වන විට, එය ඉවත දමනු ලැබේ. මීට පෙර, දත්ත මුලදී සම්පූර්ණයෙන්ම මතකයට සුරකින ලද අතර, කැප වූ විට, එය තැටියට සුරැකිණි.
  • වෙනම වගු වලට දත්ත සමාන්තරව පැටවීම සඳහා සහය එකතු කරන ලද අතර එමඟින් බහු-core පද්ධතිවල පැටවීමේ වේගය සැලකිය යුතු ලෙස වැඩි කිරීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, පෙර නිකුතුවේදී, 150-core CPU මත පේළි මිලියන 10 ක් සහිත දත්ත සමුදායක් පැටවීම තත්පර 91 ක් ගත විය, නමුත් නව අනුවාදයේ මෙම මෙහෙයුම තත්පර 17 කින් අවසන් වේ. සමාන්තර පැටවීමේ ක්‍රම දෙකක් ඇත - වාර්තා අනුපිළිවෙල සංරක්ෂණය කිරීම සහ ඇණවුම සුරැකීමකින් තොරව.
  • දත්ත සම්පීඩනය සඳහා, FSST (වේගවත් ස්ථිතික සංකේත වගුව) ඇල්ගොරිතම භාවිතා කරනු ලැබේ, එය සාමාන්‍ය ගැලපීම් වල පොදු ශබ්ද කෝෂයක් භාවිතයෙන් නූල් තුළ දත්ත ඇසුරුම් කිරීමට ඔබට ඉඩ සලසයි. නව ඇල්ගොරිතම භාවිතයෙන් පරීක්ෂණ දත්ත ගබඩාවේ ප්‍රමාණය 761MB සිට 251MB දක්වා අඩු කිරීමට හැකි විය.
  • පාවෙන ලක්ෂ්‍ය සංඛ්‍යා (DOUBLE සහ FLOAT) සම්පීඩනය කිරීමට Chimp සහ Patas ඇල්ගොරිතම යෝජනා කර ඇත. පෙර Gorillas ඇල්ගොරිතම හා සසඳන විට, Chimp ඉහළ මට්ටමේ සම්පීඩනය සහ වේගවත් විසංයෝජනය සපයයි. Patas ඇල්ගොරිතමය සම්පීඩන අනුපාතයේදී Chimp ට වඩා පසුගාමී වන නමුත්, සම්පීඩනය නොකළ දත්ත කියවීමට වඩා වෙනස් නොවන විසංයෝජන වේගයෙහි වඩා වේගවත් වේ.
  • විශාල 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))").
  • "SELECT" වෙනුවට "FROM" යන වචනයෙන් ආරම්භ වන විමසුම් සැකසීමේ හැකියාව SQL සපයයි. මෙම අවස්ථාවේදී, විමසුම "SELECT *" සමඟ ආරම්භ වන බව උපකල්පනය කෙරේ.
  • SQL විසින් COLUMNS ප්‍රකාශනය සඳහා සහය එක් කර ඇත, එමඟින් ප්‍රකාශනය අනුපිටපත් නොකර තීරු කිහිපයක මෙහෙයුමක් සිදු කිරීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, "obs වෙතින් MIN(COLUMNS(*)) තෝරන්න;" obs වගුවේ එක් එක් තීරු සඳහා MIN ශ්‍රිතය ක්‍රියාත්මක කිරීමට හේතු වනු ඇත, සහ obs වෙතින් "තීරු ('val[0-9]+') තෝරන්න;" "val" සහ අංක වලින් සමන්විත නමක් සහිත තීරු සඳහා.
  • ලැයිස්තු වල මෙහෙයුම් සඳහා සහය එක් කරන ලදී, උදාහරණයක් ලෙස, "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • මතක පරිභෝජනය ප්‍රශස්ත කර ඇත. පෙරනිමියෙන්, Linux වේදිකාව මතක කළමනාකරණය සඳහා jemalloc පුස්තකාලය භාවිතා කරයි. මතකය සීමා වූ විට හැෂ් ඒකාබද්ධ කිරීමේ මෙහෙයුම්වල සැලකිය යුතු ලෙස වැඩිදියුණු කළ කාර්ය සාධනය.
  • පර්යන්ත කවුළුවේ පළල සැලකිල්ලට ගනිමින් මැද තීරු ඉවතලන විධාන රේඛා අතුරුමුහුණතට “.mode duckbox” ප්‍රතිදාන මාදිලිය එක් කරන ලදී (“SELECT * වැනි තීරු විශාල සංඛ්‍යාවක් සහිත විමසුම්වල ප්‍රතිඵල ඉක්මනින් දෘෂ්‍යව තක්සේරු කිරීමට සුදුසු වේ. tbl" සිට, සාමාන්‍ය ආකාරයෙන් පේළි කිහිපයක් පුරා පැතිර ඇත). ".maxrows X" පරාමිතිය භාවිතයෙන්, ඔබට ප්රදර්ශනය වන පේළි ගණන අතිරේකව සීමා කළ හැක.
  • CLI විසින් සන්දර්භය සැලකිල්ලට ගනිමින් ආදානය ස්වයංක්‍රීයව සම්පූර්ණ කිරීම සපයයි (මූලපදවල ආදානය, වගු නම්, ශ්‍රිත, තීරු නාම සහ ගොනු නාම සම්පූර්ණ කර ඇත).
  • CLI හි විමසුම් ප්‍රගති දර්ශකයක් පෙරනිමියෙන් සක්‍රීය කර ඇත.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න