ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

වසර තුනකට පෙර Yandex හි වික්ටර් ටර්නාව්ස්කි සහ ඇලෙක්සි මිලොවිඩොව් වේදිකාවේ හයිලෝඩ් ++ කිව්වා, ClickHouse කොතරම් හොඳද, සහ එය මන්දගාමී නොවන ආකාරය. ඒ වගේම ඊළඟ අදියරේ තිබුණා Зайцев Зайцев с වාර්තාව වෙත ගමන් කිරීම ගැන නිවස ක්ලික් කරන්න වෙනත් විශ්ලේෂණාත්මක DBMS වෙතින් සහ නිගමනය සමඟ නිවස ක්ලික් කරන්න, ඇත්ත වශයෙන්ම, හොඳයි, නමුත් ඉතා පහසු නොවේ. 2016 දී සමාගම විට ලයිෆ්ස්ටයිට්, ඇලෙක්සැන්ඩර් එවකට සේවය කළ ස්ථානය, බහු-පෙටාබයිට් විශ්ලේෂණ පද්ධතියක් බවට පරිවර්තනය කරමින් සිටියේය නිවස ක්ලික් කරන්න, එය නොදන්නා අන්තරායන්ගෙන් පිරුණු සිත් ඇදගන්නාසුළු "කහ ගඩොල් පාරක්" විය - නිවස ක්ලික් කරන්න එදා ඒක බිම් බෝම්බයක් වගේ.

වසර තුනකට පසුව නිවස ක්ලික් කරන්න වඩා හොඳ විය - මෙම කාලය තුළ ඇලෙක්සැන්ඩර් Altinity සමාගම ආරම්භ කළ අතර එය මිනිසුන්ට යාමට පමණක් නොව නිවස ක්ලික් කරන්න ව්‍යාපෘති දුසිම් ගණනක්, නමුත් Yandex හි සගයන් සමඟ එක්ව නිෂ්පාදනයම වැඩි දියුණු කරයි. දැන් නිවස ක්ලික් කරන්න තවමත් නොසැලකිලිමත් ගමනක් නොවේ, නමුත් තවදුරටත් බිම් බෝම්බයක් නොවේ.

ඇලෙක්සැන්ඩර් 2003 සිට බෙදා හරින ලද පද්ධති සමඟ වැඩ කරමින් විශාල ව්‍යාපෘති සංවර්ධනය කරයි MySQL, Oracle и Vertica. අන්තිම මත හයිලෝඩ් ++ 2019 භාවිතා කිරීමේ පුරෝගාමීන්ගෙන් කෙනෙකි ඇලෙක්සැන්ඩර් නිවස ක්ලික් කරන්න, දැන් මොකක්ද මේ DBMS කියන්නේ කියලා. අපි ප්රධාන ලක්ෂණ ගැන ඉගෙන ගන්නෙමු නිවස ක්ලික් කරන්න: එය අනෙකුත් පද්ධති වලින් වෙනස් වන්නේ කෙසේද සහ කුමන අවස්ථා වලදී එය භාවිතා කිරීම වඩාත් ඵලදායී වේ. උදාහරණ භාවිතා කරමින්, අපි පදනම් වූ පද්ධති ගොඩනැගීම සඳහා මෑතකාලීන සහ ව්‍යාපෘති-පරීක්‍ෂිත භාවිතයන් දෙස බලමු නිවස ක්ලික් කරන්න.


අතීතාවර්ජනය: වසර 3 කට පෙර සිදු වූ දේ

වසර තුනකට පෙර අපි සමාගම මාරු කළා ලයිෆ්ස්ටයිට් මත නිවස ක්ලික් කරන්න වෙනත් විශ්ලේෂණ දත්ත ගබඩාවකින්, සහ දැන්වීම් ජාල විශ්ලේෂණ සංක්‍රමණය මේ ආකාරයට දිස් විය:

  • ජූනි 2016. දී විවෘත මූලාශ්රය පෙනී නිවස ක්ලික් කරන්න සහ අපගේ ව්‍යාපෘතිය ආරම්භ කරන ලදී;
  • අගෝස්තු. සංකල්පයේ සාධනය: විශාල වෙළඳ ප්‍රචාරණ ජාලය, යටිතල පහසුකම් සහ ටෙරා බයිට් 200-300 දත්ත;
  • ඔක්තෝම්බර්. පළමු නිෂ්පාදන දත්ත;
  • දෙසැම්බර්. සම්පූර්ණ නිෂ්පාදන භාරය දිනකට සිදුවීම් බිලියන 10-50 කි.
  • ජූනි 2017. පරිශීලකයන්ගේ සාර්ථක සංක්‍රමණය නිවස ක්ලික් කරන්න, සර්වර් 2,5 ක පොකුරක් මත දත්ත පෙටාබයිට් 60 ක්.

සංක්‍රමණ ක්‍රියාවලියේදී ඒ පිළිබඳ අවබෝධයක් වර්ධනය විය නිවස ක්ලික් කරන්න වැඩ කිරීමට ප්රසන්න හොඳ පද්ධතියකි, නමුත් මෙය Yandex හි අභ්යන්තර ව්යාපෘතියකි. එබැවින්, සූක්ෂ්මතා ඇත: Yandex පළමුව තමන්ගේම අභ්‍යන්තර ගනුදෙනුකරුවන් සමඟ කටයුතු කරන අතර පසුව ප්‍රජාව සහ බාහිර පරිශීලකයින්ගේ අවශ්‍යතා සමඟ පමණක් කටයුතු කරනු ඇති අතර ClickHouse පසුව බොහෝ ක්‍රියාකාරී ක්ෂේත්‍රවල ව්‍යවසාය මට්ටමට ළඟා නොවීය. ඒකයි අපි 2017 මාර්තු මාසයේදී Altinity ආරම්භ කළේ හදන්න නිවස ක්ලික් කරන්න Yandex සඳහා පමණක් නොව අනෙකුත් පරිශීලකයින් සඳහා ද වේගවත් හා පහසු වේ. දැන් අපි:

  • අපි පුහුණු කර විසඳුම් ගොඩනඟා ගැනීමට උදව් කරන්නෙමු නිවස ක්ලික් කරන්න ගනුදෙනුකරුවන් කරදරයට පත් නොවන පරිදි සහ විසඳුම අවසානයේ ක්‍රියාත්මක වන පරිදි;
  • අපි 24/7 සහාය ලබා දෙන්නෙමු නිවස ක්ලික් කරන්න- ස්ථාපනයන්;
  • අපි අපේම පරිසර පද්ධති ව්‍යාපෘති සංවර්ධනය කරමු;
  • අපි ක්‍රියාශීලීව අප වෙනුවෙන් කැප වෙමු නිවස ක්ලික් කරන්න, ඇතැම් විශේෂාංග දැකීමට අවශ්‍ය පරිශීලකයින්ගෙන් ඉල්ලීම්වලට ප්‍රතිචාර දැක්වීම.

ඇත්ත වශයෙන්ම, අපි ගමන් කිරීමට උදව් කරන්නෙමු නිවස ක්ලික් කරන්න с MySQL, Vertica, ඔරකල්, ග්රීන්ප්ලම්, Redshift සහ අනෙකුත් පද්ධති. අපි විවිධ ක්‍රියාමාර්ගවලට සම්බන්ධ වී ඇති අතර, ඒවා සියල්ලම සාර්ථක වී ඇත.

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

ඇයි යන්න නිවස ක්ලික් කරන්න

වේගය අඩු නොවේ! මෙය ප්රධාන හේතුවයි. නිවස ක්ලික් කරන්න - විවිධ අවස්ථා සඳහා ඉතා වේගවත් දත්ත සමුදාය:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

දිගු කලක් තිස්සේ මිනිසුන් සමඟ වැඩ කරන පුද්ගලයින්ගෙන් අහඹු උපුටා දැක්වීම් නිවස ක්ලික් කරන්න.

පරිමාණය වෙනත් සමහර දත්ත සමුදාය මත ඔබට එක් දෘඪාංගයක් මත හොඳ කාර්ය සාධනයක් ලබා ගත හැක, නමුත් නිවස ක්ලික් කරන්න ඔබට සර්වර් එකතු කිරීමෙන් සිරස් අතට පමණක් නොව තිරස් අතටද පරිමාණය කළ හැකිය. සෑම දෙයක්ම අප කැමති පරිදි සුමටව ක්රියා නොකරයි, නමුත් එය ක්රියා කරයි. ඔබේ ව්යාපාරය වර්ධනය වන විට ඔබට පද්ධතිය පුළුල් කළ හැකිය. දැන් විසඳුමෙන් අප සීමා නොවී සිටීම වැදගත් වන අතර සංවර්ධනය සඳහා සෑම විටම විභවය පවතී.

