క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

మూడు సంవత్సరాల క్రితం వేదికపై Yandex నుండి Viktor Tarnavsky మరియు Alexey Milovidov హైలోడ్++ చెప్పారు, ClickHouse ఎంత మంచిది మరియు అది ఎలా నెమ్మదించదు. మరియు తదుపరి దశలో ఉంది అలెగ్జాండర్ జైట్సేవ్ с నివేదిక తరలించడం గురించి క్లిక్హౌస్ మరొక విశ్లేషణాత్మక DBMS నుండి మరియు ముగింపుతో క్లిక్హౌస్, వాస్తవానికి, మంచిది, కానీ చాలా సౌకర్యవంతంగా లేదు. 2016లో కంపెనీ ఎప్పుడు LifeStreet, అలెగ్జాండర్ అప్పుడు పనిచేసిన చోట, బహుళ-పెటాబైట్ విశ్లేషణాత్మక వ్యవస్థను మారుస్తున్నాడు క్లిక్హౌస్, ఇది తెలియని ప్రమాదాలతో నిండిన మనోహరమైన "పసుపు ఇటుక రహదారి" - క్లిక్హౌస్ అప్పట్లో అది మందుపాతరలా ఉండేది.

మూడు సంవత్సరాల తరువాత క్లిక్హౌస్ మరింత మెరుగ్గా మారింది - ఈ సమయంలో అలెగ్జాండర్ ఆల్టినిటీ అనే సంస్థను స్థాపించాడు, ఇది ప్రజలను తరలించడానికి మాత్రమే కాదు క్లిక్హౌస్ డజన్ల కొద్దీ ప్రాజెక్ట్‌లు, కానీ Yandex నుండి సహోద్యోగులతో కలిసి ఉత్పత్తిని మెరుగుపరుస్తుంది. ఇప్పుడు క్లిక్హౌస్ ఇప్పటికీ నిర్లక్ష్య స్త్రోల్ కాదు, కానీ ఇకపై మందుపాతర కాదు.

అలెగ్జాండర్ 2003 నుండి డిస్ట్రిబ్యూటెడ్ సిస్టమ్‌లతో పని చేస్తున్నాడు, పెద్ద ప్రాజెక్టులను అభివృద్ధి చేస్తున్నాడు MySQL, ఒరాకిల్ и వెర్టికా. చివరిగా హైలోడ్++ 2019 అలెగ్జాండర్, ఉపయోగించిన మార్గదర్శకులలో ఒకరు క్లిక్హౌస్, ఈ DBMS ఇప్పుడు ఏమిటో చెప్పారు. మేము ప్రధాన లక్షణాల గురించి తెలుసుకుందాం క్లిక్హౌస్: ఇది ఇతర వ్యవస్థల నుండి ఎలా భిన్నంగా ఉంటుంది మరియు ఏ సందర్భాలలో దానిని ఉపయోగించడం మరింత ప్రభావవంతంగా ఉంటుంది. ఉదాహరణలను ఉపయోగించి, మేము నిర్మాణ వ్యవస్థల కోసం ఇటీవలి మరియు ప్రాజెక్ట్-పరీక్షించిన పద్ధతులను పరిశీలిస్తాము క్లిక్హౌస్.


రెట్రోస్పెక్టివ్: 3 సంవత్సరాల క్రితం ఏమి జరిగింది

మూడేళ్ల క్రితం కంపెనీని బదిలీ చేశాం LifeStreet క్లిక్హౌస్ మరొక విశ్లేషణాత్మక డేటాబేస్ నుండి మరియు ప్రకటన నెట్‌వర్క్ విశ్లేషణల మైగ్రేషన్ ఇలా ఉంది:

  • జూన్ 2016. లో ఓపెన్‌సోర్స్ కనిపించింది క్లిక్హౌస్ మరియు మా ప్రాజెక్ట్ ప్రారంభమైంది;
  • ఆగస్టు. ప్రూఫ్ ఆఫ్ కాన్సెప్ట్: పెద్ద ప్రకటనల నెట్‌వర్క్, మౌలిక సదుపాయాలు మరియు 200-300 టెరాబైట్ల డేటా;
  • అక్టోబర్. మొదటి ఉత్పత్తి డేటా;
  • డిసెంబర్. పూర్తి ఉత్పత్తి లోడ్ రోజుకు 10-50 బిలియన్ ఈవెంట్‌లు.
  • జూన్ 2017. యూజర్ల విజయవంతమైన వలస క్లిక్హౌస్, 2,5 సర్వర్‌ల క్లస్టర్‌లో 60 పెటాబైట్‌ల డేటా.

వలస ప్రక్రియ సమయంలో, పెరుగుతున్న అవగాహన ఉంది క్లిక్హౌస్ పని చేయడానికి ఆహ్లాదకరంగా ఉండే మంచి వ్యవస్థ, కానీ ఇది Yandex యొక్క అంతర్గత ప్రాజెక్ట్. అందువల్ల, సూక్ష్మ నైపుణ్యాలు ఉన్నాయి: Yandex మొదట దాని స్వంత అంతర్గత వినియోగదారులతో వ్యవహరిస్తుంది మరియు అప్పుడు మాత్రమే సంఘం మరియు బాహ్య వినియోగదారుల అవసరాలతో వ్యవహరిస్తుంది మరియు ClickHouse అప్పుడు అనేక ఫంక్షనల్ ప్రాంతాలలో ఎంటర్ప్రైజ్ స్థాయిని చేరుకోలేదు. అందుకే మేము ఆల్టినిటీని తయారు చేయడానికి మార్చి 2017లో స్థాపించాము క్లిక్హౌస్ Yandex కోసం మాత్రమే కాకుండా, ఇతర వినియోగదారులకు కూడా వేగంగా మరియు మరింత సౌకర్యవంతంగా ఉంటుంది. మరియు ఇప్పుడు మేము:

  • మేము శిక్షణ మరియు వాటి ఆధారంగా పరిష్కారాలను రూపొందించడంలో సహాయం చేస్తాము క్లిక్హౌస్ తద్వారా కస్టమర్‌లు ఇబ్బందుల్లో పడకుండా, పరిష్కారం అంతిమంగా పనిచేస్తుంది;
  • మేము 24/7 మద్దతును అందిస్తాము క్లిక్హౌస్- సంస్థాపనలు;
  • మేము మా స్వంత పర్యావరణ వ్యవస్థ ప్రాజెక్టులను అభివృద్ధి చేస్తాము;
  • మేము చురుకుగా మనకు కట్టుబడి ఉంటాము క్లిక్హౌస్, నిర్దిష్ట లక్షణాలను చూడాలనుకునే వినియోగదారుల అభ్యర్థనలకు ప్రతిస్పందించడం.

మరియు వాస్తవానికి, మేము తరలించడంలో సహాయం చేస్తాము క్లిక్హౌస్ с MySQL, వెర్టికా, ఒరాకిల్, గ్రీన్ప్లమ్, రెడ్షిప్ట్ మరియు ఇతర వ్యవస్థలు. మేము వివిధ రకాల కదలికలలో పాల్గొన్నాము మరియు అవన్నీ విజయవంతమయ్యాయి.

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

ఎందుకు తరలించడానికి క్లిక్హౌస్

నెమ్మదించదు! ఇదే ప్రధాన కారణం. క్లిక్హౌస్ - విభిన్న దృశ్యాల కోసం చాలా వేగవంతమైన డేటాబేస్:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

చాలా కాలంగా వ్యక్తులతో పని చేస్తున్న వ్యక్తుల నుండి యాదృచ్ఛిక కోట్‌లు క్లిక్హౌస్.

