ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

ٽي سال اڳ Viktor Tarnavsky ۽ Alexey Milovidov اسٽيج تي Yandex کان هاء لوڊ ++ ٻڌايو, ClickHouse ڪيترو سٺو آهي، ۽ اهو ڪيئن سست نٿو ٿئي. ۽ ايندڙ اسٽيج تي هو اليگزينڊر زيتسوف с رپورٽ ڏانهن منتقل ڪرڻ بابت ڪلڪ ڪريو هائوس هڪ ٻئي تجزياتي ڊي بي ايم ايس مان ۽ انهي نتيجي سان ڪلڪ ڪريو هائوس، يقينا، سٺو، پر تمام آسان ناهي. جڏهن ته 2016 ۾ ڪمپني زندگي، جتي اليگزينڊر پوءِ ڪم ڪيو، هڪ ملٽي پيٽابائيٽ تجزياتي نظام کي تبديل ڪري رهيو هو ڪلڪ ڪريو هائوساهو هڪ دلچسپ ”پيلو برڪ روڊ“ هو جيڪو اڻڄاتل خطرن سان ڀريل هو. ڪلڪ ڪريو هائوس ان کان پوء اهو هڪ minefield وانگر نظر آيو.

ٽي سال پوءِ ڪلڪ ڪريو هائوس گهڻو بهتر ٿي ويو - هن عرصي دوران اليگزينڊر ڪمپني Altinity قائم ڪئي، جيڪا نه رڳو ماڻهن کي منتقل ڪرڻ ۾ مدد ڪري ٿي ڪلڪ ڪريو هائوس ڪيترائي منصوبا، پر پراڊڪٽ کي پڻ بهتر بڻائي ٿو پاڻ کي Yandex جي ساٿين سان گڏ. هاڻي ڪلڪ ڪريو هائوس اڃا به بي پرواهه گھمڻ نه، پر هاڻي هڪ مائن فيلڊ ناهي.

اليگزينڊر 2003 کان ورهايل سسٽم سان ڪم ڪري رهيو آهي، وڏي منصوبن تي ترقي ڪري رهيو آهي MySQL، Oracle и عمودي. آخري تي هاء لوڊ ++ 2019 اليگزينڊر، استعمال ڪرڻ وارن مان هڪ آهي ڪلڪ ڪريو هائوسٻڌايو ته هي DBMS هاڻي ڇا آهي. اسان بنيادي خصوصيتن بابت ڄاڻنداسين ڪلڪ ڪريو هائوس: اهو ڪيئن مختلف آهي ٻين سسٽم کان ۽ ڪهڙين حالتن ۾ ان کي استعمال ڪرڻ وڌيڪ اثرائتو آهي. مثالن کي استعمال ڪندي، اسان تي ٻڌل سسٽم جي تعمير لاء تازو ۽ پروجيڪٽ جي آزمائشي طريقن تي نظر ڪنداسين ڪلڪ ڪريو هائوس.


Retrospective: ڇا ٿيو 3 سال اڳ

ٽي سال اڳ اسان ڪمپني کي منتقل ڪيو زندگي تي ڪلڪ ڪريو هائوس ٻئي تجزياتي ڊيٽابيس مان، ۽ اشتهار نيٽ ورڪ تجزياتي لڏپلاڻ هن طرح نظر آئي:

  • جون 2016. ۾ کليل ذريعو نظر ڪلڪ ڪريو هائوس ۽ اسان جو منصوبو شروع ڪيو؛
  • آگسٽ. تصور جو ثبوت: وڏو اشتهارن جو نيٽ ورڪ، انفراسٽرڪچر ۽ 200-300 ٽيرا بائيٽ ڊيٽا؛
  • آڪٽوبر. پهرين پيداوار ڊيٽا؛
  • ڊسمبر. مڪمل پراڊڪٽ لوڊ آهي 10-50 بلين واقعا في ڏينهن.
  • جون 2017. صارفين جي ڪامياب لڏپلاڻ ڪلڪ ڪريو هائوس, 2,5 پيٽابيٽس ڊيٽا جي ڪلستر تي 60 سرورز.

لڏپلاڻ جي عمل دوران، اتي هڪ وڌندڙ سمجھاڻي هئي ڪلڪ ڪريو هائوس هڪ سٺو سسٽم آهي جنهن سان ڪم ڪرڻ خوشگوار آهي، پر اهو Yandex جو هڪ اندروني منصوبو آهي. تنهن ڪري، اتي nuances آهن: Yandex پهريون ڀيرو پنهنجي اندروني گراهڪن سان ڊيل ڪندو ۽ صرف پوء ڪميونٽي ۽ ٻاهرين استعمال ڪندڙن جي ضرورتن سان، ۽ ClickHouse پوء ڪيترن ئي فنڪشنل علائقن ۾ انٽرپرائز سطح تائين پهچي نه ڪيو. ان ڪري اسان مارچ 2017 ۾ Altinity جو بنياد رکيو ڪلڪ ڪريو هائوس اڃا به تيز ۽ وڌيڪ آسان نه رڳو Yandex لاء، پر ٻين استعمال ڪندڙن لاء پڻ. ۽ هاڻي اسان:

  • اسان ٽريننگ ۽ مدد ڪندا آهيون حل جي بنياد تي ڪلڪ ڪريو هائوس انهي ڪري ته گراهڪ مصيبت ۾ نه اچن، ۽ انهي جو حل آخرڪار ڪم ڪري ٿو؛
  • اسان 24/7 سپورٽ فراهم ڪندا آهيون ڪلڪ ڪريو هائوس- تنصيب؛
  • اسان پنهنجي ماحولياتي نظام جي منصوبن کي ترقي ڪريون ٿا؛
  • اسان پاڻ کي فعال طور تي انجام ڏيون ٿا ڪلڪ ڪريو هائوس, صارفين جي درخواستن جو جواب ڏيڻ جيڪي ڪجهه خاصيتون ڏسڻ چاهيندا آهن.

۽ يقينا، اسان کي منتقل ڪرڻ ۾ مدد ڪريون ٿا ڪلڪ ڪريو هائوس с هن MySQL, عمودي, Oracle, گرين پلم, ڳاڙهو ۽ ٻيا نظام. اسان مختلف تحريڪن ۾ شامل ٿي چڪا آهيون، ۽ اهي سڀئي ڪامياب ٿي چڪا آهن.

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

ڇو منتقل ڪلڪ ڪريو هائوس