අතේ ගෙන යා හැකි හැකියාව. එක දෙයකට ඇලීමක් නෑ. උදාහරණයක් ලෙස, සමඟ ඇමසන් රෙඩ්ෂිෆ්ට් කොහේ හරි යන්න අමාරුයි. ඒ නිවස ක්ලික් කරන්න ඔබට එය ඔබේ ලැප්ටොප් පරිගණකයේ, සේවාදායකයේ ස්ථාපනය කළ හැකිය, එය වලාකුළට යෙදවිය හැකිය, වෙත යන්න කුබර්නෙට්ස් - යටිතල පහසුකම් ක්රියාත්මක කිරීම සඳහා සීමාවන් නොමැත. මෙය සෑම කෙනෙකුටම පහසු වන අතර තවත් බොහෝ සමාන දත්ත සමුදායන් ගැන පුරසාරම් දෙඩීමට නොහැකි විශාල වාසියක් මෙයයි.

නම්‍යශීලී බව. නිවස ක්ලික් කරන්න එක් දෙයකින් නතර නොවේ, උදාහරණයක් ලෙස, Yandex.Metrica, නමුත් වැඩි වැඩියෙන් විවිධ ව්යාපෘති සහ කර්මාන්තවල සංවර්ධනය වන අතර භාවිතා වේ. නව ගැටළු විසඳීම සඳහා නව හැකියාවන් එකතු කිරීමෙන් එය පුළුල් කළ හැකිය. උදාහරණයක් ලෙස, දත්ත ගබඩාවක ලඝු-සටහන් ගබඩා කිරීම නරක පුරුදු බව විශ්වාස කෙරේ, එබැවින් ඔවුන් ඉදිරිපත් විය Elasticsearch. නමුත් නම්‍යශීලීභාවයට ස්තූතියි නිවස ක්ලික් කරන්න, ඔබට එය තුළ ලඝු-සටහන් ගබඩා කළ හැකි අතර, බොහෝ විට මෙය වඩා හොඳ වේ Elasticsearch - හිදී නිවස ක්ලික් කරන්න මේ සඳහා 10 ගුණයකින් අඩු යකඩ අවශ්‍ය වේ.

නිදහස් විවෘත කේතය. ඔබ කිසිවක් සඳහා ගෙවිය යුතු නැත. ඔබගේ ලැප්ටොප් හෝ සේවාදායකයේ පද්ධතිය ස්ථාපනය කිරීමට අවසර සාකච්ඡා කිරීමට අවශ්ය නැත. සැඟවුණු ගාස්තු නැත. ඒ අතරම, වෙනත් කිසිදු විවෘත මූලාශ්‍ර දත්ත සමුදා තාක්ෂණයක් සමඟ වේගයෙන් තරඟ කළ නොහැක නිවස ක්ලික් කරන්න. MySQL, MariaDB, Greenplum - ඒවා සියල්ලම වඩා මන්දගාමී වේ.

ප්රජාව, ධාවකය සහ විනෝද. දී නිවස ක්ලික් කරන්න විශිෂ්ට ප්‍රජාව: හමුවීම්, කතාබස් සහ ඇලෙක්සි මිලොවිඩොව්, ඔහුගේ ශක්තියෙන් හා ශුභවාදීත්වයෙන් අප සියල්ලන්ම අය කරයි.

ClickHouse වෙත ගමන් කිරීම

වෙත යාමට නිවස ක්ලික් කරන්න කිසියම් හේතුවක් නිසා, ඔබට අවශ්‍ය වන්නේ කරුණු තුනක් පමණි:

  • සීමාවන් තේරුම් ගන්න නිවස ක්ලික් කරන්න සහ එය නොගැලපෙන දේ.
  • ප්‍රයෝජන ගන්න තාක්ෂණය සහ එහි විශාලතම ශක්තීන්.
  • අත්හදා බැලීම. එය ක්‍රියාත්මක වන ආකාරය පවා තේරුම් ගැනීම නිවස ක්ලික් කරන්න, එය වේගවත් වන්නේ කවදාද, එය මන්දගාමී වන්නේ කවදාද, එය වඩා හොඳ වන්නේ කවදාද සහ නරක අතට හැරෙන්නේ කවදාදැයි අනාවැකි කිව නොහැක. එබැවින් එය උත්සාහ කරන්න.

චලනය වීමේ ගැටලුව

ඇත්තේ එක් "නමුත්" පමණි: ඔබ මාරු කරන්නේ නම් නිවස ක්ලික් කරන්න වෙනත් දෙයකින්, එවිට සාමාන්‍යයෙන් යමක් වැරදී යයි. අපගේ ප්‍රියතම දත්ත ගබඩාවේ ක්‍රියාත්මක වන සමහර පුරුදු සහ දේවල් වලට අපි පුරුදු වී සිටිමු. උදාහරණයක් ලෙස, වැඩ කරන ඕනෑම කෙනෙකුට SQL-දත්ත සමුදායන් පහත සඳහන් කාර්යයන් සමූහය අනිවාර්ය ලෙස සලකයි:

  • ගනුදෙනු;
  • සීමා කිරීම්;
  • අනුකූලතාව;
  • දර්ශක;
  • යාවත්කාලීන/මකන්න;
  • NULLs;
  • මිලි තත්පර;
  • ස්වයංක්රීය ආකාරයේ වාත්තු;
  • බහු සන්ධි;
  • අත්තනෝමතික කොටස්;
  • පොකුරු කළමනාකරණ මෙවලම්.

බඳවා ගැනීම අනිවාර්ය වේ, නමුත් වසර තුනකට පෙර නිවස ක්ලික් කරන්න මෙම කාර්යයන් කිසිවක් නොතිබුණි! දැන් ක්‍රියාවට නංවා නැති දේවලින් අඩකටත් වඩා අඩු ප්‍රමාණයක් ඉතිරිව ඇත: ගනුදෙනු, සීමා කිරීම්, අනුකූලතාව, මිලි තත්පර සහ වර්ග වාත්තු කිරීම.

සහ ප්රධාන දෙය නම් එය තුළ ය නිවස ක්ලික් කරන්න සමහර සම්මත භාවිතයන් සහ ප්‍රවේශයන් ක්‍රියා නොකරයි හෝ අප පුරුදු වී සිටිනවාට වඩා වෙනස් ලෙස ක්‍රියා නොකරයි. තුළ දිස්වන සෑම දෙයක්ම නිවස ක්ලික් කරන්න, අදාල වන්නේ "ක්ලික් හවුස් මාර්ගය", i.e. කාර්යයන් අනෙකුත් දත්ත සමුදායන්ගෙන් වෙනස් වේ. උදාහරණ වශයෙන්:

  • දර්ශක තෝරාගෙන නැත, නමුත් මඟ හරිනු ලැබේ.
  • යාවත්කාලීන/මකන්න සමමුහුර්ත නොවේ, නමුත් අසමමිතික.
  • සම්බන්ධවීම් කිහිපයක් ඇත, නමුත් විමසුම් සැලසුම්කරුවෙකු නොමැත. ඒවා සිදු කරන්නේ කෙසේද යන්න සාමාන්‍යයෙන් දත්ත සමුදා ලෝකයේ පුද්ගලයින්ට එතරම් පැහැදිලි නැත.

ක්ලික් හවුස් ස්ක්‍රිප්ට්

1960 දී හංගේරියානු සම්භවයක් ඇති ඇමරිකානු ගණිතඥයෙක් විග්නර් ඊ.පී ලිපියක් ලිව්වා"ස්වාභාවික විද්‍යාවන්හි ගණිතයේ අසාධාරණ සඵලතාවය” (“ස්වභාවික විද්‍යාවන්හි ගණිතයේ නොතේරෙන බලපෑම”) අප අවට ලෝකය කිසියම් හේතුවක් නිසා ගණිතමය නීති මගින් හොඳින් විස්තර කර ඇත. ගණිතය යනු වියුක්ත විද්‍යාවක් වන අතර ගණිතමය ස්වරූපයෙන් ප්‍රකාශිත භෞතික නීති සුළුපටු නොවේ, සහ විග්නර් ඊ.පී මෙය ඉතා අමුතු දෙයක් බව අවධාරණය කළේය.

මට පෙනෙන විදියට, නිවස ක්ලික් කරන්න - එකම අමුතුකම. විග්නර් නැවත භාවිතා කිරීම සඳහා, අපට මෙය පැවසිය හැකිය: සිතාගත නොහැකි කාර්යක්ෂමතාව පුදුම සහගතය නිවස ක්ලික් කරන්න විවිධ විශ්ලේෂණාත්මක යෙදුම්වල!

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