స్కేలబిలిటీ. కొన్ని ఇతర డేటాబేస్‌లో మీరు ఒక హార్డ్‌వేర్‌పై మంచి పనితీరును సాధించవచ్చు, కానీ క్లిక్హౌస్ మీరు సర్వర్‌లను జోడించడం ద్వారా నిలువుగా మాత్రమే కాకుండా, అడ్డంగా కూడా స్కేల్ చేయవచ్చు. ప్రతిదీ మనం కోరుకున్నంత సజావుగా పని చేయదు, కానీ అది పని చేస్తుంది. మీ వ్యాపారం పెరుగుతున్న కొద్దీ మీరు సిస్టమ్‌ను విస్తరించవచ్చు. మేము ఇప్పుడు పరిష్కారానికి పరిమితం కాకపోవడం మరియు అభివృద్ధికి ఎల్లప్పుడూ సంభావ్యత ఉండటం ముఖ్యం.

పోర్టబిలిటీ. ఒక విషయంతో అనుబంధం లేదు. ఉదాహరణకు, తో అమెజాన్ రెడ్‌షిఫ్ట్ ఎక్కడికో వెళ్లడం కష్టం. ఎ క్లిక్హౌస్ మీరు దీన్ని మీ ల్యాప్‌టాప్, సర్వర్‌లో ఇన్‌స్టాల్ చేయవచ్చు, దానిని క్లౌడ్‌కు అమర్చవచ్చు, వెళ్ళండి Kubernetes - ఇన్‌ఫ్రాస్ట్రక్చర్ ఆపరేషన్‌పై ఎలాంటి పరిమితులు లేవు. ఇది ప్రతిఒక్కరికీ అనుకూలమైనది మరియు అనేక ఇతర సారూప్య డేటాబేస్లు ప్రగల్భాలు చేయలేని పెద్ద ప్రయోజనం.

వశ్యత. క్లిక్హౌస్ ఒక విషయం వద్ద ఆగదు, ఉదాహరణకు, Yandex.Metrica, కానీ అభివృద్ధి చెందుతుంది మరియు మరింత విభిన్న ప్రాజెక్టులు మరియు పరిశ్రమలలో ఉపయోగించబడుతుంది. కొత్త సమస్యలను పరిష్కరించడానికి కొత్త సామర్థ్యాలను జోడించడం ద్వారా దీనిని విస్తరించవచ్చు. ఉదాహరణకు, డేటాబేస్‌లో లాగ్‌లను నిల్వ చేయడం చెడు మర్యాద అని నమ్ముతారు, కాబట్టి వారు ముందుకు వచ్చారు Elasticsearch. కానీ వశ్యతకు ధన్యవాదాలు క్లిక్హౌస్, మీరు దానిలో లాగ్‌లను కూడా నిల్వ చేయవచ్చు మరియు తరచుగా ఇది ఇన్ కంటే మెరుగ్గా ఉంటుంది Elasticsearch - లో క్లిక్హౌస్ దీనికి 10 రెట్లు తక్కువ ఇనుము అవసరం.

ఉచిత ఓపెన్ సోర్స్. మీరు దేనికీ చెల్లించాల్సిన అవసరం లేదు. మీ ల్యాప్‌టాప్ లేదా సర్వర్‌లో సిస్టమ్‌ను ఇన్‌స్టాల్ చేయడానికి అనుమతిని చర్చించాల్సిన అవసరం లేదు. దాచిన రుసుములు లేవు. అదే సమయంలో, ఏ ఇతర ఓపెన్ సోర్స్ డేటాబేస్ టెక్నాలజీ వేగంతో పోటీపడదు క్లిక్హౌస్. MySQL, MariaDB, గ్రీన్‌ప్లమ్ - అవన్నీ చాలా నెమ్మదిగా ఉంటాయి.

సంఘం, డ్రైవ్ మరియు సరదాగా. వద్ద క్లిక్హౌస్ అద్భుతమైన సంఘం: మీట్‌అప్‌లు, చాట్‌లు మరియు అలెక్సీ మిలోవిడోవ్, అతను తన శక్తి మరియు ఆశావాదంతో మనందరినీ వసూలు చేస్తాడు.

క్లిక్‌హౌస్‌కి తరలిస్తోంది

వెళ్ళడానికి క్లిక్హౌస్ కొన్ని కారణాల వల్ల, మీకు మూడు విషయాలు మాత్రమే అవసరం:

  • పరిమితులను అర్థం చేసుకోండి క్లిక్హౌస్ మరియు అది దేనికి తగినది కాదు.
  • అదునిగా తీసుకొని సాంకేతికత మరియు దాని గొప్ప బలాలు.
  • ప్రయోగం. ఇది ఎలా పని చేస్తుందో కూడా అర్థం చేసుకోవడం క్లిక్హౌస్, ఇది ఎప్పుడు వేగంగా ఉంటుందో, ఎప్పుడు నెమ్మదిగా ఉంటుందో, ఎప్పుడు మెరుగ్గా ఉంటుందో మరియు ఎప్పుడు అధ్వాన్నంగా ఉంటుందో అంచనా వేయడం ఎల్లప్పుడూ సాధ్యం కాదు. కాబట్టి దీన్ని ప్రయత్నించండి.

కదిలే సమస్య

ఒకే ఒక "కానీ" ఉంది: మీరు తరలించినట్లయితే క్లిక్హౌస్ వేరొకదాని నుండి, సాధారణంగా ఏదో తప్పు జరుగుతుంది. మనకు ఇష్టమైన డేటాబేస్‌లో పని చేసే కొన్ని అభ్యాసాలు మరియు విషయాలకు మేము అలవాటు పడ్డాము. ఉదాహరణకు, పని చేసే ఎవరైనా SQL-డేటాబేస్‌లు కింది ఫంక్షన్‌ల సెట్‌ను తప్పనిసరి పరిగణిస్తాయి:

  • లావాదేవీలు;
  • అవరోధాల;
  • స్థిరత్వం;
  • సూచీలు;
  • నవీకరించు/తొలగించు;
  • NULLలు;
  • మిల్లీసెకన్లు;
  • ఆటోమేటిక్ రకం తారాగణాలు;
  • బహుళ చేరికలు;
  • ఏకపక్ష విభజనలు;
  • క్లస్టర్ నిర్వహణ సాధనాలు.

రిక్రూట్‌మెంట్ తప్పనిసరి, కానీ మూడేళ్ల క్రితం క్లిక్హౌస్ ఈ ఫంక్షన్‌లు ఏవీ అందుబాటులో లేవు! ఇప్పుడు అమలు చేయని దానిలో సగం కంటే తక్కువ మిగిలి ఉంది: లావాదేవీలు, పరిమితులు, స్థిరత్వం, మిల్లీసెకన్లు మరియు టైప్ కాస్టింగ్.

మరియు ప్రధాన విషయం ఏమిటంటే క్లిక్హౌస్ కొన్ని ప్రామాణిక పద్ధతులు మరియు విధానాలు మనం ఉపయోగించిన దానికంటే భిన్నంగా పనిచేయవు లేదా పని చేయవు. కనిపించే ప్రతిదీ క్లిక్హౌస్, "కి అనుగుణంగా ఉంటుందిక్లిక్‌హౌస్ మార్గం", అనగా విధులు ఇతర డేటాబేస్‌ల నుండి భిన్నంగా ఉంటాయి. ఉదాహరణకి:

  • సూచికలు ఎంచుకోబడలేదు, కానీ దాటవేయబడ్డాయి.
  • నవీకరించు/తొలగించు సింక్రోనస్ కాదు, కానీ అసమకాలిక.
  • అనేక చేరికలు ఉన్నాయి, కానీ ప్రశ్న ప్లానర్ లేదు. అవి ఎలా నిర్వహించబడతాయో సాధారణంగా డేటాబేస్ ప్రపంచంలోని వ్యక్తులకు స్పష్టంగా తెలియదు.

క్లిక్‌హౌస్ స్క్రిప్ట్‌లు