سست نٿو ٿئي! اهو بنيادي سبب آهي. ڪلڪ ڪريو هائوس - مختلف منظرنامي لاءِ تمام تيز ڊيٽابيس:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

ماڻهن کان بي ترتيب حوالا جيڪي هڪ ڊگهي وقت تائين ماڻهن سان ڪم ڪري رهيا آهن ڪلڪ ڪريو هائوس.

اسڪاليبلٽي. ڪجهه ٻين ڊيٽابيس تي توهان هارڊويئر جي هڪ ٽڪڙي تي سٺي ڪارڪردگي حاصل ڪري سگهو ٿا، پر ڪلڪ ڪريو هائوس توهان ماپ ڪري سگهو ٿا نه صرف عمودي طور تي، پر افقي طور تي، صرف سرور شامل ڪندي. سڀڪنھن شيء کي آسانيء سان ڪم نٿو ڪري جيئن اسان چاهيون ٿا، پر اهو ڪم ڪري ٿو. توھان سسٽم کي وڌائي سگھوٿا جيئن توھان جو ڪاروبار وڌندو. اهو ضروري آهي ته اسان هاڻي حل تائين محدود نه آهيون ۽ هميشه ترقي جي صلاحيت آهي.

پورٽبلٽي. هڪ شيءِ سان ڪو به واسطو نه آهي. مثال طور، سان ايم ڪيو ايم ريڊ شفٽ ڪنهن هنڌ وڃڻ ڏکيو آهي. اي ڪلڪ ڪريو هائوس توھان ان کي پنھنجي ليپ ٽاپ، سرور تي انسٽال ڪري سگھو ٿا، ان کي ڪلائوڊ تي لڳايو، ڏانھن وڃو ڪوبنيٿس - انفراسٽرڪچر جي آپريشن تي ڪابه پابنديون نه آهن. اهو هر ڪنهن لاءِ آسان آهي، ۽ اهو هڪ وڏو فائدو آهي جنهن تي ٻيا ڪيترائي ساڳيا ڊيٽابيس فخر نٿا ڪري سگهن.

سکيائي. ڪلڪ ڪريو هائوس هڪ شيء تي روڪي نه ٿو، مثال طور، Yandex.Metrica، پر ترقي ڪري ٿو ۽ وڌيڪ ۽ وڌيڪ مختلف منصوبن ۽ صنعتن ۾ استعمال ٿيندو آهي. نوان مسئلا حل ڪرڻ لاءِ نوان صلاحيتون شامل ڪندي ان کي وڌائي سگهجي ٿو. مثال طور، اهو يقين آهي ته ڊيٽابيس ۾ لاگز کي محفوظ ڪرڻ خراب آداب آهي، تنهنڪري اهي آيا آهن ElasticsSearch. پر لچڪ جي مهرباني ڪلڪ ڪريو هائوس، توهان ان ۾ لاگز پڻ محفوظ ڪري سگهو ٿا، ۽ اڪثر اهو ان کان به بهتر آهي ElasticsSearch - اندر ڪلڪ ڪريو هائوس اهو 10 ڀيرا گهٽ لوهه جي ضرورت آهي.

واندو اوپن سورس. توهان کي ڪنهن به شيء لاء ادا ڪرڻ جي ضرورت ناهي. توهان جي ليپ ٽاپ يا سرور تي سسٽم کي انسٽال ڪرڻ جي اجازت جي ڳالهين جي ڪا ضرورت ناهي. ڪابه پوشیدہ فيس. ساڳئي وقت، ٻيو ڪوبه اوپن سورس ڊيٽابيس ٽيڪنالاجي سان رفتار ۾ مقابلو نٿو ڪري سگهي ڪلڪ ڪريو هائوس. MySQL، ماريا ڊي بي، گرينپلم - اهي تمام گهڻو سست آهن.

ڪميونٽي، ڊرائيو ۽ لطف. تي ڪلڪ ڪريو هائوس شاندار ڪميونٽي: ملاقاتون، چيٽ ۽ Alexey Milovidov، جيڪو اسان سڀني کي پنهنجي توانائي ۽ اميد سان چارج ڪري ٿو.

ClickHouse ڏانهن منتقل

ڏانهن وڃڻ ڪلڪ ڪريو هائوس ڪجهه سببن لاء، توهان کي صرف ٽن شين جي ضرورت آهي:

  • حدن کي سمجھو ڪلڪ ڪريو هائوس ۽ ڇا اهو مناسب ناهي.
  • فائدو وٺ ٽيڪنالاجي ۽ ان جي وڏي طاقت.
  • تجربو. جيتوڻيڪ اهو ڪيئن ڪم ڪري ٿو سمجهي ڪلڪ ڪريو هائوس، اهو هميشه ممڪن ناهي ته اڳڪٿي ڪرڻ ڪڏهن تيز ٿيندو، ڪڏهن سست هوندو، ڪڏهن بهتر ٿيندو، ۽ ڪڏهن خراب ٿيندو. تنهنڪري ڪوشش ڪريو.

حرڪت وارو مسئلو

هتي صرف هڪ آهي "پر": جيڪڏهن توهان ڏانهن وڃو ڪلڪ ڪريو هائوس ڪنهن ٻئي کان، پوء عام طور تي ڪجهه غلط ٿي وڃي ٿو. اسان ڪجهه عملن ۽ شين جا عادي آهيون جيڪي اسان جي پسنديده ڊيٽابيس ۾ ڪم ڪن ٿيون. مثال طور، هر ڪنهن سان ڪم ڪري رهيو آهي SQL-Databases ڪمن جي ھيٺين سيٽ کي لازمي سمجھندا آھن:

  • ٽرانزيڪشن
  • پابنديون؛
  • مطابقت؛
  • اشارا
  • تازه ڪاري / حذف ڪريو;
  • NULLs;
  • ملي سيڪنڊ؛
  • خودڪار قسم جي casts؛
  • گھڻن ملن؛
  • پاڻمرادو ورهاڱو؛
  • ڪلستر مينيجمينٽ جا اوزار.

ڀرتي لازمي آهي، پر ٽي سال اڳ ۾ ڪلڪ ڪريو هائوس انهن مان ڪو به فنڪشن موجود نه هو! ھاڻي اڌ کان به گھٽ جيڪو عمل نه ڪيو ويو آھي باقي رھيو آھي: ٽرانزيڪشن، رڪاوٽون، تسلسل، مليسيڪنڊ ۽ ٽائپ ڪاسٽنگ.