උදාහරණයක් ලෙස, අපි ගනිමු තත්‍ය කාලීන දත්ත ගබඩාව, දත්ත අඛණ්ඩව පාහේ පටවනු ලැබේ. අපට එය දෙවන ප්‍රමාදයකින් ඉල්ලීම් ලැබීමට අවශ්‍යයි. කරුණාකර - එය භාවිතා කරන්න නිවස ක්ලික් කරන්න, මන්ද එය නිර්මාණය කරන ලද දර්ශනය මෙයයි. නිවස ක්ලික් කරන්න එය වෙබයේ පමණක් නොව, අලෙවිකරණයේ සහ මූල්‍ය විශ්ලේෂණවලද භාවිතා වන්නේ හරියටම මෙයයි. AdTech, මෙන්ම in වංචා අනාවරණයn. තුල තත්‍ය කාලීන දත්ත ගබඩාව "තරු" හෝ "හිම පියලි" වැනි සංකීර්ණ ව්‍යුහගත යෝජනා ක්‍රමයක් භාවිතා වේ, බොහෝ වගු ඇත JOIN (සමහර විට බහු), සහ දත්ත සාමාන්‍යයෙන් සමහර පද්ධතිවල ගබඩා කර වෙනස් වේ.

අපි තවත් අවස්ථාවක් ගනිමු - කාල මාලාව: උපාංග, ජාල, භාවිත සංඛ්‍යාලේඛන, අන්තර්ජාලයේ දේවල් නිරීක්ෂණය කිරීම. මෙහිදී අපට නියමිත වේලාවට ඇණවුම් කරන ලද තරමක් සරල සිදුවීම් හමු වේ. නිවස ක්ලික් කරන්න මේ සඳහා මුලින් සංවර්ධනය නොකළ නමුත් හොඳින් ක්‍රියා කරන බව පෙන්නුම් කර ඇත, ඒ නිසා විශාල සමාගම් භාවිතා කරයි නිවස ක්ලික් කරන්න තොරතුරු අධීක්ෂණය සඳහා ගබඩාවක් ලෙස. සුදුසු දැයි සොයා බැලීමට නිවස ක්ලික් කරන්න කාල ශ්‍රේණි සඳහා, අපි ප්‍රවේශය සහ ප්‍රතිඵල මත පදනම්ව මිණුම් ලකුණක් සකස් කළෙමු InfluxDB и කාල සටහන ඩී.බී - විශේෂිත කාල මාලාව දත්ත සමුදායන්. එය හැරුණා, ඒ නිවස ක්ලික් කරන්න, එවැනි කාර්යයන් සඳහා ප්‍රශස්තකරණයකින් තොරව වුවද, විදේශීය ක්ෂේත්‍රයකදී ජයග්‍රහණය කරයි:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

В කාල මාලාව සාමාන්යයෙන් පටු වගුවක් භාවිතා වේ - කුඩා තීරු කිහිපයක්. බොහෝ දත්ත නිරීක්‍ෂණයෙන් පැමිණිය හැකිය—තත්පරයට වාර්තා මිලියන ගණනක්—එසේම ඒවා සාමාන්‍යයෙන් කුඩා පිපිරුම්වලින් පැමිණේ (තත්ය කාලය ප්රවාහය). එබැවින්, වෙනත් ඇතුළත් කිරීමේ ස්ක්‍රිප්ට් එකක් අවශ්‍ය වන අතර, විමසුම් වලටම ඔවුන්ගේම විශේෂතා ඇත.

ලොග් කළමණාකරණය. දත්ත ගබඩාවකට ලොග් එකතු කිරීම සාමාන්‍යයෙන් නරක ය, නමුත් නිවස ක්ලික් කරන්න ඉහත විස්තර කර ඇති පරිදි සමහර අදහස් සමඟ මෙය කළ හැකිය. බොහෝ සමාගම් භාවිතා කරයි නිවස ක්ලික් කරන්න හරියටම මෙම අරමුණ සඳහා. මෙම අවස්ථාවේදී, අපි සම්පූර්ණ ලඝු-සටහන් ගබඩා කරන පැතලි පුළුල් වගුවක් භාවිතා කරමු (උදාහරණයක් ලෙස, පෝරමයේ JSON), හෝ කෑලි කපා. දත්ත සාමාන්‍යයෙන් විශාල කාණ්ඩවල (ගොනු) පටවනු ලබන අතර, අපි යම් ක්ෂේත්‍රයකින් සොයන්නෙමු.

මෙම එක් එක් කාර්යය සඳහා, විශේෂිත දත්ත සමුදායන් සාමාන්යයෙන් භාවිතා වේ. නිවස ක්ලික් කරන්න කෙනෙකුට ඒ සියල්ල කළ හැකි අතර එය ඔවුන් අභිබවා යයි. අපි දැන් සමීපව බලමු කාල මාලාව දර්ශනය, සහ නිවැරදිව "උයන්න" කෙසේද නිවස ක්ලික් කරන්න මෙම අවස්ථාව සඳහා.

කාල මාලාව

වර්තමානයේ මෙය ප්රධාන දර්ශනය වේ නිවස ක්ලික් කරන්න සම්මත විසඳුම ලෙස සැලකේ. කාල මාලාව කාලයත් සමඟ යම් ක්‍රියාවලියක සිදුවන වෙනස්වීම් නියෝජනය කරන කාලානුරූපී සිදුවීම් සමූහයකි. උදාහරණයක් ලෙස, මෙය දිනකට හෘද ස්පන්දන වේගය හෝ පද්ධතියේ ක්රියාවලීන් සංඛ්යාව විය හැකිය. සමහර මානයන් සමඟ කාලය කිනිතුල්ලන් ලබා දෙන සෑම දෙයක්ම වේ කාල මාලාව:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

මෙවැනි සිදුවීම් බොහොමයක් පැමිණෙන්නේ නිරීක්‍ෂණයෙනි. මෙය වෙබය නිරීක්ෂණය කිරීම පමණක් නොව සැබෑ උපාංග ද විය හැකිය: කාර්, කාර්මික පද්ධති, IoT, කර්මාන්තශාලා හෝ මිනිසුන් රහිත කුලී රථ, Yandex දැනටමත් දමා ඇති කඳේ නිවස ක්ලික් කරන්න- සේවාදායකය.

උදාහරණයක් ලෙස, නැව් වලින් දත්ත එකතු කරන සමාගම් තිබේ. සෑම තත්පර කිහිපයකට වරක්, බහාලුම් නෞකාවේ සංවේදක විවිධ මිනුම් සිය ගණනක් යවයි. ඉංජිනේරුවන් ඒවා අධ්‍යයනය කර, ආකෘති ගොඩනඟා, යාත්‍රාව කෙතරම් කාර්යක්ෂමව භාවිතා කරන්නේද යන්න තේරුම් ගැනීමට උත්සාහ කරයි, මන්ද බහාලුම් නෞකාවක් තත්පරයක්වත් නිෂ්ක්‍රීය නොවිය යුතුය. ඕනෑම අක්‍රිය කාලයක් මුදල් අලාභයකි, එබැවින් නැවතුම් අවම වන පරිදි මාර්ගය පුරෝකථනය කිරීම වැදගත් වේ.

වර්තමානයේ මනින විශේෂිත දත්ත සමුදායන් වර්ධනය වෙමින් පවතී කාල මාලාව. අඩවියේ ඩීබී එන්ජින් විවිධ දත්ත සමුදායන් කෙසේ හෝ ශ්‍රේණිගත කර ඇති අතර, ඔබට ඒවා වර්ගය අනුව බැලිය හැක:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

වේගයෙන් වර්ධනය වන වර්ගය වේ කාල මාලාවs. ප්‍රස්තාර දත්ත සමුදායන් ද වර්ධනය වෙමින් පවතී, නමුත් කාල මාලාවපසුගිය වසර කිහිපය තුළ වේගයෙන් වර්ධනය වෙමින් පවතී. මෙම දත්ත සමුදායේ පවුලේ සාමාන්‍ය නියෝජිතයන් වේ InfluxDB, Prometheus, KDB, කාල සටහන ඩී.බී (ගොඩනැගුණු PostgreSQL), විසඳුම් ඇමේසන්. නිවස ක්ලික් කරන්න මෙහි ද භාවිතා කළ හැකි අතර භාවිතා වේ. මම ඔබට පොදු උදාහරණ කිහිපයක් දෙන්නම්.

පුරෝගාමීන්ගෙන් එකක් වන්නේ සමාගමයි CloudFlare (සීඩීඑන්-සපයන්නා). ඔවුන් ඒවා නිරීක්ෂණය කරයි සීඩීඑන් හරහා නිවස ක්ලික් කරන්න (DNS-ඉල්ලීම්, HTTP- විමසුම්) විශාල බරක් සමඟ - තත්පරයට සිදුවීම් මිලියන 6 ක්. හැම දෙයක්ම හරහා යනවා කාෆ්කා, වෙත යයි නිවස ක්ලික් කරන්න, එය තත්‍ය කාලීනව පද්ධතියේ සිදුවීම්වල උපකරණ පුවරු බැලීමේ හැකියාව සපයයි.