1960లో, హంగేరియన్ మూలానికి చెందిన అమెరికన్ గణిత శాస్త్రజ్ఞుడు విగ్నెర్ EP ఒక వ్యాసం రాశారు "సహజ శాస్త్రాలలో గణితశాస్త్రం యొక్క అసమంజసమైన ప్రభావం” (“నేచురల్ సైన్సెస్‌లో గణితం యొక్క అపారమయిన ప్రభావం”) మన చుట్టూ ఉన్న ప్రపంచం కొన్ని కారణాల వల్ల గణిత చట్టాల ద్వారా బాగా వివరించబడింది. గణితం ఒక వియుక్త శాస్త్రం, మరియు గణిత రూపంలో వ్యక్తీకరించబడిన భౌతిక చట్టాలు సామాన్యమైనవి కావు మరియు విగ్నెర్ EP ఇది చాలా విచిత్రంగా ఉందని నొక్కి చెప్పారు.

నా అభిప్రాయం ప్రకారం, క్లిక్హౌస్ - అదే విచిత్రం. విగ్నెర్‌ని తిరిగి వ్రాయడానికి, మనం ఇలా చెప్పగలం: ఊహించలేని సామర్థ్యం ఆశ్చర్యకరంగా ఉంది క్లిక్హౌస్ అనేక రకాల విశ్లేషణాత్మక అనువర్తనాల్లో!

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

ఉదాహరణకు, తీసుకుందాం రియల్ టైమ్ డేటా వేర్‌హౌస్, దీనిలో డేటా దాదాపు నిరంతరంగా లోడ్ చేయబడుతుంది. మేము రెండవ ఆలస్యంతో దాని నుండి అభ్యర్థనలను స్వీకరించాలనుకుంటున్నాము. దయచేసి - దానిని ఉపయోగించండి క్లిక్హౌస్, ఎందుకంటే ఇది రూపొందించబడిన దృశ్యం. క్లిక్హౌస్ ఇది వెబ్‌లో మాత్రమే కాకుండా, మార్కెటింగ్ మరియు ఆర్థిక విశ్లేషణలలో కూడా ఈ విధంగా ఉపయోగించబడుతుంది, AdTech, అలాగే లో మోసం గుర్తింపుn. IN రియల్ టైమ్ డేటా వేర్‌హౌస్ "స్టార్" లేదా "స్నోఫ్లేక్" వంటి క్లిష్టమైన నిర్మాణాత్మక పథకం ఉపయోగించబడుతుంది, అనేక పట్టికలతో JOIN (కొన్నిసార్లు బహుళ), మరియు డేటా సాధారణంగా కొన్ని సిస్టమ్‌లలో నిల్వ చేయబడుతుంది మరియు మార్చబడుతుంది.

మరొక దృశ్యాన్ని తీసుకుందాం - సమయ శ్రేణి: పరికరాల పర్యవేక్షణ, నెట్‌వర్క్‌లు, వినియోగ గణాంకాలు, ఇంటర్నెట్ ఆఫ్ థింగ్స్. ఇక్కడ మేము సమయానికి ఆదేశించిన చాలా సాధారణ సంఘటనలను ఎదుర్కొంటాము. క్లిక్హౌస్ దీని కోసం మొదట అభివృద్ధి చేయబడలేదు, కానీ అది బాగా పని చేస్తుందని చూపించింది, అందుకే పెద్ద కంపెనీలు ఉపయోగిస్తాయి క్లిక్హౌస్ సమాచారాన్ని పర్యవేక్షించడానికి ఒక రిపోజిటరీగా. ఇది సరిపోతుందో లేదో అన్వేషించడానికి క్లిక్హౌస్ సమయ శ్రేణి కోసం, మేము విధానం మరియు ఫలితాల ఆధారంగా ఒక బెంచ్‌మార్క్‌ని రూపొందించాము InfluxDB и టైమ్‌స్కేల్‌డిబి - ప్రత్యేకత సమయ శ్రేణి డేటాబేస్లు. ఇది తేలింది, ఆ క్లిక్హౌస్, అటువంటి టాస్క్‌ల కోసం ఆప్టిమైజేషన్ లేకుండా కూడా, విదేశీ ఫీల్డ్‌లో గెలుస్తుంది:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

В సమయ శ్రేణి సాధారణంగా ఒక ఇరుకైన పట్టిక ఉపయోగించబడుతుంది - అనేక చిన్న నిలువు వరుసలు. పర్యవేక్షణ నుండి చాలా డేటా రావచ్చు-సెకనుకు మిలియన్ల రికార్డులు-మరియు అవి సాధారణంగా చిన్న పేలుళ్లలో వస్తాయి (రియల్ టైమ్ స్ట్రీమింగ్). అందువల్ల, వేరే చొప్పించే స్క్రిప్ట్ అవసరం, మరియు ప్రశ్నలకు వాటి స్వంత ప్రత్యేకతలు ఉంటాయి.

లాగ్ మేనేజ్మెంట్. డేటాబేస్‌లో లాగ్‌లను సేకరించడం సాధారణంగా చెడ్డది, కానీ క్లిక్హౌస్ ఇది పైన వివరించిన విధంగా కొన్ని వ్యాఖ్యలతో చేయవచ్చు. చాలా కంపెనీలు ఉపయోగిస్తున్నాయి క్లిక్హౌస్ సరిగ్గా ఈ ప్రయోజనం కోసం. ఈ సందర్భంలో, మేము మొత్తం లాగ్‌లను నిల్వ చేసే ఫ్లాట్ వైడ్ టేబుల్‌ని ఉపయోగిస్తాము (ఉదాహరణకు, రూపంలో JSON), లేదా ముక్కలుగా కట్. డేటా సాధారణంగా పెద్ద బ్యాచ్‌లలో (ఫైళ్లు) లోడ్ చేయబడుతుంది మరియు మేము కొంత ఫీల్డ్ ద్వారా శోధిస్తాము.

ఈ ప్రతి ఫంక్షన్ కోసం, ప్రత్యేక డేటాబేస్లు సాధారణంగా ఉపయోగించబడతాయి. క్లిక్హౌస్ ఒకరు అన్నింటినీ చేయగలరు మరియు అది వారిని అధిగమిస్తుంది. ఇప్పుడు నిశితంగా పరిశీలిద్దాం సమయ శ్రేణి దృశ్యం, మరియు సరిగ్గా "వండడం" ఎలా క్లిక్హౌస్ ఈ దృశ్యం కోసం.

సమయ శ్రేణి

ప్రస్తుతం ఇది ప్రధాన దృశ్యం క్లిక్హౌస్ ప్రామాణిక పరిష్కారంగా పరిగణించబడుతుంది. సమయ శ్రేణి కాలక్రమేణా కొన్ని ప్రక్రియలో మార్పులను సూచిస్తూ, సమయానుసారంగా క్రమబద్ధీకరించబడిన సంఘటనల సమితి. ఉదాహరణకు, ఇది రోజుకు హృదయ స్పందన రేటు లేదా సిస్టమ్‌లోని ప్రక్రియల సంఖ్య కావచ్చు. కొన్ని పరిమాణాలతో సమయం టిక్కులు ఇచ్చే ప్రతిదీ సమయ శ్రేణి:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

ఈ రకమైన సంఘటనలు చాలా వరకు పర్యవేక్షణ నుండి వస్తాయి. ఇది వెబ్‌ను పర్యవేక్షించడం మాత్రమే కాదు, నిజమైన పరికరాలు కూడా కావచ్చు: కార్లు, పారిశ్రామిక వ్యవస్థలు, IOT, కర్మాగారాలు లేదా మానవరహిత టాక్సీలు, Yandex ఇప్పటికే ఉంచుతున్న ట్రంక్‌లో క్లిక్హౌస్- సర్వర్.