۽ بنيادي شيء اها آهي ته اندر ڪلڪ ڪريو هائوس ڪجھ معياري طريقا ۽ طريقا ڪم نٿا ڪن يا اسان جي استعمال کان مختلف ڪم ڪن ٿا. هر شيء جيڪا ظاهر ٿئي ٿي ڪلڪ ڪريو هائوسسان ملندڙ جلندڙ آهي "ھاؤس جو طريقو ڪلڪ ڪريو"، i.e. افعال ٻين ڊيٽابيس کان مختلف آهن. مثال طور:

  • انڊيڪس منتخب نه ڪيا ويا آهن، پر ڇڏيا ويا آهن.
  • تازه ڪاري / حذف ڪريو هم وقت ساز نه، پر هم وقت ساز.
  • اتي گھڻا شامل آھن، پر ڪو سوال پلانر نه آھي. اهي وري ڪيئن ڪيا ويندا آهن عام طور تي ڊيٽابيس جي دنيا جي ماڻهن لاءِ بلڪل واضح ناهي.

ڪلڪ هائوس اسڪرپٽ

1960 ع ۾، هنگري نسل جو هڪ آمريڪي رياضي دان ويگنر اي پي هڪ مضمون لکيو "قدرتي سائنس ۾ رياضي جي غير معقول تاثير” (“The Incomprehensible Effectiveness of Mathematics in the Natural Sciences”) ته اسان جي آس پاس جي دنيا ڪنهن سبب جي ڪري رياضياتي قانونن جي چڱيءَ طرح بيان ڪيل آهي. رياضي هڪ تجريدي سائنس آهي، ۽ جسماني قانون جيڪي رياضياتي شڪل ۾ ظاهر ڪيا ويا آهن، اهي معمولي نه آهن، ۽ ويگنر اي پي زور ڀريو ته اهو تمام عجيب آهي.

منهنجي نظر کان، ڪلڪ ڪريو هائوس - ساڳيو عجيب. Wigner کي ٻيهر بيان ڪرڻ لاءِ، اسان هي چئي سگهون ٿا: ناقابل تصور ڪارڪردگي حيران ڪندڙ آهي ڪلڪ ڪريو هائوس تجزياتي ايپليڪيشنن جي وسيع قسم ۾!

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

مثال طور، اچو ته وٺو حقيقي وقت ڊيٽا گودام، جنهن ۾ ڊيٽا لڳ ڀڳ لاڳيتو لوڊ ڪيو ويندو آهي. اسان ان کان درخواستون حاصل ڪرڻ چاهيون ٿا هڪ سيڪنڊ دير سان. مهرباني ڪري - استعمال ڪريو ڪلڪ ڪريو هائوس، ڇاڪاڻ ته هي اهو منظر آهي جنهن لاءِ ٺهيل هو. ڪلڪ ڪريو هائوس اهو بلڪل ائين آهي ته اهو ڪيئن استعمال ٿئي ٿو نه رڳو ويب تي، پر مارڪيٽنگ ۽ مالي تجزياتي ۾ پڻ، AdTech، گڏوگڏ ۾ فريب جي نشاندهيn. IN حقيقي وقت ڊيٽا گودام هڪ پيچيده منظم اسڪيم جهڙوڪ ”اسٽار“ يا ”سنو فليڪ“ استعمال ڪيو ويندو آهي، ڪيترن ئي ٽيبلن سان JOIN (ڪڏهن ڪڏهن ڪيترائي)، ۽ ڊيٽا عام طور تي ذخيرو ٿيل آهي ۽ ڪجهه سسٽم ۾ تبديل ٿيل آهي.

اچو ته هڪ ٻيو منظر وٺون- ٽائيم سيريز: ڊوائيسز جي نگراني، نيٽ ورڪ، استعمال جا انگ اکر، شين جو انٽرنيٽ. هتي اسان کي وقت ۾ ترتيب ڏنل ڪافي سادو واقعا ملن ٿا. ڪلڪ ڪريو هائوس اصل ۾ ان لاءِ ترقي نه ڪئي وئي هئي، پر پاڻ کي چڱيءَ طرح ڪم ڪندي ڏيکاريو آهي، جنهن ڪري وڏيون ڪمپنيون استعمال ڪن ٿيون ڪلڪ ڪريو هائوس معلومات جي نگراني لاء هڪ مخزن جي طور تي. ڳولڻ لاءِ ته ڇا اهو مناسب آهي ڪلڪ ڪريو هائوس ٽائيم-سيريز لاءِ، اسان نقطه نظر ۽ نتيجن جي بنياد تي هڪ معيار ٺاهيو InfluxDB и ٽائم اسڪيل ڊي بي - خاص وقت جو سلسلو ڊيٽابيس. اهو turnedري ويو، اهو ڪلڪ ڪريو هائوس، جيتوڻيڪ اهڙن ڪمن لاءِ اصلاح کان سواءِ، غير ملڪي ميدان تي کٽي ٿو:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

В وقت جو سلسلو عام طور تي هڪ تنگ ٽيبل استعمال ڪيو ويندو آهي - ڪيترائي ننڍا ڪالمن. تمام گهڻو ڊيٽا مانيٽرنگ مان اچي سگھي ٿو- لکين رڪارڊ في سيڪنڊ- ۽ اهي عام طور تي ننڍن دفن ۾ اچن ٿا (اصل وقت اسٽريمنگ). تنهن ڪري، هڪ مختلف داخل اسڪرپٽ جي ضرورت آهي، ۽ سوالن کي پنهنجون خاصيتون آهن.

لاگ ان جو انتظام. ڊيٽابيس ۾ لاگ گڏ ڪرڻ عام طور تي خراب آهي، پر ڪلڪ ڪريو هائوس اهو ڪجهه تبصرن سان ڪري سگهجي ٿو جيئن مٿي بيان ڪيو ويو آهي. ڪيتريون ئي ڪمپنيون استعمال ڪن ٿيون ڪلڪ ڪريو هائوس بلڪل هن مقصد لاء. انهي حالت ۾، اسان هڪ فليٽ وسيع ٽيبل استعمال ڪندا آهيون جتي اسان سڄي لاگز کي ذخيرو ڪندا آهيون (مثال طور، فارم ۾ JSON)، يا ٽڪر ۾ ڪٽيو. ڊيٽا عام طور تي وڏي بيچز (فائلن) ۾ لوڊ ڪئي ويندي آهي، ۽ اسان ڪجهه فيلڊ ذريعي ڳوليندا آهيون.