Comcast - ඇමරිකා එක්සත් ජනපදයේ විදුලි සංදේශයේ නායකයින්ගෙන් එක් අයෙක්: අන්තර්ජාලය, ඩිජිටල් රූපවාහිනිය, දුරකථන. ඔවුන් සමාන පාලන පද්ධතියක් නිර්මාණය කළහ සීඩීඑන් රාමුව තුළ විවෘත කේතය ව්යාපෘතියකි Apache රථවාහන පාලනය ඔබගේ විශාල දත්ත සමඟ වැඩ කිරීමට. නිවස ක්ලික් කරන්න විශ්ලේෂණ සඳහා පසුබිමක් ලෙස භාවිතා කරයි.

පර්කෝනා ඉදි කර ඇත නිවස ක්ලික් කරන්න ඔබේ ඇතුළත පීඑම්එම්විවිධ නිරීක්ෂණ ගබඩා කිරීමට MySQL.

විශේෂිත අවශ්යතා

කාල ශ්‍රේණි දත්ත සමුදායන්ට ඔවුන්ගේම විශේෂිත අවශ්‍යතා ඇත.

  • බොහෝ නියෝජිතයන්ගෙන් වේගවත් ඇතුළත් කිරීම. අපිට ගොඩක් streams වල දත්ත ඉතා ඉක්මනින් ඇතුලත් කරන්න වෙනවා. නිවස ක්ලික් කරන්න එහි සියලුම ඇතුළු කිරීම් අවහිර නොවන බැවින් එය හොඳින් මෙය කරයි. ඕනෑම ඇතුල් කරන්න තැටියේ නව ගොනුවක් වන අතර කුඩා ඇතුල් කිරීම් එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් බෆර කළ හැක. තුල නිවස ක්ලික් කරන්න වරකට එක පේළියකට වඩා විශාල කණ්ඩායම් වශයෙන් දත්ත ඇතුළත් කිරීම වඩා හොඳය.
  • නම්යශීලී යෝජනා ක්රමය. මෙම කාල මාලාව අපි සාමාන්‍යයෙන් දත්ත ව්‍යුහය සම්පූර්ණයෙන්ම දන්නේ නැහැ. විශේෂිත යෙදුමක් සඳහා අධීක්ෂණ පද්ධතියක් ගොඩනගා ගත හැකි නමුත් පසුව එය වෙනත් යෙදුමක් සඳහා භාවිතා කිරීමට අපහසු වේ. මෙය වඩාත් නම්යශීලී යෝජනා ක්රමයක් අවශ්ය වේ. නිවස ක්ලික් කරන්න, එය දැඩි ලෙස ටයිප් කරන ලද පදනමක් වුවද, මෙය කිරීමට ඔබට ඉඩ සලසයි.
  • කාර්යක්ෂම ගබඩා කිරීම සහ දත්ත අමතක කිරීම. සාමාන්යයෙන් තුළ කාල මාලාව දත්ත විශාල ප්‍රමාණයක්, එබැවින් එය හැකි තරම් කාර්යක්ෂමව ගබඩා කළ යුතුය. උදාහරණයක් ලෙස, at InfluxDB හොඳ සම්පීඩනය එහි ප්රධාන ලක්ෂණයයි. නමුත් ගබඩා කිරීමට අමතරව, ඔබට පැරණි දත්ත "අමතක" කිරීමට සහ යම් ආකාරයක කිරීමට හැකි විය යුතුය පහත හෙලීම - එකතු කිරීම් ස්වයංක්‍රීයව ගණන් කිරීම.
  • එකතු කළ දත්ත මත වේගවත් විමසුම්. සමහර විට මිලි තත්පරවල නිරවද්‍යතාවයකින් අවසාන මිනිත්තු 5 දෙස බැලීම සිත්ගන්නා සුළුය, නමුත් මාසික දත්ත මිනිත්තුව හෝ දෙවන කැටිති අවශ්‍ය නොවනු ඇත - සාමාන්‍ය සංඛ්‍යාලේඛන ප්‍රමාණවත් වේ. මේ ආකාරයේ සහය අවශ්‍ය වේ, එසේ නොමැතිනම් මාස 3ක ඉල්ලීමක් සම්පූර්ණ කිරීමට ඉතා දිගු කාලයක් ගතවනු ඇත නිවස ක්ලික් කරන්න.
  • " වැනි ඉල්ලීම්අවසාන කරුණ, ලෙස». මේවා සඳහා සාමාන්‍ය වේ කාල මාලාව විමසුම්: මොහොතකට පද්ධතියේ අවසාන මිනුම හෝ තත්වය දෙස බලන්න t. මේවා දත්ත සමුදායක් සඳහා ඉතා ප්‍රසන්න විමසුම් නොවේ, නමුත් ඔබට ඒවා ක්‍රියාත්මක කිරීමට ද හැකි විය යුතුය.
  • "ඇලවීම" කාල මාලාව. කාල මාලාව කාල මාලාවක් වේ. කාල ශ්‍රේණි දෙකක් තිබේ නම්, ඒවා බොහෝ විට සම්බන්ධ කිරීම හා සම්බන්ධ කිරීම අවශ්‍ය වේ. සියලුම දත්ත සමුදායන්හි මෙය කිරීම පහසු නැත, විශේෂයෙන් නොගැලපෙන කාල ශ්‍රේණි සමඟ: මෙන්න කාල ලකුණු කිහිපයක්, තවත් ඒවා තිබේ. ඔබට සාමාන්‍යය සලකා බැලිය හැකිය, නමුත් හදිසියේම එහි සිදුරක් පවතිනු ඇත, එබැවින් එය පැහැදිලි නැත.

මෙම අවශ්‍යතා සපුරාලන්නේ කෙසේදැයි බලමු නිවස ක්ලික් කරන්න.

යෝජනා ක්රමය

В නිවස ක්ලික් කරන්න සඳහා යෝජනා ක්රමය කාල මාලාව දත්තවල විධිමත්භාවයේ මට්ටම අනුව විවිධ ආකාරවලින් සිදු කළ හැක. අපි සියලු මිතික කලින් දැනගත් විට සාමාන්‍ය දත්ත මත පද්ධතියක් ගොඩනගා ගත හැකිය. උදාහරණයක් ලෙස, මම මෙය කළා CloudFlare අධීක්ෂණය සමඟ සීඩීඑන් හොඳින් ප්‍රශස්ත පද්ධතියකි. සමස්ත යටිතල පහසුකම් සහ විවිධ සේවාවන් නිරීක්ෂණය කරන වඩාත් පොදු පද්ධතියක් ගොඩනගා ගත හැකිය. අක්‍රමවත් දත්ත සම්බන්ධයෙන්, අප නිරීක්ෂණය කරන්නේ කුමක් දැයි අපි කල්තියා නොදනිමු - සහ මෙය බොහෝ විට පොදු අවස්ථාවයි.

නිතිපතා දත්ත. තීරු. යෝජනා ක්රමය සරලයි - අවශ්ය වර්ග සහිත තීරු:

CREATE TABLE cpu (
  created_date Date DEFAULT today(),  
  created_at DateTime DEFAULT now(),  
  time String,  
  tags_id UInt32,  /* join to dim_tag */
  usage_user Float64,  
  usage_system Float64,  
  usage_idle Float64,  
  usage_nice Float64,  
  usage_iowait Float64,  
  usage_irq Float64,  
  usage_softirq Float64,  
  usage_steal Float64,  
  usage_guest Float64,  
  usage_guest_nice Float64
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

මෙය යම් ආකාරයක පද්ධති පැටවීමේ ක්‍රියාකාරකම් නිරීක්ෂණය කරන සාමාන්‍ය වගුවකි (පරිශීලක, පද්ධති, අලස, ලස්සන) සරල සහ පහසු, නමුත් නම්යශීලී නොවේ. අපට වඩාත් නම්‍යශීලී යෝජනා ක්‍රමයක් අවශ්‍ය නම්, අපට අරා භාවිතා කළ හැක.

අක්‍රමවත් දත්ත. අරා:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  )
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