ఉదాహరణకు, ఓడల నుండి డేటాను సేకరించే కంపెనీలు ఉన్నాయి. ప్రతి కొన్ని సెకన్లకు, కంటైనర్ షిప్‌లోని సెన్సార్‌లు వందల కొద్దీ వేర్వేరు కొలతలను పంపుతాయి. ఇంజనీర్లు వాటిని అధ్యయనం చేస్తారు, నమూనాలను తయారు చేస్తారు మరియు ఓడ ఎంత సమర్థవంతంగా ఉపయోగించబడుతుందో అర్థం చేసుకోవడానికి ప్రయత్నిస్తారు, ఎందుకంటే కంటైనర్ షిప్ సెకను కూడా పనిలేకుండా ఉండకూడదు. ఏదైనా పనికిరాని సమయంలో డబ్బు నష్టపోతుంది, కాబట్టి మార్గాన్ని అంచనా వేయడం ముఖ్యం, తద్వారా స్టాపేజ్‌లు తక్కువగా ఉంటాయి.

ఈ రోజుల్లో కొలిచే ప్రత్యేక డేటాబేస్ల పెరుగుదల ఉంది సమయ శ్రేణి. సైట్లో DB- ఇంజిన్లు విభిన్న డేటాబేస్‌లు ఏదో విధంగా ర్యాంక్ చేయబడ్డాయి మరియు మీరు వాటిని రకం ద్వారా వీక్షించవచ్చు:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

వేగంగా అభివృద్ధి చెందుతున్న రకం సమయ శ్రేణిలు. గ్రాఫ్ డేటాబేస్లు కూడా పెరుగుతున్నాయి, కానీ సమయ శ్రేణిలు గత కొన్ని సంవత్సరాలుగా వేగంగా పెరుగుతున్నాయి. ఈ డేటాబేస్ కుటుంబానికి సాధారణ ప్రతినిధులు InfluxDB, ప్రోమేతియస్, KDB, టైమ్‌స్కేల్‌డిబి (నిర్మించబడింది PostgreSQL), నుండి పరిష్కారాలు అమెజాన్. క్లిక్హౌస్ ఇక్కడ కూడా ఉపయోగించవచ్చు మరియు ఉపయోగించబడుతుంది. నేను మీకు కొన్ని పబ్లిక్ ఉదాహరణలను ఇస్తాను.

అగ్రగామి సంస్థ ఒకటి CloudFlare (CDN- ప్రొవైడర్). వారు వాటిని పర్యవేక్షిస్తారు CDN ద్వారా క్లిక్హౌస్ (DNS- అభ్యర్థనలు, HTTP-ప్రశ్నలు) భారీ లోడ్‌తో - సెకనుకు 6 మిలియన్ ఈవెంట్‌లు. అంతా గుండా వెళుతుంది కాఫ్కా, వెళ్ళుటకు క్లిక్హౌస్, ఇది నిజ సమయంలో సిస్టమ్‌లోని ఈవెంట్‌ల డాష్‌బోర్డ్‌లను చూసే అవకాశాన్ని అందిస్తుంది.

కాంకాస్ట్ - USAలో టెలికమ్యూనికేషన్స్‌లో నాయకులలో ఒకరు: ఇంటర్నెట్, డిజిటల్ టెలివిజన్, టెలిఫోనీ. వారు ఇదే విధమైన నియంత్రణ వ్యవస్థను సృష్టించారు CDN లోపల ఓపెన్ సోర్స్ ప్రాజెక్ట్ అపాచీ ట్రాఫిక్ నియంత్రణ మీ భారీ డేటాతో పని చేయడానికి. క్లిక్హౌస్ విశ్లేషణలకు బ్యాకెండ్‌గా ఉపయోగించబడుతుంది.

పెర్కోనా నిర్మించబడింది క్లిక్హౌస్ మీ లోపల PMMవివిధ పర్యవేక్షణను నిల్వ చేయడానికి MySQL.

నిర్దిష్ట అవసరాలు

టైమ్-సిరీస్ డేటాబేస్‌లు వాటి స్వంత నిర్దిష్ట అవసరాలను కలిగి ఉంటాయి.

  • అనేక ఏజెంట్ల నుండి వేగంగా చొప్పించడం. మేము చాలా స్ట్రీమ్‌ల నుండి డేటాను చాలా త్వరగా చేర్చాలి. క్లిక్హౌస్ దాని ఇన్సర్ట్‌లన్నీ నిరోధించబడనందున ఇది బాగా చేస్తుంది. ఏదైనా ఇన్సర్ట్ డిస్క్‌లో కొత్త ఫైల్, మరియు చిన్న ఇన్సర్ట్‌లను ఒక విధంగా లేదా మరొక విధంగా బఫర్ చేయవచ్చు. IN క్లిక్హౌస్ ఒకేసారి ఒక లైన్ కాకుండా పెద్ద బ్యాచ్‌లలో డేటాను చొప్పించడం మంచిది.
  • సౌకర్యవంతమైన పథకం. ది సమయ శ్రేణి మాకు సాధారణంగా డేటా స్ట్రక్చర్ పూర్తిగా తెలియదు. ఒక నిర్దిష్ట అప్లికేషన్ కోసం పర్యవేక్షణ వ్యవస్థను నిర్మించడం సాధ్యమవుతుంది, కానీ మరొక అప్లికేషన్ కోసం దాన్ని ఉపయోగించడం కష్టం. దీనికి మరింత సౌకర్యవంతమైన పథకం అవసరం. క్లిక్హౌస్, ఇది గట్టిగా టైప్ చేసిన బేస్ అయినప్పటికీ, దీన్ని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • సమర్థవంతమైన నిల్వ మరియు డేటాను మర్చిపోవడం. సాధారణంగా లో సమయ శ్రేణి భారీ మొత్తంలో డేటా, కాబట్టి అది సాధ్యమైనంత సమర్ధవంతంగా నిల్వ చేయబడాలి. ఉదాహరణకు, వద్ద InfluxDB మంచి కుదింపు దాని ప్రధాన లక్షణం. కానీ నిల్వ చేయడంతో పాటు, మీరు పాత డేటాను "మర్చిపోవడానికి" మరియు కొన్ని రకాలను కూడా చేయగలగాలి డౌన్‌సాంప్లింగ్ - కంకరల స్వయంచాలక లెక్కింపు.
  • సమగ్ర డేటాపై వేగవంతమైన ప్రశ్నలు. కొన్నిసార్లు మిల్లీసెకన్ల ఖచ్చితత్వంతో చివరి 5 నిమిషాలను చూడటం ఆసక్తికరంగా ఉంటుంది, కానీ నెలవారీ డేటాలో నిమిషం లేదా రెండవ గ్రాన్యులారిటీ అవసరం లేదు - సాధారణ గణాంకాలు సరిపోతాయి. ఈ రకమైన మద్దతు అవసరం, లేకుంటే 3 నెలల అభ్యర్థన పూర్తి కావడానికి చాలా సమయం పడుతుంది క్లిక్హౌస్.
  • వంటి అభ్యర్థనలు "చివరి పాయింట్, నాటికి». ఇవి విలక్షణమైనవి సమయ శ్రేణి ప్రశ్నలు: ఒక సమయంలో సిస్టమ్ యొక్క చివరి కొలత లేదా స్థితిని చూడండి t. ఇవి డేటాబేస్ కోసం చాలా ఆహ్లాదకరమైన ప్రశ్నలు కావు, కానీ మీరు వాటిని అమలు చేయగలగాలి.
  • "గ్లూయింగ్" సమయ శ్రేణి. సమయ శ్రేణి ఒక సమయ శ్రేణి. రెండు సమయ శ్రేణులు ఉంటే, అవి తరచుగా కనెక్ట్ చేయబడి, పరస్పర సంబంధం కలిగి ఉండాలి. అన్ని డేటాబేస్‌లలో దీన్ని చేయడం అనుకూలమైనది కాదు, ప్రత్యేకించి సమలేఖనం చేయని సమయ శ్రేణితో: ఇక్కడ కొన్ని సమయ పాయింట్లు ఉన్నాయి, మరికొన్ని ఉన్నాయి. మీరు సగటును పరిగణించవచ్చు, కానీ అకస్మాత్తుగా అక్కడ ఇంకా రంధ్రం ఉంటుంది, కనుక ఇది స్పష్టంగా లేదు.