انهن مان هر هڪ فنڪشن لاء، خاص ڊيٽابيس عام طور تي استعمال ٿيندا آهن. ڪلڪ ڪريو هائوس هڪ اهو سڀ ڪجهه ڪري سگهي ٿو ۽ ايترو سٺو آهي ته اهو انهن کي بهتر بڻائي ٿو. اچو ته هاڻي هڪ ويجهي نظر وٺو وقت جو سلسلو منظر، ۽ ڪيئن "پکائڻ" صحيح ڪلڪ ڪريو هائوس هن منظر لاء.

وقت جو سلسلو

هن وقت اهو مکيه منظر آهي جنهن لاءِ ڪلڪ ڪريو هائوس معياري حل سمجهيو. وقت جو سلسلو وقت ۾ ترتيب ڏنل واقعن جو هڪ سيٽ آهي، جيڪو وقت سان گڏ ڪجهه عمل ۾ تبديلين جي نمائندگي ڪري ٿو. مثال طور، اهو ٿي سگهي ٿو دل جي شرح في ڏينهن يا سسٽم ۾ عملن جو تعداد. هر شيءِ جيڪا وقت کي ڪجهه طول و عرض سان ٽڪر ڏئي ٿي وقت جو سلسلو:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

انهن قسمن جا اڪثر واقعا مانيٽرنگ مان ايندا آهن. اهو نه صرف ويب جي نگراني ڪري سگهجي ٿو، پر حقيقي ڊوائيسز: ڪارون، صنعتي نظام، IoT، ڪارخانا يا اڻڄاتل ٽيڪسيون، جن جي ٽرن ۾ Yandex اڳ ۾ ئي رکيل آهي ڪلڪ ڪريو هائوس-سرور.

مثال طور، ڪمپنيون آهن جيڪي ٻيڙين مان ڊيٽا گڏ ڪن ٿيون. هر چند سيڪنڊن ۾، ڪنٽينر ٻيڙي تي سينسر سوين مختلف ماپون موڪليندا آهن. انجنيئر ان جو مطالعو ڪندا آهن، ماڊل ٺاهيندا آهن ۽ اهو سمجهڻ جي ڪوشش ڪندا آهن ته جهاز ڪيتري ڪارائتي طريقي سان استعمال ٿئي ٿو، ڇو ته ڪنٽينر جهاز هڪ سيڪنڊ لاءِ به بيڪار نه هجڻ گهرجي. ڪو به بند وقت پئسن جو نقصان آهي، تنهنڪري اهو ضروري آهي ته رستي جي اڳڪٿي ڪئي وڃي ته جيئن اسٽاپ گهٽ ۾ گهٽ هجن.

اڄڪلهه خاص ڊيٽابيس جي ترقي آهي جيڪا ماپ ڪري ٿي وقت جو سلسلو. سائيٽ تي ڊي بي انجڻ مختلف ڊيٽابيسن کي ڪنهن به طرح درجه بندي ڪيو ويو آهي، ۽ توهان انهن کي ٽائپ ذريعي ڏسي سگهو ٿا:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

تيز ترين وڌندڙ قسم آهي وقت جو سلسلوايس. گراف ڊيٽابيس پڻ وڌي رهيا آهن، پر وقت جو سلسلوs گذريل ڪجھ سالن ۾ تيزي سان وڌي رهيو آهي. ڊيٽابيس جي هن خاندان جا عام نمائندا آهن InfluxDB, Prometheus, ڪي ڊي بي, ٽائم اسڪيل ڊي بي (تعمير ٿيل PostgreSQL) کان حل Amazon. ڪلڪ ڪريو هائوس هتي پڻ استعمال ڪري سگهجي ٿو، ۽ استعمال ڪيو ويندو آهي. اچو ته توهان کي ڪجهه عوامي مثال ڏيان.

هڪ پائيدار ڪمپني آهي CloudFlare (سي ڊي اين- فراهم ڪندڙ). انهن جي نگراني ڪن ٿا سي ڊي اين через ڪلڪ ڪريو هائوس (DNS- درخواستون، HTTPسوال) وڏي لوڊ سان - 6 ملين واقعا في سيڪنڊ. سڀ ڪجهه گذري ٿو ڪوفي، وڃي ٿو ڪلڪ ڪريو هائوس، جيڪو حقيقي وقت ۾ سسٽم ۾ واقعن جا ڊيش بورڊ ڏسڻ جو موقعو فراهم ڪري ٿو.

Comcast - آمريڪا ۾ ٽيليڪميونيڪيشن ۾ اڳواڻن مان هڪ: انٽرنيٽ، ڊجيٽل ٽيليويزن، ٽيليفون. انهن هڪ اهڙي ڪنٽرول سسٽم ٺاهي سي ڊي اين اندر اوپن سورس منصوبو Apache ٽريفڪ ڪنٽرول توهان جي وڏي ڊيٽا سان ڪم ڪرڻ لاء. ڪلڪ ڪريو هائوس اينالائيٽڪس لاءِ پس منظر طور استعمال ڪيو ويو.

پيروڪا تعمير ٿيل ڪلڪ ڪريو هائوس توهان جي اندر پي ايم ايممختلف شين جي نگراني ڪرڻ لاء هن MySQL.

مخصوص گهرجون