ව්යුහය කැදැල්ල අරා දෙකක් වේ: metrics.name и metrics.value. මෙහිදී ඔබට එවැනි අත්තනෝමතික නිරීක්ෂණ දත්ත එක් එක් සිදුවීම සඳහා නම් මාලාවක් සහ මිනුම් මාලාවක් ලෙස ගබඩා කළ හැකිය. තවදුරටත් ප්රශස්තකරණය සඳහා, එවැනි එක් ව්යුහයක් වෙනුවට, ඔබට කිහිපයක් සෑදිය හැකිය. උදාහරණයක් ලෙස, එකක් සඳහා පාවෙන අය-අගය, තවත් - සඳහා int- තේරුම නිසා int මට වඩා කාර්යක්ෂමව ගබඩා කිරීමට අවශ්යයි.

නමුත් එවැනි ව්යුහයකට ප්රවේශ වීමට වඩා අපහසු වේ. පළමු දර්ශකයේ සහ පසුව අරාවේ අගයන් ඉවත් කිරීමට විශේෂ කාර්යයන් භාවිතා කරමින් ඔබට විශේෂ ඉදිකිරීමක් භාවිතා කිරීමට සිදුවනු ඇත:

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

නමුත් එය තවමත් ඉතා ඉක්මනින් ක්රියා කරයි. අක්‍රමවත් දත්ත ගබඩා කිරීමේ තවත් ක්‍රමයක් වන්නේ පේළියයි.

අක්‍රමවත් දත්ත. නූල්. මෙම සාම්ප්‍රදායික ක්‍රමයේදී, අරා නොමැතිව, නම් සහ අගයන් එකවර ගබඩා කර ඇත. එක් උපාංගයකින් එකවර මිනුම් 5 ක් පැමිණේ නම්, දත්ත සමුදාය තුළ පේළි 000 ක් ජනනය වේ:

CREATE TABLE cpu_rlc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metric_name LowCardinality(String),  
  metric_value Float64
) ENGINE = MergeTree(created_date, (metric_name, tags_id, created_at), 8192);


SELECT 
    maxIf(metric_value, metric_name = 'usage_user'),
    ... 
FROM cpu_r
WHERE metric_name IN ('usage_user', ...)

නිවස ක්ලික් කරන්න මෙය සමඟ සාර්ථකව කටයුතු කරයි - එයට විශේෂ දිගු ඇත නිවස ක්ලික් කරන්න SQL. උදාහරණයක් ලෙස maxIf - යම් කොන්දේසියක් සපුරා ඇති විට මෙට්‍රික් එකකින් උපරිමය ගණනය කරන විශේෂ කාර්යයකි. ඔබට එක් ඉල්ලීමක් තුළ එවැනි ප්‍රකාශන කිහිපයක් ලිවිය හැකි අතර ප්‍රමිතික කිහිපයක් සඳහා අගය වහාම ගණනය කළ හැකිය.

ප්රවේශයන් තුනක් සංසන්දනය කරමු:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

විස්තර

මෙන්න මම සමහර පරීක්ෂණ දත්ත කට්ටලයක් සඳහා "තැටි දත්ත ප්රමාණය" එකතු කර ඇත. තීරු සම්බන්ධයෙන් ගත් කල, අපට කුඩාම දත්ත ප්‍රමාණය ඇත: උපරිම සම්පීඩනය, උපරිම විමසුම් වේගය, නමුත් අපි සියල්ල එකවර පටිගත කිරීමෙන් ගෙවන්නෙමු.

අරා සම්බන්ධයෙන්, සෑම දෙයක්ම ටිකක් නරක ය. දත්ත තවමත් හොඳින් සම්පීඩිත වන අතර අක්‍රමවත් රටාවක් ගබඩා කළ හැක. එහෙත් නිවස ක්ලික් කරන්න - තීරු දත්ත ගබඩාවක්, සහ අපි සෑම දෙයක්ම අරාවක ගබඩා කිරීම ආරම්භ කරන විට, එය පේළි එකක් බවට පත් වන අතර, අපි කාර්යක්ෂමතාවයෙන් නම්‍යශීලීභාවය සඳහා ගෙවන්නෙමු. ඕනෑම මෙහෙයුමක් සඳහා, ඔබට සම්පූර්ණ අරාව මතකයට කියවීමට සිදුවනු ඇත, ඉන්පසු එහි අපේක්ෂිත මූලද්‍රව්‍යය සොයා ගන්න - සහ අරාව වැඩෙන්නේ නම්, වේගය පිරිහී යයි.

මෙම ප්‍රවේශය භාවිතා කරන එක් සමාගමක (උදාහරණයක් ලෙස, Uber), අරා මූලද්රව්ය 128 ක කැබලිවලට කපා ඇත. දත්ත/දිනක දත්ත 200 TB පරිමාවක් සහිත මෙට්‍රික් දහස් ගණනක දත්ත ගබඩා කරනු ලබන්නේ එක් අරාවක නොව, විශේෂ ගබඩා තර්කනය සහිත අරා 10ක් හෝ 30ක් තුළය.

සරලම ප්රවේශය වන්නේ නූල් සමගය. නමුත් දත්ත දුර්වල ලෙස සම්පීඩනය වී ඇති අතර, වගු විශාලත්වය විශාල වන අතර, විමසීම් ප්‍රමිතික කිහිපයක් මත පදනම් වූ විට පවා, ClickHouse ප්‍රශස්ත ලෙස ක්‍රියා නොකරයි.

දෙමුහුන් යෝජනා ක්රමය

අපි හිතමු අපි තෝරගෙන තියෙන්නේ array පරිපථයක් කියලා. නමුත් අපගේ බොහෝ උපකරණ පුවරු පෙන්වන්නේ පරිශීලක සහ පද්ධති ප්‍රමිතික පමණක් බව අප දන්නේ නම්, අපට අතිරේකව මෙම ප්‍රමිතික මේ ආකාරයෙන් වගු මට්ටමේ ඇති අරාවකින් තීරු බවට පත් කළ හැක:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  ),
  usage_user Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_user')],
  usage_system Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_system')]
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

ඇතුල් කරන විට නිවස ක්ලික් කරන්න ඒවා ස්වයංක්රීයව ගණන් කරනු ඇත. මේ ආකාරයෙන් ඔබට ව්‍යාපාරය සතුටින් ඒකාබද්ධ කළ හැකිය: යෝජනා ක්‍රමය නම්‍යශීලී සහ සාමාන්‍ය ය, නමුත් අපි නිතර භාවිතා කරන තීරු ඉවත් කළෙමු. මෙය ඇතුළු කිරීම සහ වෙනස් කිරීම අවශ්‍ය නොවන බව සලකන්න ETLඑය දිගටම වගුවට අරා ඇතුළු කරයි. අපි කළා විතරයි වෙනත් වගුව, ස්පීකර් කිහිපයක් එකතු කළ අතර ඔබට වහාම භාවිතා කිරීම ආරම්භ කළ හැකි දෙමුහුන් සහ වේගවත් යෝජනා ක්‍රමයක් අපට ලැබුණි.

කෝඩෙක්ස් සහ සම්පීඩනය

සඳහා කාල මාලාව තොරතුරු ප්‍රමාණය ඉතා විශාල විය හැකි බැවින් ඔබ දත්ත කෙතරම් හොඳින් ඇසුරුම් කිරීම වැදගත් වේ. තුල නිවස ක්ලික් කරන්න 1:10, 1:20, සහ සමහර විට තවත් සම්පීඩන බලපෑමක් ලබා ගැනීම සඳහා මෙවලම් කට්ටලයක් ඇත. මෙයින් අදහස් කරන්නේ තැටියේ ඇසුරුම් නොකළ දත්ත 1 TB 50-100 GB පමණ ගත වන බවයි. කුඩා ප්‍රමාණය හොඳයි, දත්ත වේගයෙන් කියවා සැකසීමට හැකිය.

ඉහළ මට්ටමේ සම්පීඩනයක් ලබා ගැනීම සඳහා, නිවස ක්ලික් කරන්න පහත codecs සඳහා සහය දක්වයි:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

උදාහරණ වගුව:

CREATE TABLE benchmark.cpu_codecs_lz4 (
    created_date Date DEFAULT today(), 
    created_at DateTime DEFAULT now() Codec(DoubleDelta, LZ4), 
    tags_id UInt32, 
    usage_user Float64 Codec(Gorilla, LZ4), 
    usage_system Float64 Codec(Gorilla, LZ4), 
    usage_idle Float64 Codec(Gorilla, LZ4), 
    usage_nice Float64 Codec(Gorilla, LZ4), 
    usage_iowait Float64 Codec(Gorilla, LZ4), 
    usage_irq Float64 Codec(Gorilla, LZ4), 
    usage_softirq Float64 Codec(Gorilla, LZ4), 
    usage_steal Float64 Codec(Gorilla, LZ4), 
    usage_guest Float64 Codec(Gorilla, LZ4), 
    usage_guest_nice Float64 Codec(Gorilla, LZ4), 
    additional_tags String DEFAULT ''
)
ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