ఈ అవసరాలు ఎలా నెరవేరతాయో చూద్దాం క్లిక్హౌస్.

పథకం

В క్లిక్హౌస్ కోసం పథకం సమయ శ్రేణి డేటా యొక్క క్రమబద్ధత స్థాయిని బట్టి వివిధ మార్గాల్లో చేయవచ్చు. మేము అన్ని కొలమానాలను ముందుగానే తెలుసుకున్నప్పుడు సాధారణ డేటాపై సిస్టమ్‌ను రూపొందించడం సాధ్యమవుతుంది. ఉదాహరణకు, నేను దీన్ని చేసాను CloudFlare పర్యవేక్షణతో CDN బాగా ఆప్టిమైజ్ చేయబడిన వ్యవస్థ. మీరు మొత్తం అవస్థాపన మరియు వివిధ సేవలను పర్యవేక్షించే మరింత సాధారణ వ్యవస్థను రూపొందించవచ్చు. సక్రమంగా లేని డేటా విషయంలో, మనం ఏమి పర్యవేక్షిస్తున్నామో మాకు ముందుగానే తెలియదు - మరియు ఇది బహుశా సర్వసాధారణమైన సందర్భం.

రెగ్యులర్ డేటా. నిలువు వరుసలు. పథకం సులభం - అవసరమైన రకాలతో నిలువు వరుసలు:

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. ఇక్కడ మీరు అటువంటి ఏకపక్ష పర్యవేక్షణ డేటాను ప్రతి ఈవెంట్ కోసం పేర్ల శ్రేణి మరియు కొలతల శ్రేణిగా నిల్వ చేయవచ్చు. మరింత ఆప్టిమైజేషన్ కోసం, అటువంటి నిర్మాణానికి బదులుగా, మీరు అనేకం చేయవచ్చు. ఉదాహరణకు, ఒకటి కోసం ఫ్లోట్-విలువ, మరొకటి - కోసం పూర్ణాంకానికి- అర్థం ఎందుకంటే పూర్ణాంకానికి నేను మరింత సమర్థవంతంగా నిల్వ చేయాలనుకుంటున్నాను.

కానీ అలాంటి నిర్మాణాన్ని యాక్సెస్ చేయడం చాలా కష్టం. మీరు ఒక ప్రత్యేక నిర్మాణాన్ని ఉపయోగించాలి, ప్రత్యేక ఫంక్షన్లను ఉపయోగించి మొదటి సూచిక మరియు తరువాత శ్రేణి యొక్క విలువలను తీసివేయాలి:

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', ...)

క్లిక్హౌస్ దీనితో copes - దీనికి ప్రత్యేక పొడిగింపులు ఉన్నాయి క్లిక్హౌస్ SQL. ఉదాహరణకు గరిష్టంగా ఉంటే — కొన్ని షరతులు నెరవేరినప్పుడు మెట్రిక్ ద్వారా గరిష్టాన్ని లెక్కించే ప్రత్యేక ఫంక్షన్. మీరు ఒక అభ్యర్థనలో అటువంటి అనేక వ్యక్తీకరణలను వ్రాయవచ్చు మరియు వెంటనే అనేక కొలమానాల కోసం విలువను లెక్కించవచ్చు.

మూడు విధానాలను సరిపోల్చండి:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

Детали

ఇక్కడ నేను కొన్ని టెస్ట్ డేటా సెట్ కోసం "డిస్క్ డేటా సైజు"ని జోడించాను. నిలువు వరుసల విషయంలో, మేము అతి చిన్న డేటా పరిమాణాన్ని కలిగి ఉన్నాము: గరిష్ట కుదింపు, గరిష్ట ప్రశ్న వేగం, కానీ మేము అన్నింటినీ ఒకేసారి రికార్డ్ చేయడం ద్వారా చెల్లిస్తాము.

శ్రేణుల విషయంలో, ప్రతిదీ కొంచెం అధ్వాన్నంగా ఉంటుంది. డేటా ఇప్పటికీ బాగా కుదించబడింది మరియు క్రమరహిత నమూనా నిల్వ చేయబడుతుంది. కానీ క్లిక్హౌస్ - ఒక స్థూపాకార డేటాబేస్, మరియు మేము ప్రతిదాన్ని శ్రేణిలో నిల్వ చేయడం ప్రారంభించినప్పుడు, అది వరుసగా ఒకటిగా మారుతుంది మరియు మేము సామర్థ్యంతో సౌలభ్యం కోసం చెల్లిస్తాము. ఏదైనా ఆపరేషన్ కోసం, మీరు మొత్తం శ్రేణిని మెమరీలోకి చదవాలి, ఆపై దానిలో కావలసిన మూలకాన్ని కనుగొనండి - మరియు శ్రేణి పెరిగితే, వేగం క్షీణిస్తుంది.

ఈ విధానాన్ని ఉపయోగించే కంపెనీలలో ఒకదానిలో (ఉదాహరణకు, ఉబెర్), శ్రేణులు 128 మూలకాల ముక్కలుగా కత్తిరించబడతాయి. 200 TB డేటా/రోజు వాల్యూమ్‌తో అనేక వేల మెట్రిక్‌ల నుండి డేటా ఒక శ్రేణిలో కాకుండా ప్రత్యేక నిల్వ లాజిక్‌తో 10 లేదా 30 శ్రేణులలో నిల్వ చేయబడుతుంది.

సరళమైన విధానం తీగలతో ఉంటుంది. కానీ డేటా పేలవంగా కుదించబడింది, పట్టిక పరిమాణం పెద్దది మరియు ప్రశ్నలు అనేక కొలమానాలపై ఆధారపడి ఉన్నప్పటికీ, ClickHouse ఉత్తమంగా పని చేయదు.

హైబ్రిడ్ పథకం

మనం అర్రే సర్క్యూట్‌ని ఎంచుకున్నామని అనుకుందాం. కానీ మా డ్యాష్‌బోర్డ్‌లు చాలా వరకు వినియోగదారు మరియు సిస్టమ్ మెట్రిక్‌లను మాత్రమే చూపుతాయని మాకు తెలిస్తే, మేము అదనంగా ఈ మెట్రిక్‌లను పట్టిక స్థాయిలో ఉన్న శ్రేణి నుండి నిలువు వరుసలుగా ఈ విధంగా చేయవచ్చు:

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ఇది పట్టికలో శ్రేణులను చొప్పించడాన్ని కొనసాగిస్తుంది. మేము ఇప్పుడే చేసాము ప్రత్యామ్నాయ పట్టిక, రెండు స్పీకర్లను జోడించాము మరియు మేము హైబ్రిడ్ మరియు వేగవంతమైన స్కీమ్‌ని పొందాము, మీరు వెంటనే ఉపయోగించడం ప్రారంభించవచ్చు.

కోడెక్‌లు మరియు కుదింపు

కోసం సమయ శ్రేణి మీరు డేటాను ఎంత బాగా ప్యాక్ చేశారన్నది ముఖ్యం ఎందుకంటే సమాచారం మొత్తం చాలా పెద్దది కావచ్చు. IN క్లిక్హౌస్ 1:10, 1:20 మరియు కొన్నిసార్లు ఎక్కువ కుదింపు ప్రభావాన్ని సాధించడానికి సాధనాల సమితి ఉంది. అంటే డిస్క్‌లో 1 TB అన్‌ప్యాక్ చేయబడిన డేటా 50-100 GB వరకు పడుతుంది. చిన్న పరిమాణం మంచిది, డేటాను వేగంగా చదవవచ్చు మరియు ప్రాసెస్ చేయవచ్చు.