ٽائم سيريز ڊيٽابيس جون پنهنجون مخصوص ضرورتون آهن.

  • ڪيترن ئي ايجنٽن کان فاسٽ داخلا. اسان کي ڪيترن ئي اسٽريم مان ڊيٽا تمام جلدي داخل ڪرڻي پوندي. ڪلڪ ڪريو هائوس اهو اهو سٺو ڪري ٿو ڇاڪاڻ ته ان جا سڀئي داخلا غير بلاڪ آهن. ڪو داخل ڪيو ڊسڪ تي هڪ نئين فائل آهي، ۽ ننڍڙن داخلن کي ڪنهن نه ڪنهن طريقي سان بفر ڪري سگهجي ٿو. IN ڪلڪ ڪريو هائوس اهو بهتر آهي ته ڊيٽا کي هڪ وقت ۾ هڪ قطار جي ڀيٽ ۾ وڏي بيچ ۾ داخل ڪريو.
  • لچڪدار اسڪيم. جي وقت جو سلسلو اسان عام طور تي ڊيٽا جي جوڙجڪ کي مڪمل طور تي نٿا ڄاڻون. اهو ممڪن آهي ته هڪ مخصوص ايپليڪيشن لاءِ مانيٽرنگ سسٽم ٺاهڻ، پر پوءِ ان کي ڪنهن ٻئي ايپليڪيشن لاءِ استعمال ڪرڻ مشڪل آهي. اهو هڪ وڌيڪ لچڪدار اسڪيم جي ضرورت آهي. ڪلڪ ڪريو هائوس, توهان کي اهو ڪرڻ جي اجازت ڏئي ٿي، جيتوڻيڪ اهو هڪ مضبوط ٽائپ ڪيل بنياد آهي.
  • موثر اسٽوريج ۽ ڊيٽا جي وسارڻ. عام طور تي وقت جو سلسلو ڊيٽا جي وڏي مقدار، تنهنڪري ان کي ممڪن طور تي ممڪن طور تي محفوظ ڪيو وڃي. مثال طور، تي 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);

هي هڪ باقاعده ٽيبل آهي جيڪو ڪجهه قسم جي سسٽم لوڊ ڪرڻ واري سرگرمي جي نگراني ڪري ٿو (يوزر, نظام, بيڪار, سٺو). سادو ۽ آسان، پر لچڪدار نه. جيڪڏهن اسان هڪ وڌيڪ لچڪدار اسڪيم چاهيون ٿا ته پوءِ اسان استعمال ڪري سگهون ٿا arrays.

غير منظم ڊيٽا. صفا:

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

ڪلڪ ڪريو هائوس هن سان copes - ان ۾ خاص واڌايون آهن ڪلڪ ڪريو هائوس وارو SQL ايس. مثال طور وڌ ۾ وڌ جيڪڏهن - هڪ خاص فنڪشن جيڪو وڌ ۾ وڌ حساب ڪري ٿو ميٽرڪ طرفان جڏهن ڪجهه شرطن کي پورو ڪيو وڃي. توهان هڪ درخواست ۾ ڪيترائي اهڙا اظهار لکي سگهو ٿا ۽ فوري طور تي ڪيترن ئي ميٽرڪس جي قيمت کي ڳڻيو.

اچو ته ٽن طريقن جو مقابلو ڪريون:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

تفصيل

هتي مون شامل ڪيو آهي "ڊسڪ ڊيٽا سائيز" ڪجهه ٽيسٽ ڊيٽا سيٽ لاءِ. ڪالمن جي صورت ۾، اسان وٽ سڀ کان ننڍو ڊيٽا سائيز آهي: وڌ ۾ وڌ ڪمپريشن، وڌ ۾ وڌ سوال جي رفتار، پر اسان ادا ڪريون ٿا هر شي کي هڪ ڀيرو رڪارڊ ڪرڻ سان.

arrays جي صورت ۾، هر شيء ٿورو خراب آهي. ڊيٽا اڃا تائين چڱي طرح ٺهيل آهي ۽ هڪ غير منظم نموني کي محفوظ ڪري سگهجي ٿو. پر ڪلڪ ڪريو هائوس - هڪ ڪالمن ڊيٽابيس، ۽ جڏهن اسان هر شي کي هڪ صف ۾ رکڻ شروع ڪندا آهيون، اهو هڪ قطار ۾ بدلجي ويندو آهي، ۽ اسان ڪارڪردگي سان لچڪدار لاء ادا ڪندا آهيون. ڪنهن به آپريشن لاءِ، توهان کي پوري صف کي ميموري ۾ پڙهڻو پوندو، پوءِ ان ۾ گهربل عنصر ڳوليو- ۽ جيڪڏهن صف وڌندي، ته رفتار گهٽجي ويندي.

ھڪڙي ڪمپني ۾ جيڪي ھن طريقي کي استعمال ڪن ٿا (مثال طور، سليمان وساڻ)، صفن کي 128 عناصر جي ٽڪرن ۾ ڪٽيو ويو آهي. 200 TB ڊيٽا/ڏينهن جي مقدار سان ڪيترن ئي هزار ميٽرڪس مان ڊيٽا هڪ صف ۾ نه، پر خاص اسٽوريج منطق سان 10 يا 30 صفن ۾ ذخيرو ٿيل آهي.

آسان طريقو تارن سان آهي. پر ڊيٽا خراب طور تي دٻايو ويو آهي، ٽيبل جي سائيز وڏي آهي، ۽ جيتوڻيڪ جڏهن سوال ڪيترن ئي ميٽرڪ تي ٻڌل آهن، ڪلڪ هائوس بهتر طور تي ڪم نٿو ڪري.

هائبرڊ اسڪيم

اچو ته فرض ڪريون ته اسان هڪ سرڪٽ سرڪٽ چونڊيو آهي. پر جيڪڏهن اسان ڄاڻون ٿا ته اسان جا اڪثر ڊيش بورڊ صرف صارف ۽ سسٽم ميٽرڪس ڏيکاريندا آهن، اسان اضافي طور تي انهن ميٽرڪس کي ميز جي سطح تي ڪالمن ۾ شامل ڪري سگهون ٿا:

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);

داخل ڪرڻ وقت ڪلڪ ڪريو هائوس انهن کي خودڪار طريقي سان شمار ڪندو. هن طريقي سان توهان ڪاروبار کي خوشي سان گڏ ڪري سگهو ٿا: اسڪيم لچڪدار ۽ عام آهي، پر اسان سڀ کان وڌيڪ استعمال ٿيل ڪالمن کي ڪڍيو. نوٽ ڪريو ته ان کي تبديل ڪرڻ جي ضرورت نه هئي داخل ۽ اي ٽي ايلجيڪو جدول ۾ arrays داخل ڪرڻ جاري رکي ٿو. اسان صرف ڪيو ALTER ٽيبل، ڪجهه اسپيڪر شامل ڪيا ۽ اسان وٽ هڪ هائبرڊ ۽ تيز اسڪيم آهي جنهن کي توهان استعمال ڪرڻ شروع ڪري سگهو ٿا.

ڪوڊيڪس ۽ کمپريشن