මෙන්න අපි codec එක නිර්වචනය කරමු ඩබල් ඩෙල්ටා එක් අවස්ථාවක, දෙවන අවස්ථාවේ දී - ගෝරිල්ලා, සහ අපි අනිවාර්යයෙන්ම තවත් එකතු කරන්නෙමු LZ4 සම්පීඩනය. ප්රතිඵලයක් වශයෙන්, තැටියේ දත්ත ප්රමාණය විශාල ලෙස අඩු වේ:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

එකම දත්ත කොපමණ ඉඩ ප්‍රමාණයක් ගනීද යන්න මෙය පෙන්වයි, නමුත් විවිධ කෝඩෙක්ස් සහ සම්පීඩන භාවිතා කරමින්:

  • තැටියේ GZIP ගොනුවක;
  • කෝඩෙක්ස් නොමැතිව ClickHouse තුළ, නමුත් ZSTD සම්පීඩනය සමඟ;
  • Codecs සහ සම්පීඩනය LZ4 සහ ZSTD සමඟ ClickHouse තුළ.

කෝඩෙක්ස් සහිත වගු බොහෝ අඩු ඉඩක් ගන්නා බව පෙනේ.

ප්‍රමාණය වැදගත්

අඩු වැදගත්කමක් නැත තෝරා ගැනීමට නිවැරදි දත්ත වර්ගය:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

ඉහත සියලුම උදාහරණ වලදී මම භාවිතා කළෙමි පාවෙන 64. නමුත් අපි තෝරා ගත්තොත් පාවෙන 32, එවිට එය වඩාත් හොඳ වනු ඇත. ඉහත සබැඳි ලිපියේ පර්කෝනා හි කොල්ලන් විසින් මෙය හොඳින් පෙන්නුම් කර ඇත. කාර්යය සඳහා සුදුසු වඩාත්ම සංයුක්ත වර්ගය භාවිතා කිරීම වැදගත් වේ: විමසුම් වේගයට වඩා තැටි ප්රමාණය සඳහා ඊටත් වඩා අඩුය. නිවස ක්ලික් කරන්න මේ සඳහා ඉතා සංවේදී.

ඔබට භාවිතා කළ හැකි නම් intxnumx වෙනුවට intxnumx, පසුව කාර්ය සාධනයේ දෙගුණයක වැඩි වීමක් අපේක්ෂා කරන්න. දත්ත අඩු මතකයක් ගනී, සහ සියලු "අංක ගණිතය" වඩා වේගයෙන් ක්රියා කරයි. නිවස ක්ලික් කරන්න අභ්යන්තරව එය ඉතා දැඩි ලෙස ටයිප් කරන ලද පද්ධතියකි; එය නවීන පද්ධති සපයන සියලු හැකියාවන් උපරිම ලෙස භාවිතා කරයි.

එකතු කිරීම සහ ද්‍රව්‍යමය දසුන්

එක්රැස් කිරීම සහ ද්‍රව්‍යමය දර්ශන ඔබට විවිධ අවස්ථා සඳහා සමස්ථ නිර්මාණය කිරීමට ඉඩ සලසයි:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

උදාහරණයක් ලෙස, ඔබ සතුව සමූහගත නොවන මූලාශ්‍ර දත්ත තිබිය හැකි අතර, ඔබට විශේෂ එන්ජිමක් හරහා ස්වයංක්‍රීය සාරාංශයක් සමඟ විවිධ ද්‍රව්‍යමය දර්ශන ඒවාට අනුයුක්ත කළ හැකිය. SummingMergeTree (SMT). ප්රශ්නය විසඳිලා යනු සමස්ථ ස්වයංක්‍රීයව ගණනය කරන විශේෂ එකතු කිරීමේ දත්ත ව්‍යුහයකි. අමු දත්ත දත්ත සමුදාය තුළට ඇතුල් කරනු ලැබේ, එය ස්වයංක්රීයව එකතු කරනු ලැබේ, සහ උපකරණ පුවරු වහාම එය මත භාවිතා කළ හැක.

TTL - පැරණි දත්ත "අමතක කරන්න"

තවදුරටත් අවශ්ය නොවන දත්ත "අමතක" කරන්නේ කෙසේද? නිවස ක්ලික් කරන්න මෙය කරන්නේ කෙසේදැයි දනී. වගු නිර්මාණය කිරීමේදී, ඔබට නියම කළ හැකිය TTL ප්‍රකාශන: උදාහරණයක් ලෙස, අපි මිනිත්තු දත්ත එක් දිනක්, දෛනික දත්ත දින 30ක් ගබඩා කර, සතිපතා හෝ මාසික දත්ත ස්පර්ශ නොකරන බව

CREATE TABLE aggr_by_minute
…
TTL time + interval 1 day

CREATE TABLE aggr_by_day
…
TTL time + interval 30 day

CREATE TABLE aggr_by_week
…
/* no TTL */

බහු ස්ථර - තැටි හරහා දත්ත බෙදන්න

මෙම අදහස තවදුරටත් ගෙන යාම, දත්ත ගබඩා කළ හැක නිවස ක්ලික් කරන්න විවිධ ස්ථානවල. අපට පසුගිය සතියේ උණුසුම් දත්ත ඉතා වේගවත් දේශීය එකක ගබඩා කිරීමට අවශ්‍ය යැයි සිතමු SSD, සහ අපි තවත් ඓතිහාසික දත්ත වෙනත් ස්ථානයක තබමු. තුල නිවස ක්ලික් කරන්න මෙය දැන් හැකි ය:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

ඔබට ගබඩා ප්‍රතිපත්තියක් වින්‍යාසගත කළ හැක (ගබඩා ප්රතිපත්තිය) ඒ නිසා නිවස ක්ලික් කරන්න යම් යම් කොන්දේසි වලට ලඟා වූ පසු ස්වයංක්‍රීයව දත්ත වෙනත් ගබඩාවකට මාරු කරනු ඇත.

නමුත් එය පමණක් නොවේ. නිශ්චිත වගුවක මට්ටමින්, දත්ත සීතල ගබඩාවට යන විට හරියටම නියමයන් නිර්වචනය කළ හැකිය. උදාහරණයක් ලෙස, දත්ත දින 7 ක් සඳහා ඉතා වේගවත් තැටියක ගබඩා කර ඇති අතර, පැරණි සියල්ල මන්දගාමී එකක් වෙත මාරු කරනු ලැබේ. මෙය හොඳයි, මන්ද එය පිරිවැය පාලනය කරන අතරම සහ සීතල දත්ත සඳහා මුදල් නාස්ති නොකරන අතරම පද්ධතිය උපරිම ක්‍රියාකාරීත්වයේ තබා ගැනීමට ඔබට ඉඩ සලසයි:

CREATE TABLE 
... 
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume', 
    date + INTERVAL 180 DAY DELETE

අද්විතීය ලක්ෂණ නිවස ක්ලික් කරන්න

සෑම දෙයකම පාහේ නිවස ක්ලික් කරන්න එවැනි "උද්දීපනයන්" ඇත, නමුත් ඒවා විශේෂත්වය මගින් පියවා ඇත - වෙනත් දත්ත සමුදායන්හි නොමැති දෙයක්. උදාහරණයක් ලෙස, මෙහි ඇති සුවිශේෂී ලක්ෂණ කිහිපයක් නිවස ක්ලික් කරන්න:

  • අරා. මෙම නිවස ක්ලික් කරන්න අරා සඳහා ඉතා හොඳ සහාය මෙන්ම ඒවා මත සංකීර්ණ ගණනය කිරීම් සිදු කිරීමේ හැකියාව.
  • දත්ත ව්‍යුහයන් එකතු කිරීම. මෙය "ඝාතක ලක්ෂණ" වලින් එකකි. නිවස ක්ලික් කරන්න. Yandex හි සිටින අය අපට දත්ත එකතු කිරීමට අවශ්‍ය නැති බව පැවසුවද, සියල්ල එකතු කර ඇත නිවස ක්ලික් කරන්න, එය වේගවත් සහ පහසු නිසා.
  • ද්රව්යමය දර්ශන. දත්ත ව්‍යුහයන් එකතු කිරීමත් සමඟ, ද්‍රව්‍යමය දර්ශන ඔබට පහසු කිරීමට ඉඩ සලසයි තත්ය කාලය එකතු කිරීම.
  • ClickHouse SQL. මෙය භාෂා දිගුවකි SQL තුළ පමණක් ලබා ගත හැකි අමතර සහ සුවිශේෂී විශේෂාංග සමඟ නිවස ක්ලික් කරන්න. මීට පෙර, එය එක් අතකින් පුළුල් කිරීමක් හා අනෙක් පැත්තෙන් අවාසියක් විය. දැන් සාපේක්ෂව අවාසි සියල්ලම පාහේ SQL 92 අපි එය ඉවත් කළා, දැන් එය දිගුවක් පමණයි.
  • ලැම්බඩ- ප්රකාශන. ඒවා තවමත් කිසියම් දත්ත ගබඩාවක තිබේද?
  • ML- සහාය. මෙය විවිධ දත්ත සමුදායන්හි පවතී, සමහර ඒවා වඩා හොඳය, සමහරක් නරක ය.
  • විවෘත මූලාශ්රය. අපට පුළුල් කළ හැකිය නිවස ක්ලික් කරන්න එක්ව. දැන් ඇතුලට නිවස ක්ලික් කරන්න දායකයින් 500 ක් පමණ වන අතර, මෙම සංඛ්යාව නිරන්තරයෙන් වර්ධනය වේ.