అధిక స్థాయి కుదింపు సాధించడానికి, క్లిక్హౌస్ కింది కోడెక్‌లకు మద్దతు ఇస్తుంది:

క్లిక్‌హౌస్‌కి మారుతోంది: 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);

ఇక్కడ మేము కోడెక్‌ను నిర్వచించాము డబుల్ డెల్టా ఒక సందర్భంలో, రెండవ సందర్భంలో - గొరిల్లా, మరియు మేము ఖచ్చితంగా మరిన్ని జోడిస్తాము LZ4 కుదింపు. ఫలితంగా, డిస్క్‌లోని డేటా పరిమాణం బాగా తగ్గింది:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

విభిన్న కోడెక్‌లు మరియు కంప్రెషన్‌లను ఉపయోగించి ఒకే డేటా ఎంత స్థలాన్ని తీసుకుంటుందో ఇది చూపిస్తుంది:

  • డిస్క్‌లోని GZIP ఫైల్‌లో;
  • కోడెక్‌లు లేకుండా క్లిక్‌హౌస్‌లో, కానీ ZSTD కంప్రెషన్‌తో;
  • కోడెక్‌లు మరియు కంప్రెషన్ LZ4 మరియు ZSTDతో క్లిక్‌హౌస్‌లో.

కోడెక్‌లతో కూడిన పట్టికలు చాలా తక్కువ స్థలాన్ని తీసుకుంటాయని చూడవచ్చు.

పరిమాణం విషయాలు

తక్కువ ప్రాముఖ్యత లేదు ఎంచుకోవడానికి సరైన డేటా రకం:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

పైన పేర్కొన్న అన్ని ఉదాహరణలలో నేను ఉపయోగించాను ఫ్లోట్64. కానీ మనం ఎంచుకుంటే ఫ్లోట్32, అప్పుడు అది మరింత మెరుగ్గా ఉంటుంది. పైన లింక్ చేసిన కథనంలో పెర్కోనాకు చెందిన అబ్బాయిలు దీనిని బాగా ప్రదర్శించారు. పనికి అనువైన అత్యంత కాంపాక్ట్ రకాన్ని ఉపయోగించడం ముఖ్యం: ప్రశ్న వేగం కంటే డిస్క్ పరిమాణానికి కూడా తక్కువ. క్లిక్హౌస్ దీనికి చాలా సెన్సిటివ్.

మీరు ఉపయోగించగలిగితే intxnumx బదులుగా intxnumx, అప్పుడు పనితీరులో దాదాపు రెండు రెట్లు పెరుగుదల ఆశించవచ్చు. డేటా తక్కువ మెమరీని తీసుకుంటుంది మరియు అన్ని "అంకగణితం" చాలా వేగంగా పని చేస్తుంది. క్లిక్హౌస్ అంతర్గతంగా ఇది చాలా ఖచ్చితంగా టైప్ చేయబడిన వ్యవస్థ; ఇది ఆధునిక వ్యవస్థలు అందించే అన్ని అవకాశాలను గరిష్టంగా ఉపయోగించుకుంటుంది.

అగ్రిగేషన్ మరియు మెటీరియలైజ్డ్ వ్యూస్

అగ్రిగేషన్ మరియు మెటీరియలైజ్డ్ వీక్షణలు వివిధ సందర్భాలలో కంకరలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తాయి:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

ఉదాహరణకు, మీరు సంగ్రహించని సోర్స్ డేటాను కలిగి ఉండవచ్చు మరియు మీరు ప్రత్యేక ఇంజిన్ ద్వారా ఆటోమేటిక్ సమ్మషన్‌తో వాటికి వివిధ మెటీరియలైజ్డ్ వీక్షణలను జోడించవచ్చు. సమ్మింగ్‌మెర్జ్‌ట్రీ (SMT). SMT కంకరలను స్వయంచాలకంగా గణించే ప్రత్యేక సమగ్ర డేటా నిర్మాణం. డేటాబేస్‌లో ముడి డేటా చొప్పించబడింది, అది స్వయంచాలకంగా సమగ్రపరచబడుతుంది మరియు డాష్‌బోర్డ్‌లు దానిపై వెంటనే ఉపయోగించబడతాయి.

టిటిఎల్ - పాత డేటాను "మర్చిపో"

ఇకపై అవసరం లేని డేటాను ఎలా "మర్చిపోవాలి"? క్లిక్హౌస్ దీన్ని ఎలా చేయాలో తెలుసు. పట్టికలను సృష్టించేటప్పుడు, మీరు పేర్కొనవచ్చు టిటిఎల్ వ్యక్తీకరణలు: ఉదాహరణకు, మేము నిమిషం డేటాను ఒక రోజు, రోజువారీ డేటాను 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, మరియు మేము మరింత చారిత్రక డేటాను మరొక ప్రదేశంలో ఉంచాము. IN క్లిక్హౌస్ ఇది ఇప్పుడు సాధ్యమే:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

మీరు నిల్వ విధానాన్ని కాన్ఫిగర్ చేయవచ్చు (నిల్వ విధానం) కాబట్టి క్లిక్హౌస్ నిర్దిష్ట షరతులకు చేరుకున్న తర్వాత స్వయంచాలకంగా మరొక నిల్వకు డేటాను బదిలీ చేస్తుంది.

అయితే అంతే కాదు. నిర్దిష్ట పట్టిక స్థాయిలో, డేటా కోల్డ్ స్టోరేజ్‌లోకి వెళ్లినప్పుడు మీరు ఖచ్చితంగా నియమాలను నిర్వచించవచ్చు. ఉదాహరణకు, డేటా చాలా వేగవంతమైన డిస్క్‌లో 7 రోజులు నిల్వ చేయబడుతుంది మరియు పాతదంతా నెమ్మదిగా బదిలీ చేయబడుతుంది. ఇది మంచిది ఎందుకంటే ఇది సిస్టమ్‌ను గరిష్ట పనితీరులో ఉంచడానికి మిమ్మల్ని అనుమతిస్తుంది, అయితే ఖర్చులను నియంత్రిస్తుంది మరియు కోల్డ్ డేటాపై డబ్బును వృధా చేయదు:

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

ప్రత్యేక అవకాశాలు క్లిక్హౌస్

దాదాపు ప్రతిదానిలో క్లిక్హౌస్ అటువంటి “ముఖ్యాంశాలు” ఉన్నాయి, కానీ అవి ప్రత్యేకతతో ఆఫ్‌సెట్ చేయబడతాయి - ఇతర డేటాబేస్‌లలో లేనివి. ఉదాహరణకు, ఇక్కడ కొన్ని ప్రత్యేక లక్షణాలు ఉన్నాయి క్లిక్హౌస్:

  • శ్రేణులు. ది క్లిక్హౌస్ శ్రేణులకు చాలా మంచి మద్దతు, అలాగే వాటిపై సంక్లిష్ట గణనలను నిర్వహించగల సామర్థ్యం.
  • డేటా నిర్మాణాలను సమగ్రపరచడం. ఇది "కిల్లర్ ఫీచర్లలో" ఒకటి క్లిక్హౌస్. Yandex నుండి వచ్చిన కుర్రాళ్ళు మేము డేటాను సమగ్రపరచకూడదనుకుంటున్నప్పటికీ, ప్రతిదీ దీనిలో సమగ్రపరచబడింది క్లిక్హౌస్, ఎందుకంటే ఇది వేగంగా మరియు సౌకర్యవంతంగా ఉంటుంది.
  • మెటీరియలైజ్డ్ వీక్షణలు. డేటా స్ట్రక్చర్‌లను సమగ్రపరచడంతో పాటు, మెటీరియలైజ్డ్ వీక్షణలు మిమ్మల్ని సౌకర్యవంతంగా చేయడానికి అనుమతిస్తాయి రియల్ టైమ్ సమూహనం.
  • క్లిక్‌హౌస్ SQL. ఇది భాషా పొడిగింపు SQL లో మాత్రమే అందుబాటులో ఉండే కొన్ని అదనపు మరియు ప్రత్యేకమైన ఫీచర్లతో క్లిక్హౌస్. గతంలో, ఇది ఒక వైపు విస్తరణ, మరోవైపు ప్రతికూలత వంటిది. ఇప్పుడు దాదాపు అన్ని నష్టాలు పోలిస్తే SQL 92 మేము దానిని తీసివేసాము, ఇప్పుడు అది కేవలం పొడిగింపు మాత్రమే.
  • లాంబ్డా- వ్యక్తీకరణలు. అవి ఇంకా ఏదైనా డేటాబేస్‌లో ఉన్నాయా?
  • ML-మద్దతు. ఇది వివిధ డేటాబేస్‌లలో అందుబాటులో ఉంది, కొన్ని మంచివి, కొన్ని అధ్వాన్నమైనవి.
  • ఓపెన్ సోర్స్. మేము విస్తరించవచ్చు క్లిక్హౌస్ కలిసి. ఇప్పుడు లోపలికి క్లిక్హౌస్ సుమారు 500 మంది కంట్రిబ్యూటర్లు ఉన్నారు మరియు ఈ సంఖ్య నిరంతరం పెరుగుతోంది.