لاء وقت جو سلسلو اهو معاملو آهي ته توهان ڊيٽا کي ڪيئن پيڪ ڪيو ڇو ته معلومات جي مقدار تمام وڏي ٿي سگهي ٿي. 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ته پوءِ اهو به بهتر ٿيندو. اهو مٿي ڄاڻايل مضمون ۾ Perkona جي ماڻهن پاران چڱي طرح ظاهر ڪيو ويو آهي. اهو ضروري آهي ته سڀ کان وڌيڪ ٺهيل قسم جو استعمال ڪيو وڃي جيڪو ڪم لاء مناسب آهي: سوال جي رفتار جي ڀيٽ ۾ ڊسڪ جي سائيز لاء به گهٽ. ڪلڪ ڪريو هائوس هن لاء تمام حساس.

جيڪڏهن توهان استعمال ڪري سگهو ٿا int32 بدران بدران int64، پوءِ ڪارڪردگي ۾ تقريبن ٻه ڀيرا واڌ جي توقع. ڊيٽا گھٽ ميموري وٺندي آهي، ۽ سڀ "رياضي" تمام تيز ڪم ڪري ٿو. ڪلڪ ڪريو هائوس اندروني طور تي اهو هڪ تمام سختي سان ٽائپ ڪيل نظام آهي؛ اهو سڀني ممڪنن جو وڌ کان وڌ استعمال ڪري ٿو جيڪي جديد نظام مهيا ڪن ٿا.

جمع ۽ مادي نظريو

مجموعي ۽ مادي نظريا توهان کي مختلف موقعن لاءِ مجموعا ٺاهڻ جي اجازت ڏين ٿا:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