උපක්‍රමශීලී විමසුම්

В නිවස ක්ලික් කරන්න එකම දේ කිරීමට විවිධ ක්රම තිබේ. උදාහරණයක් ලෙස, වගුවකින් අවසාන අගය ලබා දීමට විවිධ ක්‍රම තුනක් ඇත CPU (හතරවැන්නක් ද ඇත, නමුත් එය ඊටත් වඩා විදේශීය ය).

පළමු එක පෙන්වන්නේ එය තුළ කිරීමට කොතරම් පහසුද යන්නයි නිවස ක්ලික් කරන්න ඔබට එය පරීක්ෂා කිරීමට අවශ්‍ය විට විමසන්න tuple උප විමසුමේ අඩංගු වේ. මෙය මට පුද්ගලිකව වෙනත් දත්ත සමුදායන්හිදී මග හැරුණු දෙයකි. මට යමක් උප විමසුමක් සමඟ සංසන්දනය කිරීමට අවශ්‍ය නම්, වෙනත් දත්ත සමුදායන්හි එය සමඟ සැසඳිය හැක්කේ පරිමාණයක් පමණි, නමුත් තීරු කිහිපයක් සඳහා මට ලිවිය යුතුය. JOIN. මෙම නිවස ක්ලික් කරන්න ඔබට Tuple භාවිතා කළ හැකිය:

SELECT *
  FROM cpu 
 WHERE (tags_id, created_at) IN 
    (SELECT tags_id, max(created_at)
        FROM cpu 
        GROUP BY tags_id)

දෙවන ක්‍රමය එකම දේ කරන නමුත් සමස්ත ශ්‍රිතයක් භාවිතා කරයි argMax:

SELECT 
    argMax(usage_user), created_at),
    argMax(usage_system), created_at),
...
 FROM cpu 

В නිවස ක්ලික් කරන්න සමස්ථ කාර්යයන් දුසිම් කිහිපයක් ඇති අතර, ඔබ සංයෝජන භාවිතා කරන්නේ නම්, සංයෝජන නීතිවලට අනුව ඔබට ඒවායින් දහසක් පමණ ලැබෙනු ඇත. ArgMax - උපරිම අගය ගණනය කරන එක් කාර්යයක්: ඉල්ලීම අගය ආපසු ලබා දෙයි භාවිත_පරිශීලක, උපරිම අගය කරා ළඟා වන නිර්මාණය_at:

SELECT now() as created_at,
       cpu.*
  FROM (SELECT DISTINCT tags_id from cpu) base 
  ASOF LEFT JOIN cpu USING (tags_id, created_at)

ASOF එක්වන්න - විවිධ වේලාවන් සමඟ පේළි "ඇලවීම". මෙය පමණක් ලබා ගත හැකි දත්ත සමුදායන් සඳහා සුවිශේෂී ලක්ෂණයකි kdb+. විවිධ වේලාවන් සමඟ කාල ශ්‍රේණි දෙකක් තිබේ නම්, ASOF එක්වන්න එක් ඉල්ලීමක් තුළ ඒවා ගෙනයාමට සහ ඒකාබද්ධ කිරීමට ඔබට ඉඩ සලසයි. එක් කාල ශ්‍රේණියක එක් එක් අගය සඳහා, අනෙක් අගයෙහි ආසන්නතම අගය සොයා ගන්නා අතර, ඒවා එකම පේළියකින් ආපසු ලබා දෙනු ලැබේ:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

විශ්ලේෂණාත්මක කාර්යයන්

සම්මතය තුළ SQL-2003 ඔබට මේ ආකාරයට ලිවිය හැකිය:

SELECT origin,
       timestamp,
       timestamp -LAG(timestamp, 1) OVER (PARTITION BY origin ORDER BY timestamp) AS duration,
       timestamp -MIN(timestamp) OVER (PARTITION BY origin ORDER BY timestamp) AS startseq_duration,
       ROW_NUMBER() OVER (PARTITION BY origin ORDER BY timestamp) AS sequence,
       COUNT() OVER (PARTITION BY origin ORDER BY timestamp) AS nb
  FROM mytable
ORDER BY origin, timestamp;

В නිවස ක්ලික් කරන්න ඔබට එය කළ නොහැක - එය සම්මතයට සහය නොදක්වයි SQL-2003 සහ බොහෝ විට එය කිසිදා නොකරනු ඇත. ඒ වෙනුවට, තුළ නිවස ක්ලික් කරන්න මෙසේ ලිවීම සිරිතකි.

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

මම lambdas පොරොන්දු වුණා - මෙන්න ඔවුන්!

මෙය සම්මතයේ ඇති විශ්ලේෂණ විමසුමේ ප්‍රතිසමයකි SQL-2003: ඔහු දෙක අතර වෙනස ගණන් කරයි කාල මුද්රාව, කාලසීමාව, සාමාන්‍ය අංකය - අපි සාමාන්‍යයෙන් විශ්ලේෂණාත්මක කාර්යයන් ලෙස සලකන සෑම දෙයක්ම. තුල නිවස ක්ලික් කරන්න අපි ඒවා අරා හරහා ගණන් කරමු: පළමුව අපි දත්ත අරාවකට කඩා දමමු, ඉන්පසු අපි අරාව මත අපට අවශ්‍ය සියල්ල කරන්නෙමු, පසුව අපි එය නැවත පුළුල් කරන්නෙමු. එය ඉතා පහසු නොවේ, එය අවම වශයෙන් ක්රියාකාරී වැඩසටහන් වලට ආදරයක් අවශ්ය වේ, නමුත් එය ඉතා නම්යශීලී වේ.

විශේෂ ලක්ෂණ

ඊට අමතරව, තුළ නිවස ක්ලික් කරන්න බොහෝ විශේෂිත කාර්යයන්. උදාහරණයක් ලෙස, එකවර සැසි කීයක් වේද යන්න තීරණය කරන්නේ කෙසේද? සාමාන්‍ය අධීක්ෂණ කාර්යයක් වන්නේ එක් ඉල්ලීමක් සමඟ උපරිම පැටවීම තීරණය කිරීමයි. තුල නිවස ක්ලික් කරන්න මෙම කාර්යය සඳහා විශේෂ කාර්යයක් ඇත:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

පොදුවේ, ClickHouse බොහෝ අරමුණු සඳහා විශේෂ කාර්යයන් ඇත:

  • ධාවන වෙනස, ධාවන සමුච්චය, අසල්වැසියා;
  • sumMap(යතුර, අගය);
  • timeSeriesGroupSum(uid, timestamp, value);
  • timeSeriesGroupRateSum(uid, timestamp, value);
  • skewPop, skewSamp, kurtPop, kurtSamp;
  • පිරවීම / බැඳීම් සහිතව;
  • සරල රේඛීය ප්‍රතිගාමීත්වය, ස්ටෝචස්ටික් රේඛීය ප්‍රතිගාමීත්වය.

මෙය සම්පූර්ණ ශ්‍රිත ලැයිස්තුවක් නොවේ, සම්පූර්ණ වශයෙන් 500-600 ක් ඇත. ඉඟිය: සියලුම කාර්යයන් ඇත නිවස ක්ලික් කරන්න පද්ධති වගුවේ ඇත (සියල්ල ලේඛනගත කර නැත, නමුත් සියල්ල සිත්ගන්නා සුළුය):

select * from system.functions order by name

නිවස ක්ලික් කරන්න එය ඇතුළුව තමන් ගැන බොහෝ තොරතුරු ගබඩා කරයි ලොග් වගු, විමසුම්_ලොගය, ලුහුබැඳීමේ ලඝු-සටහන, දත්ත වාරණ සහිත මෙහෙයුම් සටහන (කොටස_ලොගය), ප්‍රමිතික ලොගය සහ පද්ධති ලොගය, එය සාමාන්‍යයෙන් තැටියට ලියයි. ලොග් මිතික වේ කාල මාලාව в නිවස ක්ලික් කරන්න ඇත්ත වශයෙන්ම නිවස ක්ලික් කරන්න: දත්ත සමුදායටම භූමිකාවක් ඉටු කළ හැකිය කාල මාලාව දත්ත සමුදායන්, ඒ අනුව එයම "ගිලීම".

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

මෙය ද අද්විතීය දෙයකි - අපි හොඳ කාර්යයක් කරන බැවින් කාල මාලාව, අපට අවශ්‍ය සියල්ල අප තුළම ගබඩා කර ගත නොහැක්කේ ඇයි? අපිට අවශ්‍ය නැහැ Prometheus, අපි හැම දෙයක්ම අපිටම තියාගන්නවා. සම්බන්ධයි ග්‍රැෆනා සහ අපි අපවම නිරීක්ෂණය කරමු. කෙසේ වෙතත්, නම් නිවස ක්ලික් කරන්න වැටෙනවා, ඇයි කියලා අපි දකින්නේ නැහැ, ඒ නිසා ඔවුන් සාමාන්යයෙන් එය කරන්නේ නැහැ.

විශාල පොකුරක් හෝ බොහෝ කුඩා ඒවා නිවස ක්ලික් කරන්න

වඩා හොඳ කුමක්ද - එක් විශාල පොකුරක් හෝ බොහෝ කුඩා ClickHouses? සඳහා සාම්ප්රදායික ප්රවේශය DWH එක් එක් යෙදුම සඳහා පරිපථ වෙන් කර ඇති විශාල පොකුරක් වේ. අපි දත්ත සමුදා පරිපාලක වෙත පැමිණියෙමු - අපට රූප සටහනක් දෙන්න, ඔවුන් අපට එකක් ලබා දුන්නා:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

В නිවස ක්ලික් කරන්න ඔබට එය වෙනස් ආකාරයකින් කළ හැකිය. ඔබට සෑම යෙදුමක්ම ඔබේම කර ගත හැකිය නිවස ක්ලික් කරන්න:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

අපිට දැන් ලොකු ම්ලේච්ඡ එක ඕන නෑ DWH සහ අසීමිත පරිපාලකයින්. අපට සෑම යෙදුමකටම එයම ලබා දිය හැකිය නිවස ක්ලික් කරන්න, සහ සංවර්ධකයාට එය තනිවම කළ හැකිය නිවස ක්ලික් කරන්න ස්ථාපනය කිරීමට ඉතා පහසු වන අතර සංකීර්ණ පරිපාලනය අවශ්ය නොවේ:

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

නමුත් අපට ගොඩක් තිබේ නම් නිවස ක්ලික් කරන්න, සහ ඔබ එය බොහෝ විට ස්ථාපනය කළ යුතුය, එවිට ඔබට මෙම ක්රියාවලිය ස්වයංක්රීය කිරීමට අවශ්ය වේ. මේ සඳහා අපට උදාහරණයක් ලෙස භාවිතා කළ හැකිය කුබර්නෙට්ස් и clickhouse- ක්රියාකරු. තුල Kubernetes ClickHouse ඔබට එය "ක්ලික් කිරීම මත" තැබිය හැකිය: මට බොත්තමක් ක්ලික් කළ හැකිය, මැනිෆෙස්ටය ධාවනය කළ හැකි අතර දත්ත සමුදාය සූදානම්. මට වහාම රූප සටහනක් සාදා, එහි ප්‍රමිතික උඩුගත කිරීම ආරම්භ කළ හැකි අතර, මිනිත්තු 5කින් මට උපකරණ පුවරුවක් සූදානම් කළ හැක ග්‍රැෆනා. එය ඉතා සරලයි!

අවසානයේදී කුමක් ද?

එසේ නම්, නිවස ක්ලික් කරන්න - මෙය:

  • වේගයෙන්. හැමෝම මේක දන්නවා.
  • සාධාරණයි. ටිකක් මතභේදාත්මක, නමුත් මම විශ්වාස කරන්නේ එය පුහුණු කිරීමේදී දුෂ්කර, සටන් කිරීමේදී පහසු බවයි. කොහොමද තේරෙන්නේ නම් නිවස ක්ලික් කරන්න එය ක්රියා කරයි, එවිට සියල්ල ඉතා සරල ය.
  • විශ්වීය. එය විවිධ අවස්ථා සඳහා සුදුසු ය: DWH, කාල මාලාව, ලොග් ගබඩාව. නමුත් එය නොවේ OLTP දත්ත සමුදාය, එබැවින් එහි කෙටි ඇතුළත් කිරීම් සහ කියවීම් කිරීමට උත්සාහ නොකරන්න.
  • සිත්ගන්නා සුළුය. වැඩ කරන කෙනා වෙන්න ඇති නිවස ක්ලික් කරන්න, හොඳ සහ නරක අර්ථයෙන් බොහෝ රසවත් අවස්ථා අත්විඳ ඇත. උදාහරණයක් ලෙස, නව නිකුතුවක් නිකුත් විය, සියල්ල වැඩ කිරීම නතර විය. නැත්තම් දවස් දෙකක් ටාස්ක් එකකට පොර බැදුනත් ටෙලිග්‍රාම් චැට් එකේ ප්‍රශ්නයක් ඇහුවම විනාඩි දෙකෙන් වැඩේ විසදුනා. නැතහොත් ලෙෂා මිලොවිඩොව්ගේ වාර්තාවේ සම්මන්ත්‍රණයේදී මෙන් තිර රුවක් නිවස ක්ලික් කරන්න විකාශනය බිඳ දැමීය හයිලෝඩ් ++. මේ වගේ දේවල් හැම වෙලාවෙම සිද්ධ වෙන නිසා අපේ ජීවිතය අමාරු වෙනවා. නිවස ක්ලික් කරන්න දීප්තිමත් හා රසවත්!

ඔබට ඉදිරිපත් කිරීම නැරඹිය හැකිය මෙහි.

ClickHouse වෙත ගමන් කිරීම: වසර 3කට පසුව

අධි බර පද්ධති සංවර්ධකයින්ගේ දිගුකාලීන අපේක්ෂිත රැස්වීම හයිලෝඩ් ++ නොවැම්බර් 9 සහ 10 යන දිනවල Skolkovo හිදී පැවැත්වේ. අවසාන වශයෙන්, මෙය නොබැඳි සම්මන්ත්‍රණයක් වනු ඇත (සියලු පූර්වාරක්ෂාවන් සහිතව වුවද), HighLoad++ හි ශක්තිය මාර්ගගතව ඇසුරුම් කළ නොහැක.

සම්මන්ත්‍රණය සඳහා, අපි ඔබට තාක්‍ෂණයේ උපරිම හැකියාවන් පිළිබඳ අවස්ථා සොයාගෙන පෙන්වන්නෙමු: Facebook, Yandex, VKontakte, Google සහ Amazon ක්‍රියා කරන ආකාරය ඔබට දින දෙකකින් ඉගෙන ගත හැකි එකම ස්ථානය HighLoad++ විය, එය සහ එය වනු ඇත.

2007 වසරේ සිට බාධාවකින් තොරව රැස්වීම් පැවැත්වූ අපි මෙවර හමුවන්නේ 14 වැනි වතාවටයි. මෙම කාලය තුළ, සම්මන්ත්‍රණය 10 ගුණයකින් වර්ධනය වී ඇත; පසුගිය වසරේ, ප්‍රධාන කර්මාන්ත උත්සවයට සහභාගිවන්නන් 3339 ක්, කථිකයන් 165 ක්, වාර්තා සහ රැස්වීම් එක් කළ අතර ධාවන පථ 16 ක් එකවර ක්‍රියාත්මක විය.
ගිය වසරේ බස් රථ 20ක්, තේ කෝපි ලීටර් 5280ක්, පළතුරු බීම ලීටර් 1650ක්, වතුර බෝතල් 10200ක් තිබුණා. සහ තවත් ආහාර කිලෝග්‍රෑම් 2640 ක්, පිඟන් 16 ක් සහ කෝප්ප 000 ක්. කොහොම හරි, ප්‍රතිචක්‍රීකරණය කරන ලද කඩදාසිවලින් එකතු වූ මුදලින්, අපි ඕක් පැළ 25 ක් සිටුවමු :)

ඔබට ටිකට්පත් මිලදී ගත හැකිය මෙහි, සම්මන්ත්‍රණය පිළිබඳ ප්‍රවෘත්ති ලබා ගන්න - මෙහි, සහ සියලුම සමාජ ජාල වල කතා කරන්න: විදුලි පණිවුඩ, ෆේස්බුක්, Vkontakte и ට්විටර්.

මූලාශ්රය: www.habr.com

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