గమ్మత్తైన ప్రశ్నలు

В క్లిక్హౌస్ ఒకే పనిని చేయడానికి అనేక మార్గాలు ఉన్నాయి. ఉదాహరణకు, మీరు పట్టిక నుండి చివరి విలువను మూడు రకాలుగా తిరిగి ఇవ్వవచ్చు CPU (నాల్గవది కూడా ఉంది, కానీ ఇది మరింత అన్యదేశమైనది).

మొదటిది దీన్ని చేయడం ఎంత సౌకర్యవంతంగా ఉంటుందో చూపిస్తుంది క్లిక్హౌస్ మీరు దాన్ని తనిఖీ చేయాలనుకున్నప్పుడు ప్రశ్నలు టుపుల్ సబ్‌క్వెరీలో ఉంది. ఇతర డేటాబేస్‌లలో నేను వ్యక్తిగతంగా తప్పిన విషయం ఇది. నేను ఏదైనా సబ్‌క్వెరీతో పోల్చాలనుకుంటే, ఇతర డేటాబేస్‌లలో స్కేలార్‌ను మాత్రమే దానితో పోల్చవచ్చు, కానీ అనేక నిలువు వరుసల కోసం నేను వ్రాయవలసి ఉంటుంది. 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 - గరిష్ట విలువను లెక్కించే ఫంక్షన్‌లలో ఒకటి: అభ్యర్థన విలువను అందిస్తుంది వాడుక_వినియోగదారు, దీని వద్ద గరిష్ట విలువ చేరుకుంది సృష్టించబడిన_వద్ద:

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 చేరండి వాటిని ఒక అభ్యర్థనలో తరలించడానికి మరియు విలీనం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఒక పర్యాయ శ్రేణిలోని ప్రతి విలువకు, మరొకదానిలో అత్యంత సన్నిహిత విలువ కనుగొనబడుతుంది మరియు అవి ఒకే లైన్‌లో అందించబడతాయి:

క్లిక్‌హౌస్‌కి మారుతోంది: 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 మరియు బహుశా అది ఎప్పటికీ చేయదు. బదులుగా, లో క్లిక్హౌస్ ఇలా రాయడం ఆనవాయితీ.

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

నేను లాంబ్డాస్‌కి వాగ్దానం చేసాను - అవి ఇక్కడ ఉన్నాయి!

ఇది ప్రమాణంలోని విశ్లేషణాత్మక ప్రశ్న యొక్క అనలాగ్ SQL-2003: అతను రెండింటి మధ్య వ్యత్యాసాన్ని లెక్కిస్తాడు సమయముద్ర, వ్యవధి, ఆర్డినల్ సంఖ్య - మేము సాధారణంగా విశ్లేషణాత్మక విధులను పరిగణించే ప్రతిదీ. IN క్లిక్హౌస్ మేము వాటిని శ్రేణుల ద్వారా గణిస్తాము: మొదట మేము డేటాను శ్రేణిగా కుదించాము, ఆ తర్వాత మేము శ్రేణిలో మనకు కావలసిన ప్రతిదాన్ని చేస్తాము, ఆపై దానిని తిరిగి విస్తరిస్తాము. ఇది చాలా సౌకర్యవంతంగా లేదు, దీనికి కనీసం ఫంక్షనల్ ప్రోగ్రామింగ్ పట్ల ప్రేమ అవసరం, కానీ ఇది చాలా సరళమైనది.

ప్రత్యేక విధులు

అంతేకాకుండా, లో క్లిక్హౌస్ అనేక ప్రత్యేక విధులు. ఉదాహరణకు, ఏకకాలంలో ఎన్ని సెషన్‌లు జరుగుతున్నాయో ఎలా గుర్తించాలి? ఒక అభ్యర్థనతో గరిష్ట లోడ్‌ను నిర్ణయించడం అనేది ఒక సాధారణ పర్యవేక్షణ పని. IN క్లిక్హౌస్ ఈ ప్రయోజనం కోసం ఒక ప్రత్యేక ఫంక్షన్ ఉంది:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

సాధారణంగా, ClickHouse అనేక ప్రయోజనాల కోసం ప్రత్యేక విధులను కలిగి ఉంది:

  • రన్నింగ్ డిఫరెన్స్, రన్నింగ్ అక్యుములేట్, పొరుగు;
  • sumMap(కీ, విలువ);
  • timeSeriesGroupSum(uid, టైమ్‌స్టాంప్, విలువ);
  • timeSeriesGroupRateSum(uid, టైమ్‌స్టాంప్, విలువ);
  • skewPop, skewSamp, kurtPop, kurtSamp;
  • పూరించడంతో / టైస్‌తో;
  • సరళరేఖ రిగ్రెషన్, యాదృచ్ఛిక సరళ రిగ్రెషన్.

ఇది ఫంక్షన్ల పూర్తి జాబితా కాదు, మొత్తం 500-600 ఉన్నాయి. సూచన: అన్ని విధులు క్లిక్హౌస్ సిస్టమ్ పట్టికలో ఉంది (అన్నీ డాక్యుమెంట్ చేయబడలేదు, కానీ అన్నీ ఆసక్తికరంగా ఉన్నాయి):

select * from system.functions order by name

క్లిక్హౌస్ ఇది దాని గురించి చాలా సమాచారాన్ని నిల్వ చేస్తుంది లాగ్ పట్టికలు, ప్రశ్న_లాగ్, ట్రేస్ లాగ్, డేటా బ్లాక్‌లతో కార్యకలాపాల లాగ్ (భాగం_లాగ్), మెట్రిక్స్ లాగ్ మరియు సిస్టమ్ లాగ్, ఇది సాధారణంగా డిస్క్‌కి వ్రాస్తుంది. లాగ్ కొలమానాలు సమయ శ్రేణి в క్లిక్హౌస్ నిజానికి క్లిక్హౌస్: డేటాబేస్ కూడా ఒక పాత్రను పోషిస్తుంది సమయ శ్రేణి డేటాబేస్‌లు, ఆ విధంగా "మ్రింగివేయడం".

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

ఇది కూడా ఒక ప్రత్యేకమైన విషయం - మేము మంచి పని చేస్తున్నందున సమయ శ్రేణి, మనకు కావాల్సినవన్నీ మనలోనే ఎందుకు నిల్వ చేసుకోలేము? మాకు అవసరం లేదు ప్రోమేతియస్, మేము ప్రతిదీ మనలో ఉంచుకుంటాము. కనెక్ట్ చేయబడింది గ్రాఫనా మరియు మనల్ని మనం పర్యవేక్షిస్తాము. అయితే, ఉంటే క్లిక్హౌస్ పడిపోతుంది, మేము ఎందుకు చూడలేము, కాబట్టి వారు సాధారణంగా అలా చేయరు.

పెద్ద క్లస్టర్ లేదా చాలా చిన్నవి క్లిక్హౌస్

ఏది మంచిది - ఒక పెద్ద క్లస్టర్ లేదా అనేక చిన్న క్లిక్‌హౌస్‌లు? సంప్రదాయ విధానం DWH ప్రతి అప్లికేషన్ కోసం సర్క్యూట్‌లు కేటాయించబడే పెద్ద క్లస్టర్. మేము డేటాబేస్ అడ్మినిస్ట్రేటర్ వద్దకు వచ్చాము - మాకు ఒక రేఖాచిత్రం ఇవ్వండి మరియు వారు మాకు ఒకదాన్ని ఇచ్చారు:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

В క్లిక్హౌస్ మీరు దీన్ని భిన్నంగా చేయవచ్చు. మీరు ప్రతి అప్లికేషన్‌ను మీ స్వంతంగా చేసుకోవచ్చు క్లిక్హౌస్:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

మాకు ఇకపై పెద్ద రాక్షసుడు అవసరం లేదు DWH మరియు భరించలేని నిర్వాహకులు. మేము ప్రతి అప్లికేషన్ దాని స్వంత ఇవ్వగలము క్లిక్హౌస్, మరియు డెవలపర్ దానిని స్వయంగా చేయగలడు, నుండి క్లిక్హౌస్ వ్యవస్థాపించడం చాలా సులభం మరియు సంక్లిష్ట పరిపాలన అవసరం లేదు:

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

కానీ మనకు చాలా ఉంటే క్లిక్హౌస్, మరియు మీరు దీన్ని తరచుగా ఇన్‌స్టాల్ చేయాలి, ఆపై మీరు ఈ ప్రక్రియను ఆటోమేట్ చేయాలనుకుంటున్నారు. దీని కోసం మనం, ఉదాహరణకు, ఉపయోగించవచ్చు Kubernetes и క్లిక్‌హౌస్- ఆపరేటర్. IN కుబెర్నెట్స్ క్లిక్‌హౌస్ మీరు దీన్ని “ఆన్-క్లిక్” అని ఉంచవచ్చు: నేను ఒక బటన్‌ను క్లిక్ చేయగలను, మానిఫెస్ట్‌ను అమలు చేయగలను మరియు డేటాబేస్ సిద్ధంగా ఉంది. నేను వెంటనే ఒక రేఖాచిత్రాన్ని సృష్టించగలను, అక్కడ కొలమానాలను అప్‌లోడ్ చేయడం ప్రారంభించగలను మరియు 5 నిమిషాల్లో నా దగ్గర డ్యాష్‌బోర్డ్ సిద్ధంగా ఉంది గ్రాఫనా. ఇది చాలా సులభం!

బాటమ్ లైన్ ఏమిటి?

కాబట్టి, క్లిక్హౌస్ - ఇది:

  • త్వరగా. ఇది అందరికీ తెలుసు.
  • కేవలం. కొంచెం వివాదాస్పదమైనది, కానీ శిక్షణలో కష్టం, పోరాటంలో సులభం అని నేను నమ్ముతున్నాను. ఎలాగో అర్థం చేసుకుంటే క్లిక్హౌస్ ఇది పనిచేస్తుంది, అప్పుడు ప్రతిదీ చాలా సులభం.
  • విశ్వవ్యాప్తంగా. ఇది విభిన్న దృశ్యాలకు అనుకూలంగా ఉంటుంది: DWH, టైమ్ సిరీస్, లాగ్ స్టోరేజ్. కానీ అది కాదు OLTP డేటాబేస్, కాబట్టి అక్కడ చిన్న ఇన్సర్ట్‌లు మరియు రీడ్‌లను చేయడానికి ప్రయత్నించవద్దు.
  • ఆసక్తికరంగా. బహుశా పని చేసే వాడు క్లిక్హౌస్, మంచి మరియు చెడు కోణంలో అనేక ఆసక్తికరమైన క్షణాలను అనుభవించారు. ఉదాహరణకు, ఒక కొత్త విడుదల వచ్చింది, ప్రతిదీ పని చేయడం ఆగిపోయింది. లేదా మీరు రెండు రోజులు టాస్క్‌తో ఇబ్బంది పడినప్పుడు, టెలిగ్రామ్ చాట్‌లో ప్రశ్న అడిగిన తర్వాత, రెండు నిమిషాల్లో టాస్క్ పరిష్కరించబడింది. లేదా లేషా మిలోవిడోవ్ యొక్క నివేదిక వద్ద కాన్ఫరెన్స్‌లో వలె, స్క్రీన్‌షాట్ క్లిక్హౌస్ ప్రసారాన్ని విచ్ఛిన్నం చేసింది హైలోడ్++. ఇలాంటివి నిత్యం జరుగుతూ మన జీవితాలను కష్టతరం చేస్తాయి. క్లిక్హౌస్ ప్రకాశవంతమైన మరియు ఆసక్తికరమైన!

మీరు ప్రదర్శనను చూడవచ్చు ఇక్కడ.

క్లిక్‌హౌస్‌కి మారుతోంది: 3 సంవత్సరాల తర్వాత

వద్ద అధిక-లోడ్ వ్యవస్థల డెవలపర్లు దీర్ఘ ఎదురుచూస్తున్న సమావేశం హైలోడ్++ నవంబర్ 9 మరియు 10 తేదీలలో స్కోల్కోవోలో జరుగుతుంది. చివరగా, ఇది ఆఫ్‌లైన్ కాన్ఫరెన్స్ అవుతుంది (అన్ని జాగ్రత్తలు ఉన్నప్పటికీ), హైలోడ్++ శక్తిని ఆన్‌లైన్‌లో ప్యాక్ చేయడం సాధ్యం కాదు.

కాన్ఫరెన్స్ కోసం, మేము సాంకేతిక పరిజ్ఞానం యొక్క గరిష్ట సామర్థ్యాలను కనుగొని, మీకు చూపుతాము: Facebook, Yandex, VKontakte, Google మరియు Amazon ఎలా పని చేస్తాయో రెండు రోజుల్లో మీరు నేర్చుకోగలిగే ఏకైక ప్రదేశం HighLoad++ ఉంది.

2007 నుంచి అంతరాయం లేకుండా సమావేశాలు నిర్వహిస్తున్న మేము ఈ ఏడాది 14వ సారి కలుస్తాం. ఈ సమయంలో, సమావేశం 10 రెట్లు పెరిగింది; గత సంవత్సరం, కీలకమైన పరిశ్రమ ఈవెంట్‌లో 3339 మంది పాల్గొనేవారు, 165 మంది స్పీకర్లు, నివేదికలు మరియు సమావేశాలు మరియు 16 ట్రాక్‌లు ఏకకాలంలో నడుస్తున్నాయి.
గతేడాది 20 బస్సులు, 5280 లీటర్ల టీ, కాఫీలు, 1650 లీటర్ల ఫ్రూట్ డ్రింక్స్, 10200 వాటర్ బాటిళ్లు ఉన్నాయి. మరియు మరో 2640 కిలోగ్రాముల ఆహారం, 16 ప్లేట్లు మరియు 000 కప్పులు. మార్గం ద్వారా, రీసైకిల్ కాగితం నుండి సేకరించిన డబ్బుతో, మేము 25 ఓక్ మొక్కలు నాటాము :)

మీరు టిక్కెట్లు కొనుగోలు చేయవచ్చు ఇక్కడ, సమావేశం గురించి వార్తలను పొందండి - ఇక్కడ, మరియు అన్ని సోషల్ నెట్‌వర్క్‌లలో మాట్లాడండి: Telegram, <span style="font-family: Mandali; ">ఫేస్‌బుక్ </span>, Vkontakte и Twitter.

మూలం: www.habr.com

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