مثال طور، توهان وٽ غير جمع ٿيل ماخذ ڊيٽا ٿي سگهي ٿو، ۽ توهان هڪ خاص انجڻ جي ذريعي پاڻمرادو مجموعي سان انهن سان مختلف مادي نظريا ڳنڍي سگهو ٿا. SummingMergeTree (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 */

گھڻا درجي - ڊسڪ ۾ ڊيٽا ورهايو

هن خيال کي اڳتي وڌائيندي، ڊيٽا کي محفوظ ڪري سگهجي ٿو ڪلڪ ڪريو هائوس مختلف هنڌن تي. فرض ڪريو اسان گذريل هفتي لاءِ گرم ڊيٽا ذخيرو ڪرڻ چاهيون ٿا تمام تيز لوڪل تي ايس ايم ڊي، ۽ اسان ٻئي هنڌ وڌيڪ تاريخي ڊيٽا رکون ٿا. IN ڪلڪ ڪريو هائوس اهو هاڻي ممڪن آهي:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

توهان هڪ اسٽوريج پاليسي ترتيب ڏئي سگهو ٿا (اسٽوريج پاليسي) سو ڪلڪ ڪريو هائوس خودڪار طريقي سان ڊيٽا کي منتقلي ڪندو جڏهن ته ڪجهه حالتن تائين پهچڻ تي ٻئي اسٽوريج ڏانهن.

پر اهو سڀ ڪجهه ناهي. ھڪڙي مخصوص ٽيبل جي سطح تي، توھان مقرر ڪري سگھوٿا قاعدا صحيح طور تي جڏھن ڊيٽا ٿڌي اسٽوريج ۾ وڃي ٿي. مثال طور، ڊيٽا 7 ڏينهن تائين تمام تيز ڊسڪ تي ذخيرو ٿيل آهي، ۽ هر شيء جيڪا پراڻي آهي، هڪ سست هڪ ڏانهن منتقل ڪئي وئي آهي. اهو سٺو آهي ڇو ته اهو توهان کي سسٽم کي وڌ کان وڌ ڪارڪردگي تي رکڻ جي اجازت ڏئي ٿو، جڏهن ته خرچن کي ڪنٽرول ڪرڻ ۽ ٿڌو ڊيٽا تي پئسا ضايع نه ڪرڻ:

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

منفرد خاصيتون ڪلڪ ڪريو هائوس

لڳ ڀڳ هر شيء ۾ ڪلڪ ڪريو هائوس اهڙيون "نمايون شيون" آهن، پر اهي خاص طور تي بند ٿيل آهن - اهو ڪجهه آهي جيڪو ٻين ڊيٽابيس ۾ ناهي. مثال طور، هتي ڪجهه منفرد خاصيتون آهن ڪلڪ ڪريو هائوس:

  • صفا. جي ڪلڪ ڪريو هائوس صفن لاءِ تمام سٺو سپورٽ، گڏوگڏ انھن تي پيچيده حساب ڪتاب ڪرڻ جي صلاحيت.
  • مجموعي ڊيٽا جي جوڙجڪ. هي "قاتل خاصيتن" مان هڪ آهي ڪلڪ ڪريو هائوس. ان حقيقت جي باوجود ته Yandex جا ماڻهو چون ٿا ته اسان ڊيٽا کي گڏ ڪرڻ نٿا چاهيون، هر شي ۾ جمع ٿيل آهي. ڪلڪ ڪريو هائوس، ڇاڪاڻ ته اهو تيز ۽ آسان آهي.
  • مادي ٿيل نظارا. گڏو گڏ مجموعي ڊيٽا جي جوڙجڪ سان گڏ، مادي نظريا توهان کي آسان بڻائڻ جي اجازت ڏين ٿا اصل وقت گڏ ڪرڻ.
  • هاؤس SQL تي ڪلڪ ڪريو. هي هڪ ٻولي واڌارو آهي وارو SQL ايس ڪجھ اضافي ۽ خاص خصوصيتن سان جيڪي صرف موجود آھن ڪلڪ ڪريو هائوس. اڳي، اهو هڪ طرف توسيع وانگر هو، ۽ ٻئي طرف نقصان. هاڻي تقريبن تمام خرابين جي مقابلي ۾ SQL 92 اسان ان کي هٽايو، هاڻي اهو صرف هڪ واڌارو آهي.
  • Lambda- اظهار. ڇا اهي اڃا تائين ڪنهن ڊيٽابيس ۾ آهن؟
  • ML- حمايت. هي مختلف ڊيٽابيس ۾ موجود آهي، ڪجهه بهتر آهن، ڪجهه خراب آهن.
  • کليل ذريعو. اسان وڌائي سگهون ٿا ڪلڪ ڪريو هائوس گڏ. هاڻي ۾ ڪلڪ ڪريو هائوس اٽڪل 500 مددگار، ۽ اهو انگ مسلسل وڌي رهيو آهي.

مشڪل سوال

В ڪلڪ ڪريو هائوس ساڳي ڪم ڪرڻ جا ڪيترائي مختلف طريقا آهن. مثال طور، توھان واپس ڪري سگھوٿا آخري قدر ھڪڙي ٽيبل مان ٽن مختلف طريقن سان سي پي يو (اتي پڻ هڪ چوٿون آهي، پر اهو اڃا به وڌيڪ غير معمولي آهي).

پهريون ڏيکاري ٿو ته اهو ڪيئن آسان آهي اندر اندر ڪلڪ ڪريو هائوس سوال جڏهن توهان ان کي چيڪ ڪرڻ چاهيو ٿا ٽوال subquery ۾ شامل. اهو ڪجهه آهي جيڪو مون ذاتي طور تي ٻين ڊيٽابيس ۾ ياد ڪيو. جيڪڏهن مان ڪنهن شيءِ کي ذيلي پڇاڙيءَ سان ڀيٽڻ چاهيان ٿو، ته پوءِ ٻين ڊيٽابيس ۾ صرف هڪ اسڪالر ان سان مقابلو ڪري سگهجي ٿو، پر ڪيترن ئي ڪالمن لاءِ مون کي لکڻو پوندو. 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 

В ڪلڪ ڪريو هائوس اتي ڪيترائي درجن جا مجموعا ڪم آھن، ۽ جيڪڏھن توھان combinators استعمال ڪندا، ته پوءِ combinatorics جي قانون موجب توھان انھن مان اٽڪل ھڪ ھزار حاصل ڪندا. 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 شامل ٿيو - مختلف وقتن سان "gluing" قطارون. هي ڊيٽابيس لاءِ هڪ منفرد خصوصيت آهي جيڪا صرف ان ۾ موجود آهي 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 سال بعد

مون واعدو ڪيو Lambdas - هتي اهي آهن!

هي معيار ۾ تجزياتي سوال جو هڪ اينالاگ آهي SQL-2003: هو ٻنهي جي وچ ۾ فرق شمار ڪري ٿو ٽائم اسٽيمپ، مدو, ordinal number - هر شيءِ جنهن کي اسين عام طور تي تجزياتي ڪمن تي غور ڪندا آهيون. IN ڪلڪ ڪريو هائوس اسان انھن کي صفن جي ذريعي شمار ڪريون ٿا: پھريائين اسان ڊيٽا کي ھڪ صف ۾ ڪليپ ڪريون ٿا، ان کان پوءِ اسين ھر شيءِ ڪندا آھيون جيڪو اسان ارن تي چاھيون ٿا، ۽ پوءِ اسان ان کي واپس وڌايو. اهو تمام آسان ناهي، ان کي گهٽ ۾ گهٽ فنڪشنل پروگرامنگ جي محبت جي ضرورت آهي، پر اهو تمام لچڪدار آهي.

خاص خاصيتون

ان کان علاوه، ۾ ڪلڪ ڪريو هائوس ڪيترائي خاص ڪم. مثال طور، اهو ڪيئن طئي ڪيو وڃي ته ڪيترا سيشن هڪ ئي وقت ۾ ٿي رهيا آهن؟ هڪ عام نگراني جو ڪم هڪ درخواست سان وڌ ۾ وڌ لوڊ جو تعين ڪرڻ آهي. IN ڪلڪ ڪريو هائوس ھن مقصد لاء ھڪڙو خاص فنڪشن آھي:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

عام طور تي، ClickHouse ڪيترن ئي مقصدن لاء خاص ڪم ڪيو آهي:

  • ڊوڙندڙ فرق، ڊوڙندڙ جمع، پاڙيسري؛
  • sumMap (ڪي، قدر)؛
  • timeSeriesGroupSum (uid, timestamp, value);
  • timeSeriesGroupRateSum(uid, timestamp, value);
  • skewPop, skewSamp, kurtPop, kurtSamp;
  • ڀرڻ سان / ڳنڍڻ سان؛
  • سادي لڪير ريگريشن، اسٽوچسٽڪ لائنري ريگريشن.

هي ڪمن جي مڪمل فهرست ناهي، مجموعي طور تي 500-600 آهن. اشارو: سڀ فنڪشن ۾ ڪلڪ ڪريو هائوس سسٽم ٽيبل ۾ آهي (سڀ دستاويز نه آهن، پر سڀ دلچسپ آهن):

select * from system.functions order by name

ڪلڪ ڪريو هائوس اهو پنهنجي باري ۾ تمام گهڻي معلومات محفوظ ڪري ٿو، بشمول لاگ ٽيبل, query_log, ٽريڪ لاگ، ڊيٽا بلاڪ سان عملن جو لاگ (حصو_لاگ)، ميٽرڪس لاگ، ۽ سسٽم لاگ، جيڪو عام طور تي ڊسڪ تي لکندو آهي. لاگ ميٽرڪس آهي وقت جو سلسلو в ڪلڪ ڪريو هائوس حقيقت ۾ ڪلڪ ڪريو هائوس: ڊيٽابيس پاڻ هڪ ڪردار ادا ڪري سگهي ٿو وقت جو سلسلو ڊيٽابيس، اهڙيءَ طرح پاڻ کي ”کائڻ“.

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

اهو پڻ هڪ منفرد شيء آهي - ڇاڪاڻ ته اسان لاء سٺو ڪم ڪندا آهيون وقت جو سلسلو، اسان پنهنجي اندر ۾ گهربل هر شيءِ ڇو نٿا رکي سگهون؟ اسان کي ضرورت ناهي Prometheus، اسان سڀ ڪجهه پاڻ وٽ رکون ٿا. ڳنڍيل گرافانا ۽ اسان پاڻ کي نگراني ڪندا آهيون. بهرحال، جيڪڏهن ڪلڪ ڪريو هائوس پوي ٿو، اسان نه ڏسنداسين ڇو، تنهن ڪري اهي عام طور تي ائين نٿا ڪن.

وڏو ڪلستر يا ڪيترائي ننڍا ڪلڪ ڪريو هائوس

ڇا بهتر آهي - هڪ وڏو ڪلستر يا ڪيترائي ننڍا ڪلڪ هائوس؟ روايتي طريقي سان ڊي ڊبليو ايڇ هڪ وڏو ڪلستر آهي جنهن ۾ سرڪٽ هر ايپليڪيشن لاء مختص ڪيا ويا آهن. اسان ڊيٽابيس ايڊمنسٽريٽر وٽ آياسين - اسان کي هڪ خاڪو ڏيو، ۽ انهن اسان کي هڪ ڏنو:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

В ڪلڪ ڪريو هائوس توهان ان کي مختلف طرح ڪري سگهو ٿا. توهان هر ايپليڪيشن کي پنهنجو پاڻ ٺاهي سگهو ٿا ڪلڪ ڪريو هائوس:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

اسان کي هاڻي وڏي شيطان جي ضرورت ناهي ڊي ڊبليو ايڇ ۽ ناقابل برداشت منتظم. اسان هر ايپليڪيشن کي پنهنجو پاڻ ڏئي سگهون ٿا ڪلڪ ڪريو هائوس، ۽ ڊولپر ان کي پاڻ ڪري سگهي ٿو، کان وٺي ڪلڪ ڪريو هائوس انسٽال ڪرڻ بلڪل آسان ۽ پيچيده انتظاميه جي ضرورت ناهي:

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

پر جيڪڏهن اسان وٽ تمام گهڻو آهي ڪلڪ ڪريو هائوس, ۽ توهان کي ان کي اڪثر انسٽال ڪرڻ جي ضرورت آهي، ته پوء توهان هن عمل کي خودڪار ڪرڻ چاهيو ٿا. ان لاءِ اسان استعمال ڪري سگھون ٿا، مثال طور ڪوبنيٿس и ڪلڪ هائوس- آپريٽر. IN ڪبرنيٽس ڪلڪ هائوس توھان ان کي "آن-ڪلڪ" ڪري سگھو ٿا: مان ھڪڙي بٽڻ تي ڪلڪ ڪري سگھوٿا، مينيفيسٽ کي هلائي سگھوٿا ۽ ڊيٽابيس تيار آھي. مان فوري طور تي هڪ ڊاگرام ٺاهي سگهان ٿو، اتي ميٽرڪ اپ لوڊ ڪرڻ شروع ڪري سگهان ٿو، ۽ 5 منٽن ۾ مون وٽ ڊيش بورڊ تيار آهي گرافانا. اهو تمام سادو آهي!

آخر ۾ ڇا ٿيو؟

۽ ائين، ڪلڪ ڪريو هائوس - هي:

  • فاسٽ. اهو سڀڪو ڄاڻي ٿو.
  • بس. ٿورو متضاد، پر مان سمجهان ٿو ته اهو تربيت ۾ ڏکيو آهي، جنگ ۾ آسان. جيڪڏھن توھان سمجھو ته ڪيئن ڪلڪ ڪريو هائوس اهو ڪم ڪري ٿو، پوء هر شيء بلڪل سادو آهي.
  • گڏيل طور تي. اهو مختلف حالتن لاء مناسب آهي: DWH، ٽائيم سيريز، لاگ اسٽوريج. پر اهو نه آهي او ايل ٽي پي ڊيٽابيس، تنهنڪري مختصر داخل ڪرڻ ۽ اتي پڙهڻ جي ڪوشش نه ڪريو.
  • دلچسپ آهي. شايد اهو جيڪو ڪم ڪري ٿو ڪلڪ ڪريو هائوس، ڪيترن ئي دلچسپ لمحن جو تجربو سٺو ۽ خراب احساس ۾. مثال طور، هڪ نئين رليز ٻاهر آيو، سڀڪنھن شيء کي ڪم ڪرڻ بند ڪيو. يا جڏهن توهان ٻن ڏينهن تائين ڪنهن ڪم سان جدوجهد ڪئي، پر ٽيليگرام چيٽ ۾ هڪ سوال پڇڻ کان پوء، اهو ڪم ٻن منٽن ۾ حل ڪيو ويو. يا پسند ڪريو ڪانفرنس ۾ ليشا ملوودوف جي رپورٽ تي، هڪ اسڪرين شاٽ مان ڪلڪ ڪريو هائوس نشريات کي ٽوڙي ڇڏيو هاء لوڊ ++. اهڙي قسم جي شيء هر وقت ٿئي ٿي ۽ اسان جي زندگي کي ڏکيو بڻائي ٿو. ڪلڪ ڪريو هائوس روشن ۽ دلچسپ!

توهان پيشڪش ڏسي سگهو ٿا هتي.

ڪلڪ هائوس ڏانهن منتقل: 3 سال بعد

تي اعلي-لوڊ سسٽم جي ڊولپرز جي ڊگهي-انتظار اجلاس هاء لوڊ ++ نومبر 9 ۽ 10 تي Skolkovo ۾ جاء وٺندو. آخرڪار، هي هڪ آف لائن ڪانفرنس هوندي (جيتوڻيڪ سڀني احتياطن سان گڏ)، ڇو ته هاء لوڊ ++ جي توانائي آن لائن پيڪيج نه ٿي سگهي.

ڪانفرنس لاءِ، اسان توهان کي ٽيڪنالاجي جي وڌ ۾ وڌ صلاحيتن بابت ڪيس ڳوليندا ۽ ڏيکاريندا آهيون: HighLoad++ اها واحد جڳهه هئي، آهي ۽ هوندي جتي توهان ٻن ڏينهن ۾ سکي سگهو ٿا ته ڪيئن Facebook، Yandex، VKontakte، Google ۽ Amazon ڪم ڪن ٿا.

2007 کان بغير مداخلت جي اسان جون گڏجاڻيون منعقد ڪيون ويون آهن، هن سال اسان 14 هين ملاقات ڪنداسين. هن عرصي دوران، ڪانفرنس 10 ڀيرا وڌي وئي آهي؛ گذريل سال، اهم صنعت جي واقعي ۾ 3339 شرڪت، 165 اسپيڪر، رپورٽون ۽ ملاقاتون گڏ ڪيون ويون آهن، ۽ 16 ٽريڪ هڪ ئي وقت هلائي رهيا هئا.
گذريل سال 20 بسون، 5280 ليٽر چانهه ۽ ڪافي، 1650 ليٽر فروٽ مشروبات ۽ 10200 پاڻي جون بوتلون هيون. ۽ ٻيو 2640 ڪلوگرام کاڌو، 16 پليٽون ۽ 000 پيالا. رستي ۾، ريسائيڪل پيپر مان گڏ ڪيل پئسن سان، اسان 25 بلوط جا ٻج پوکيا :)

توهان ٽڪيٽ خريد ڪري سگهو ٿا هتيڪانفرنس جي خبر حاصل ڪريو - هتي، ۽ سڀني سماجي نيٽ ورڪن تي ڳالهايو: تار, ڪريو, Vkontakte и Twitter.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو