اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

هيٺ ڏنل ڊيٽابيس ۾ Yandex جي تعاون جو جائزو ورتو ويندو.

  • ڪلڪ ڪريو هائوس
  • Odyssey
  • وقت ۾ هڪ نقطي تي بحالي (WAL-G)
  • PostgreSQL (بشمول لاگررز، ايمچڪ، هيپ چيڪ)
  • گرين پلم

وڊيو:

هيلو دنيا! منهنجو نالو Andrey Borodin آهي. ۽ جيڪو مان Yandex.Cloud تي ڪريان ٿو اهو Yandex.Cloud ۽ Yandex.Cloud ڪلائنٽ جي مفاد ۾ کليل لاڳاپو ڊيٽابيس ٺاهي رهيو آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

هن ڳالهه ٻولهه ۾، اسان انهن چئلينجن بابت ڳالهائينداسين جيڪي کليل ڊيٽابيس کي درپيش آهن پيماني تي. اهو ڇو ضروري آهي؟ ڇاڪاڻ ته ننڍڙا، ننڍڙا مسئلا جيڪي، مڇر وانگر، پوءِ هاٿي بڻجي ويندا آهن. اهي وڏا ٿين ٿا جڏهن توهان وٽ ڪيترائي ڪلستر آهن.

پر اهو بنيادي شيء ناهي. ناقابل يقين شيون ٿين ٿيون. اهي شيون جيڪي هڪ ملين ڪيسن ۾ ٿينديون آهن. ۽ بادل جي ماحول ۾، توهان کي ان لاءِ تيار رهڻو پوندو، ڇاڪاڻ ته ناقابل يقين شيون انتهائي ممڪن ٿي وينديون آهن جڏهن ڪا شيءِ پيماني تي موجود هجي.

پر! اوپن ڊيٽابيس جو فائدو ڇا آهي؟ حقيقت اها آهي ته توهان وٽ ڪنهن به مسئلي سان ڊيل ڪرڻ لاء نظرياتي موقعو آهي. توهان وٽ سورس ڪوڊ آهي، توهان وٽ پروگرامنگ جي ڄاڻ آهي. اسان ان کي گڏ ڪيو ۽ اهو ڪم ڪري ٿو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اوپن سورس سافٽ ويئر تي ڪم ڪرڻ ۾ ڪهڙا طريقا آهن؟

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

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اوپن سورس سافٽ ويئر جي ميدان ۾ سڀ کان وڌيڪ مشهور Yandex منصوبن مان هڪ آهي ClickHouse. هي هڪ ڊيٽابيس آهي جيڪو Yandex.Metrica کي منهن ڏيڻ واري چئلينج جي جواب جي طور تي پيدا ٿيو.

۽ هڪ ڊيٽابيس جي طور تي، اهو هڪ ايڪو سسٽم ٺاهڻ ۽ ان کي ٻين ڊولپرز (نه رڳو Yandex جي اندر) سان گڏ ترقي ڪرڻ لاء اوپن سورس ۾ ٺاهيو ويو آهي. ۽ ھاڻي اھو ھڪڙو وڏو منصوبو آھي جنھن ۾ ڪيتريون ئي مختلف ڪمپنيون شامل آھن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

Yandex.Cloud ۾، اسان Yandex Object Storage جي مٿي تي ClickHouse ٺاهي، يعني ڪلائوڊ اسٽوريج جي چوٽي تي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

بادل ۾ هي اهم ڇو آهي؟ ڇاڪاڻ ته ڪو به ڊيٽابيس ڪم ڪري ٿو هن ٽڪنڊي ۾، هن پرامڊ ۾، ميموري جي قسم جي هن درجي بندي ۾. توھان وٽ آھن تيز پر ننڍا رجسٽر ۽ سستا وڏا پر سست SSDs، هارڊ ڊرائيو ۽ ڪجھ ٻيون بلاڪ ڊيوائسز. ۽ جيڪڏھن توھان موثر آھيو پرامڊ جي چوٽي تي، پوء توھان وٽ ھڪڙو تيز ڊيٽابيس آھي. جيڪڏهن توهان هن پرامڊ جي تري ۾ موثر آهيو، ته توهان وٽ هڪ اسڪيل ٿيل ڊيٽابيس آهي. ۽ انهي سلسلي ۾، هيٺان کان هڪ ٻيو پرت شامل ڪرڻ هڪ منطقي طريقو آهي ڊيٽابيس جي اسپيبلبل کي وڌائڻ لاء.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اهو ڪيئن ٿي سگهي ٿو؟ هن رپورٽ ۾ هڪ اهم نقطو آهي.

  • اسان MDS تي ڪلڪ هائوس کي لاڳو ڪري سگهون ٿا. MDS هڪ اندروني Yandex ڪلائوڊ اسٽوريج انٽرفيس آهي. اهو عام S3 پروٽوڪول کان وڌيڪ پيچيده آهي، پر اهو هڪ بلاڪ ڊوائيس لاء وڌيڪ مناسب آهي. اهو ڊيٽا کي رڪارڊ ڪرڻ لاء بهتر آهي. اهو وڌيڪ پروگرامنگ جي ضرورت آهي. پروگرامر پروگرام ڪندا، اهو به سٺو آهي، اهو دلچسپ آهي.
  • S3 ھڪڙو وڌيڪ عام طريقو آھي جيڪو انٽرفيس کي آسان بڻائي ٿو گھٽ موافقت جي قيمت تي ڪجھ خاص قسم جي ڪم لوڊ.

قدرتي طور تي، سڄي ClickHouse ecosystem کي ڪارڪردگي مهيا ڪرڻ ۽ Yandex.Cloud جي اندر گهربل ڪم ڪرڻ جي خواهش، اسان اهو پڪ ڪرڻ جو فيصلو ڪيو ته سڄي ClickHouse ڪميونٽي ان مان فائدو وٺندي. اسان ڪلڪ هاؤس کي S3 تي لاڳو ڪيو، نه MDS مٿان ClickHouse. ۽ اهو تمام گهڻو ڪم آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

حوالا:

https://github.com/ClickHouse/ClickHouse/pull/7946 "فائل سسٽم تجزيه پرت"
https://github.com/ClickHouse/ClickHouse/pull/8011 "AWS SDK S3 انضمام"
https://github.com/ClickHouse/ClickHouse/pull/8649 "S3 لاءِ IDisk انٽرفيس جو بنيادي نفاذ"
https://github.com/ClickHouse/ClickHouse/pull/8356 "IDisk انٽرفيس سان لاگ اسٽوريج انجڻ جو انضمام"
https://github.com/ClickHouse/ClickHouse/pull/8862 "S3 ۽ SeekableReadBuffer لاءِ لاگ انجڻ جي مدد"
https://github.com/ClickHouse/ClickHouse/pull/9128 "اسٽوريج پٽي لاگ S3 سپورٽ"
https://github.com/ClickHouse/ClickHouse/pull/9415 "اسٽوريج MergeTree S3 لاءِ ابتدائي سپورٽ"
https://github.com/ClickHouse/ClickHouse/pull/9646 "S3 لاءِ MergeTree مڪمل سپورٽ"
https://github.com/ClickHouse/ClickHouse/pull/10126 "S3 مٿان ReplicatedMergeTree جي سپورٽ ڪريو"
https://github.com/ClickHouse/ClickHouse/pull/11134 "s3 اسٽوريج لاءِ ڊفالٽ سندون ۽ ڪسٽم هيڊر شامل ڪريو"
https://github.com/ClickHouse/ClickHouse/pull/10576 "S3 متحرڪ پراکسي ترتيب سان"
https://github.com/ClickHouse/ClickHouse/pull/10744 "پراکسي حل ڪندڙ سان S3"

هي ڪلڪ هاؤس ۾ هڪ ورچوئل فائل سسٽم کي لاڳو ڪرڻ لاءِ ڇڪڻ جي درخواست جي فهرست آهي. هي پل جي درخواستن جو هڪ وڏو تعداد آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

حوالا:

https://github.com/ClickHouse/ClickHouse/pull/9760 "DiskS3 هارڊ لنڪس جو بهترين عمل درآمد"
https://github.com/ClickHouse/ClickHouse/pull/11522 "S3 HTTP ڪلائنٽ - ميموري ۾ جوابي وهڪرو نقل ڪرڻ کان پاسو ڪريو"
https://github.com/ClickHouse/ClickHouse/pull/11561 S3 HTTP ۾ ميموري ۾ پوري جوابي اسٽريم کي نقل ڪرڻ کان پاسو ڪريو
گراهڪ"
https://github.com/ClickHouse/ClickHouse/pull/13076 "S3 ڊسڪ لاء ڪيش مارڪ ۽ انڊيڪس فائلن جي صلاحيت"
https://github.com/ClickHouse/ClickHouse/pull/13459 "حصو منتقل ڪريو DiskLocal کان DiskS3 تائين متوازي ۾"

پر ڪم اتي ختم نه ٿيو. خصوصيت جي ٺهڻ کان پوء، هن ڪارڪردگي کي بهتر ڪرڻ لاء ڪجهه وڌيڪ ڪم جي ضرورت هئي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

حوالا:

https://github.com/ClickHouse/ClickHouse/pull/12638 "شامل ڪريو منتخب ٿيل قطارون ۽ چونڊيل بائيٽس واقعا"
https://github.com/ClickHouse/ClickHouse/pull/12464 "S3 درخواست کان system.events ۾ پروفائلنگ واقعا شامل ڪريو"
https://github.com/ClickHouse/ClickHouse/pull/13028 "شامل ڪريو QueryTimeMicroseconds، SelectQueryTimeMicroseconds ۽ InsertQueryTimeMicroseconds"

۽ پوءِ ان کي تشخيص ڪرڻ، مانيٽرنگ قائم ڪرڻ ۽ ان کي منظم ڪرڻ ضروري هو.

۽ اهو سڀ ڪجهه ڪيو ويو ته جيئن سڄي ڪميونٽي، سڄي ڪلڪ هائوس ماحولياتي نظام، هن ڪم جو نتيجو حاصل ڪيو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اچو ته اڳتي وڌون ٽرانزيڪشنل ڊيٽابيس ڏانهن، OLTP ڊيٽابيسس ڏانهن، جيڪي ذاتي طور تي منهنجي ويجهو آهن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

هي اوپن سورس ڊي بي ايم ايس ڊولپمينٽ ڊويزن آهي. اهي ماڻهو اسٽريٽ جادو ڪري رهيا آهن ٽرانزيڪشنل اوپن ڊيٽابيس کي بهتر ڪرڻ لاءِ.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

منصوبن مان هڪ، هڪ مثال استعمال ڪندي جنهن مان اسان ڳالهائي سگهون ٿا ته ڪيئن ۽ اسان ڇا ڪندا آهيون، پوسٽ گريس ۾ ڪنيڪشن پولر آهي.

Postgres هڪ پروسيس ڊيٽابيس آهي. هن جو مطلب اهو آهي ته ڊيٽابيس کي ممڪن طور تي گهٽ نيٽ ورڪ ڪنيڪشن هجڻ گهرجي جيڪي ٽرانزيڪشن کي سنڀاليندا آهن.

ٻئي طرف، بادل جي ماحول ۾، هڪ عام صورتحال آهي جڏهن هڪ هزار ڪنيڪشن هڪ ئي وقت ۾ هڪ ڪلستر ۾ اچي ٿو. ۽ ڪنيڪشن پولر جو ڪم هڪ هزار ڪنيڪشن کي ٿورڙي تعداد ۾ سرور ڪنيڪشن ۾ ڀرڻ آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اسان اهو چئي سگهون ٿا ته ڪنيڪشن پولر ٽيليفون آپريٽر آهي جيڪو بائيٽ کي ٻيهر ترتيب ڏئي ٿو ته جيئن اهي موثر طريقي سان ڊيٽابيس تائين پهچي سگهن.

بدقسمتي سان، ڪنيڪشن پولر لاء ڪو سٺو روسي لفظ ناهي. ڪڏهن ڪڏهن ان کي multilexer ڪنيڪشن سڏيو ويندو آهي. جيڪڏھن توھان ڄاڻو ٿا ته ڪنيڪشن پولر کي ڇا سڏيو وڃي، پوء مون کي ٻڌائڻ جو يقين رکجو، مان صحيح روسي ٽيڪنيڪل ٻولي ڳالھائڻ لاء ڏاڍو خوش ٿيندو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://pgconf.ru/2017/92899

اسان تحقيق ڪئي ڪنيڪشن پولرز جيڪي منظم پوسٽ گريس ڪلستر لاءِ مناسب هئا. ۽ PgBouncer اسان لاءِ بهترين انتخاب هو. پر اسان PgBouncer سان ڪيترن ئي مسئلن جو سامنا ڪيو. ڪيترائي سال اڳ، Volodya Borodin رپورٽون ڏنيون ته اسان PgBouncer استعمال ڪندا آهيون، اسان کي هر شي پسند آهي، پر اتي موجود آهن nuances، اتي ڪم ڪرڻ لاء ڪجهه آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://pgconf.ru/media/2017/04/03/20170316H1_V.Borodin.pdf

۽ اسان ڪم ڪيو. اسان انهن مسئلن کي حل ڪيو جن جو اسان سامنا ڪيو، اسان باؤنسر کي پيچ ڪيو، ۽ پل جي درخواستن کي مٿي ڪرڻ جي ڪوشش ڪئي. پر بنيادي سنگل سلسلي سان ڪم ڪرڻ ڏکيو هو.

اسان کي پيچ ٿيل باؤنسرز کان cascades گڏ ڪرڻو پيو. جڏهن اسان وٽ ڪيترائي سنگل ٿريڊڊ بائونسر هوندا آهن، مٿين پرت تي ڪنيڪشن بائونسر جي اندروني پرت ڏانهن منتقل ڪيا ويندا آهن. هي هڪ ناقص انتظام ٿيل نظام آهي جنهن کي ٺاهڻ ۽ اڳتي وڌڻ ڏکيو آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اسان ان نتيجي تي پهتاسين ته اسان پنهنجو ڪنيڪشن پولر ٺاهيو، جنهن کي Odyssey سڏيو وڃي ٿو. اسان ان کي شروع کان لکيو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.pgcon.org/2019/schedule/events/1312.en.html

2019 ۾، PgCon ڪانفرنس ۾، مون هن پولر کي ڊولپر ڪميونٽي ڏانهن پيش ڪيو. ھاڻي اسان وٽ GitHub تي 2 تارن کان ٿورو گھٽ آھي، يعني پروجيڪٽ زنده آھي، پروجيڪٽ مشهور آھي.

۽ جيڪڏهن توهان Yandex.Cloud ۾ پوسٽ گريس ڪلستر ٺاهيندا آهيو، ته اهو بلٽ ان اوڊيسي سان گڏ هڪ ڪلستر هوندو، جيڪو ٻيهر ترتيب ڏنو ويندو آهي جڏهن ڪلستر کي پوئتي يا اڳتي وڌايو ويندو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اسان هن منصوبي مان ڇا سکيو؟ مقابلي واري منصوبي کي شروع ڪرڻ هميشه هڪ جارحتي قدم هوندو آهي، اهو هڪ انتهائي قدم آهي جڏهن اسان چئون ٿا ته اهڙا مسئلا آهن جيڪي جلدي حل نه ٿي رهيا آهن، وقت جي وقفن ۾ حل نه ڪيا ويا آهن جيڪي اسان لاء مناسب هوندا. پر هي هڪ مؤثر انداز آهي.

PgBouncer تيزيءَ سان ترقي ڪرڻ لڳو.

۽ هاڻي ٻيا منصوبا ظاهر ٿيا آهن. مثال طور، pgagroal، جيڪو Red Hat ڊولپرز پاران تيار ڪيو ويو آھي. اهي ساڳيون مقصدن جي تعاقب ڪن ٿا ۽ ساڳئي خيالن تي عمل ڪن ٿا، پر، يقينا، انهن جي پنهنجي خاصيتن سان، جيڪي pgagroal ڊولپرز جي ويجهو آهن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

پوسٽ گريس ڪميونٽي سان ڪم ڪرڻ جو هڪ ٻيو ڪيس وقت ۾ هڪ نقطي تي بحال ٿي رهيو آهي. هي هڪ ناڪامي کان پوء بحالي آهي، هي هڪ بيڪ اپ مان وصولي آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اتي ڪيترائي بيڪ اپ آهن ۽ اهي سڀ مختلف آهن. تقريبن هر پوسٽ گريس وينڊر وٽ پنهنجو بيڪ اپ حل آهي.

جيڪڏهن توهان سڀ بيڪ اپ سسٽم وٺو، هڪ فيچر ميٽرڪس ٺاهيو ۽ مذاق سان هن ميٽرڪس ۾ مقرر ڪندڙ حساب ڪريو، اهو صفر ٿيندو. هن جو مطلب ڇا آهي؟ ڇا جيڪڏهن توهان هڪ مخصوص بيڪ اپ فائل وٺي، پوء ان کي ٻين سڀني جي ٽڪرن مان گڏ نه ٿو ڪري سگهجي. اهو پنهنجي عمل ۾ منفرد آهي، اهو پنهنجي مقصد ۾ منفرد آهي، اهو ان ۾ شامل خيالن ۾ منفرد آهي. ۽ اهي سڀ مخصوص آهن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-faster-restores-for-postgres/

جڏهن اسان هن مسئلي تي ڪم ڪري رهيا هئاسين، CitusData شروع ڪيو WAL-G پروجيڪٽ. هي هڪ بيڪ اپ سسٽم آهي جيڪو بادل ماحول جي نظر سان ٺاهيو ويو آهي. هاڻي CitusData اڳ ۾ ئي Microsoft جو حصو آهي. ۽ ان وقت، اسان واقعي پسند ڪيو اهي خيال جيڪي WAL-G جي شروعاتي رليز ۾ رکيا ويا آهن. ۽ اسان هن منصوبي ۾ حصو وٺڻ شروع ڪيو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://github.com/wal-g/wal-g/graphs/contributors

ھاڻي ھن منصوبي ۾ ڪيترائي درجن ڊولپر آھن، پر WAL-G ۾ 10 مٿاھين مدد ڪندڙن ۾ 6 Yandexoids شامل آھن. اسان اتي پنهنجا ڪيترائي خيال کڻي آيا. ۽، يقيناً، اسان انهن کي پاڻ لاڳو ڪيو، انهن کي پاڻ آزمايو، انهن کي پاڻ پيداوار ۾ شامل ڪيو، اسان انهن کي پاڻ استعمال ڪريون، اسان پاڻ پتو لڳايو ته اڳتي ڪٿي وڃڻو آهي، جڏهن ته وڏي WAL-G ڪميونٽي سان لهه وچڙ ۾.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

۽ اسان جي نقطه نظر کان، هاڻي هي بيڪ اپ سسٽم، جنهن ۾ اسان جي ڪوششن کي نظر ۾ رکندي، بادل جي ماحول لاءِ بهتر ٿي چڪو آهي. هي ڪلائوڊ ۾ پوسٽ گريس کي بيڪ اپ ڪرڻ جي بهترين قيمت آهي.

هن جو ڇا مطلب آهي؟ اسان هڪ وڏي خيال کي فروغ ڏئي رهيا هئاسين: بيڪ اپ محفوظ هجڻ گهرجي، هلائڻ لاء سستو ۽ بحال ڪرڻ لاء جيترو جلدي ممڪن آهي.

ان کي هلائڻ لاء سستو ڇو هجڻ گهرجي؟ جڏهن ڪجھ به ڀڄي نه ويو آهي، توهان کي اهو نه ڄاڻڻ گهرجي ته توهان وٽ بيڪ اپ آهي. سڀ ڪجھ ٺيڪ ڪم ڪري ٿو، توھان جيترو ٿي سگھي ٿو گھٽ سي پي يو ضايع ڪريو ٿا، توھان جيترو ممڪن ٿي سگھي پنھنجي ڊسڪ وسيلن جو گھٽ استعمال ڪريو ٿا، ۽ توھان نيٽ ورڪ تي جيترو ٿي سگھي ٿورڙا بائيٽ موڪليندا آھيو ته جيئن توھان جي قيمتي خدمتن جي پيل لوڊ ۾ مداخلت نه ٿئي.

۽ جڏهن سڀ ڪجهه ڀڃي، مثال طور، منتظم ڊيٽا ڪڍي ڇڏيو، ڪجهه غلط ٿي ويو، ۽ توهان کي فوري طور تي ماضي ڏانهن واپس وڃڻ جي ضرورت آهي، توهان سڀني پئسن سان بحال ڪيو، ڇو ته توهان چاهيو ٿا ته توهان جي ڊيٽا جلدي ۽ برقرار رهي.

۽ اسان هن سادي خيال کي وڌايو. ۽، اهو اسان کي لڳي ٿو، اسان ان کي لاڳو ڪرڻ ۾ منظم ڪيو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

پر اهو سڀ ڪجهه ناهي. اسان هڪ وڌيڪ ننڍڙي شيء چاهيون ٿا. اسان چاهيون ٿا ڪيترائي مختلف ڊيٽابيس. اسان جا سڀئي گراهڪ پوسٽ گريس استعمال نٿا ڪن. ڪجهه ماڻهو MySQL، MongoDB استعمال ڪن ٿا. ڪميونٽي ۾، ٻين ڊولپرز فائونڊيشن ڊي بي جي حمايت ڪئي آهي. ۽ اها فهرست مسلسل وڌي رهي آهي.

ڪميونٽي کي ڪلائوڊ ۾ منظم ماحول ۾ ڊيٽابيس جي خيال کي پسند ڪري ٿو. ۽ ڊولپرز انهن جي ڊيٽابيس کي برقرار رکون ٿا، جيڪو اسان جي بيڪ اپ سسٽم سان پوسٽ گريس سان گڏ هڪجهڙائي سان گڏ ٿي سگهي ٿو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اسان هن ڪهاڻي مان ڇا سکيو آهي؟ اسان جي پراڊڪٽ، ڊولپمينٽ ڊويزن جي طور تي، ڪوڊ جون لائينون نه آھن، اھو بيان نه آھي، اھو فائلون نه آھن. اسان جي پيداوار پل درخواستون نه آهي. اهي اهي خيال آهن جن کي اسين سماج تائين پهچايون ٿا. هي آهي ٽيڪنالاجي ماهر ۽ ٽيڪنالاجي جي حرڪت بادل ماحول ڏانهن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اتي ھڪڙو ڊيٽابيس آھي Postgres. مون کي پوسٽ گريس ڪور تمام گهڻو پسند آهي. مان گهڻو وقت گذاريندو آهيان پوسٽ گريس ڪور کي ترقي ڪندي ڪميونٽي سان.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

پر هتي اهو چوڻ گهرجي ته Yandex.Cloud منظم ڊيٽابيس جي اندروني تنصيب آهي. ۽ اهو Yandex.Mail ۾ گهڻو وقت اڳ شروع ٿيو. اها صلاحيت جيڪا هاڻي منظم ٿي وئي آهي پوسٽ گريس کي گڏ ڪيو ويو جڏهن ميل پوسٽ گريس ۾ منتقل ٿيڻ چاهي ٿي.

ميل کي بادل سان تمام گهڻيون گهرجون آهن. اهو توهان جي ضرورت آهي ته توهان جي ڊيٽا ۾ ڪنهن به نقطي تي غير متوقع طور تي وڌندڙ واڌ کي ماپ ڪرڻ جي قابل هجي. ۽ ميل اڳ ۾ ئي ڪيترن ئي لکن ميل بڪسن سان گڏ هڪ وڏي تعداد ۾ استعمال ڪندڙن جي ميل باڪسز سان ڀريل هو جيڪي مسلسل ڪيتريون ئي درخواستون ڪندا آهن.

۽ اها ٽيم لاءِ ڪافي سنجيده چئلينج هئي جيڪا ترقي ڪري رهي هئي Postgres. ان کان پوءِ، اسان کي جيڪي به مسئلا درپيش هئا، انهن جي رپورٽ ڪميونٽي کي ڏني وئي. ۽ انهن مسئلن کي درست ڪيو ويو، ۽ ڪميونٽي طرفان ڪجهه هنڌن تي درست ڪيو ويو جيتوڻيڪ ڪجهه ٻين ڊيٽابيس جي ادا ڪيل سپورٽ جي سطح تي ۽ اڃا به بهتر. اهو آهي، توهان هڪ خط موڪلي سگهو ٿا PgSQL هيڪر ڏانهن ۽ 40 منٽن اندر جواب حاصل ڪري سگهو ٿا. ڪجھ ڊيٽابيس ۾ ادا ڪيل سپورٽ شايد سوچيو ته توھان جي بگ کان وڌيڪ ترجيح شيون آھن.

هاڻي Postgres جي اندروني تنصيب ڊيٽا جي ڪجهه petabytes آهي. اهي في سيڪنڊ ڪجهه لکن جون درخواستون آهن. اهي هزارين ڪلستر آهن. اهو تمام وڏي پيماني تي آهي.

پر اتي هڪ nuance آهي. اهو فينسي نيٽ ورڪ ڊرائيو تي نه رهندو، پر بلڪل سادي هارڊويئر تي. ۽ خاص طور تي دلچسپ نون شين لاءِ ٽيسٽ ماحول آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

۽ هڪ خاص لمحي تي امتحان واري ماحول ۾ اسان کي هڪ پيغام ملي ٿو جيڪو ظاهر ڪري ٿو ته ڊيٽابيس جي اندروني انڊيڪس جي ڀڃڪڙي ڪئي وئي هئي.

هڪ غير متضاد هڪ قسم جو تعلق آهي جيڪو اسان کي هميشه رکڻ جي اميد آهي.

اسان لاءِ انتهائي نازڪ صورتحال آهي. اهو ظاهر ڪري ٿو ته ڪجهه ڊيٽا گم ٿي ويا آهن. ۽ ڊيٽا جو نقصان ڪجهه سڌي تباهي آهي.

عام خيال جيڪو اسان منظم ڊيٽابيس ۾ پيروي ڪندا آهيون اهو آهي ته جيتوڻيڪ ڪوشش سان، ڊيٽا کي وڃائڻ ڏکيو ٿيندو. جيتوڻيڪ جيڪڏهن توهان ڄاڻي واڻي انهن کي هٽايو، توهان اڃا تائين انهن جي غير موجودگي کي ڊگهي عرصي تائين نظر انداز ڪرڻ جي ضرورت پوندي. ڊيٽا سيڪيورٽي هڪ مذهب آهي جنهن جي پيروي ڪندا آهيون تمام گهڻي محنت سان.

۽ هتي هڪ اهڙي صورتحال پيدا ٿئي ٿي جنهن مان پتو پوي ٿو ته شايد ڪا اهڙي صورتحال هجي جنهن لاءِ اسان تيار نه هجون. ۽ اسان هن صورتحال لاء تيار ڪرڻ شروع ڪيو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://commitfest.postgresql.org/23/2171/

پهرين شيء جيڪا اسان ڪئي هئي انهن هزارين ڪلستر مان لاگز کي دفن ڪيو. اسان ڳولي لڌو ته ڪھڙا ڪلستر ڊسڪ تي واقع آھن مشڪلاتي فرم ويئر سان جيڪي ڊيٽا صفحي جي اپڊيٽ کي وڃائي رھيا ھئا. سڀني پوسٽ گريس ڊيٽا ڪوڊ کي نشان لڳايو. ۽ اسان انهن پيغامن کي نشان لڳايو آهي جيڪي ظاهر ڪن ٿا اندروني انتشار جي خلاف ورزين جي ڪوڊ سان جيڪي ڊيٽا جي ڪرپشن کي ڳولڻ لاء ٺهيل آهن.

هن پيچ کي عملي طور تي ڪميونٽي طرفان گهڻو بحث ڪرڻ کان سواء قبول ڪيو ويو، ڇاڪاڻ ته هر مخصوص صورت ۾ اهو واضح هو ته ڪجهه خراب ٿي چڪو هو ۽ لاگ ان جي رپورٽ ڪرڻ جي ضرورت هئي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

ان کان پوء، اسان ان نقطي تي آيا آهيون ته اسان کي مانيٽرنگ آهي ته اسڪين لاگز. ۽ شڪي پيغامن جي صورت ۾، هو ڊيوٽي آفيسر کي اٿاريندو آهي، ۽ ڊيوٽي آفيسر ان جي مرمت ڪندو آهي.

پر! اسڪيننگ لاگز هڪ ڪلستر تي سستو آپريشن آهي ۽ هڪ هزار ڪلسٽرن لاءِ تباهه ڪندڙ مهانگو آهي.

اسان هڪ واڌارو لکيو غلطيون. اهو ڊيٽابيس جو هڪ منظر ٺاهي ٿو جنهن ۾ توهان سستي ۽ جلدي چونڊ ڪري سگهو ٿا ماضي جي غلطين تي انگ اکر. ۽ جيڪڏهن اسان کي ڊيوٽي آفيسر کي جاڳائڻ جي ضرورت آهي، ته اسان گيگا بائيٽ فائلن کي اسڪين ڪرڻ کان سواء، پر هيش ٽيبل مان چند بائيٽ ڪڍڻ سان ان بابت معلوم ڪنداسين.

هي واڌارو اختيار ڪيو ويو آهي، مثال طور، لاء مخزن ۾ CentOS. جيڪڏھن توھان ان کي استعمال ڪرڻ چاھيو ٿا، توھان ان کي پاڻ انسٽال ڪري سگھو ٿا. يقينا، اهو کليل ذريعو آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[ايميل محفوظ ٿيل]

پر اهو سڀ ڪجهه ناهي. اسان استعمال ڪرڻ شروع ڪيو Amcheck، هڪ ڪميونٽي جي ٺاهيل توسيع، انڊيڪس ۾ غير معمولي خلاف ورزي ڳولڻ لاء.

۽ اسان اهو معلوم ڪيو ته جيڪڏهن توهان ان کي پيماني تي هلائيندا آهيو، اتي ڪيڙا آهن. اسان ان کي درست ڪرڻ شروع ڪيو. اسان جي تصحيح قبول ڪئي وئي آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/[ايميل محفوظ ٿيل]

اسان دريافت ڪيو ته هي واڌارو GiST ۽ GIT انڊيڪس جو تجزيو نٿو ڪري سگهي. اسان انهن جي حمايت ڪئي. پر هي حمايت اڃا تائين ڪميونٽي طرفان بحث ڪيو پيو وڃي، ڇاڪاڻ ته هي هڪ نسبتا نئين ڪارڪردگي آهي ۽ اتي تمام گهڻو تفصيل آهن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://commitfest.postgresql.org/29/2667/

۽ اسان اهو پڻ دريافت ڪيو ته جڏهن ريپليڪس ليڊر جي خلاف ورزين لاء انڊيڪس چيڪ ڪريو، ماسٽر تي، سڀ ڪجهه سٺو ڪم ڪري ٿو، پر نقل تي، پيروڪار تي، ڪرپشن جي ڳولا ايتري اثرائتو نه آهي. نه سڀ invariants چيڪ آهن. ۽ هڪ غير معمولي اسان کي تمام گهڻو پريشان ڪيو. ۽ اسان هڪ سال گذاريو ۽ ڪميونٽي سان رابطو ڪرڻ لاءِ هن چيڪ کي ريپليڪس تي فعال ڪرڻ لاءِ.

اسان ڪوڊ لکيو آهي جيڪو سڀني کي پيروي ڪرڻ گهرجي ... پروٽوڪول. اسان هن پيچ تي ڪجهه وقت تائين بحث ڪيو پيٽر گغان سان ڪرچي ڊيٽا کان. هن پيچ کي قبول ڪرڻ لاء پوسٽ گريس ۾ موجود بي-وڻ کي ٿورو تبديل ڪرڻو پيو. هن کي قبول ڪيو ويو. ۽ ھاڻي ريپليڪس تي انڊيڪس چيڪ ڪرڻ به ڪافي اثرائتو ٿي ويو آھي ته انھن خلاف ورزين کي معلوم ڪرڻ لاءِ جن جو اسان سامنا ڪيو آھي. اهو آهي، اهي اهي ڀڃڪڙيون آهن جيڪي ڊسڪ فرم ويئر ۾ غلطيون، پوسٽ گريس ۾ ڪيگ، لينڪس ڪنييل ۾ بگ، ۽ هارڊويئر مسئلن جي ڪري ٿي سگهن ٿيون. مسئلن جي ذريعن جي ڪافي وسيع فهرست جنهن لاء اسان تيار ڪري رهيا هئاسين.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/38AF687F-8F6B-48B4-AB9E-A60CFD6CC261%40enterprisedb.com#0e86a12c01d967bac04a9bf83cd337cb

پر انڊيڪسس کان سواءِ، اتي ھڪڙو حصو آھي جھڙو ڍير، يعني جڳھ جتي ڊيٽا ذخيرو ٿيل آھي. ۽ اتي ڪيترائي غير متضاد نه آھن جن کي چڪاس ڪري سگھجي ٿو.

اسان وٽ هڪ واڌارو آهي Heapcheck. اسان ان کي ترقي ڪرڻ شروع ڪيو. ۽ گڏوگڏ، اسان سان گڏ، انٽرپرائز ڊي بي ڪمپني پڻ هڪ ماڊل لکڻ شروع ڪيو، جنهن کي هن ساڳئي طرح Heapcheck سڏيو. صرف اسان ان کي سڏيو آهي PgHeapcheck، ۽ انهن صرف ان کي سڏيو آهي Heapcheck. انهن وٽ اهو ساڳيو ڪم آهي، ٿورڙي مختلف دستخط، پر ساڳئي خيالن سان. انهن انهن کي ڪجهه هنڌن تي ٿورو بهتر ڪيو. ۽ انهن ان کي پوسٽ ڪيو اوپن سورس ۾ اڳي.

۽ هاڻي اسان انهن جي توسيع کي ترقي ڪري رهيا آهيون، ڇاڪاڻ ته اهو هاڻي انهن جي توسيع ناهي، پر ڪميونٽي جي توسيع. ۽ مستقبل ۾، هي ڪنيل جو حصو آهي جيڪو سڀني کي فراهم ڪيو ويندو ته جيئن اهي مستقبل جي مسئلن بابت اڳ ۾ ئي ڄاڻن.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/fe9b3722df94f7bdb08768f50ee8fe59%40postgrespro.ru

ڪجهه هنڌن تي، اسان ان نتيجي تي پهتا آهيون ته اسان جي نگراني واري نظام ۾ غلط مثبت آهن. مثال طور، 1 سي سسٽم. جڏهن ڊيٽابيس استعمال ڪندي، Postgres ڪڏهن ڪڏهن ان ۾ ڊيٽا لکي ٿو ته اهو پڙهي سگهي ٿو، پر pg_dump پڙهي نٿو سگهي.

اها صورتحال اسان جي مسئلي جي چڪاس واري نظام کي ڪرپشن وانگر نظر آئي. ڊيوٽي آفيسر جاڳي پيو. ڊيوٽي آفيسر ڏٺو ته ڇا ٿي رهيو آهي. ڪجهه وقت کان پوء، هڪ گراهڪ آيو ۽ چيو ته مون کي مسئلو آهي. حاضرين ٻڌايو ته مسئلو ڇا هو. پر مسئلو پوسٽ گريس ڪور ۾ آهي.

مون کي هن مضمون جي باري ۾ هڪ بحث مليو. ۽ هن لکيو ته اسان کي هن خاصيت جو سامنا ٿيو ۽ اهو ناپسنديده هو، هڪ شخص رات جو جاڳيو ته اهو معلوم ڪرڻ لاء ته اهو ڇا آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://www.postgresql.org/message-id/flat/fe9b3722df94f7bdb08768f50ee8fe59%40postgrespro.ru

ڪميونٽي جواب ڏنو، "او، اسان کي واقعي ان کي درست ڪرڻ جي ضرورت آهي."

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

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اسان هتي ڇا سکيو آهي؟ اسان هڪ سادي شيء سکيو: سڀ کان اهم شيء ڪميونٽي کي وضاحت ڪرڻ آهي ته ڪو مسئلو آهي. جيڪڏهن برادريءَ ان مسئلي کي سڃاڻي ورتو آهي ته پوءِ ان مسئلي کي حل ڪرڻ لاءِ فطري مقابلو پيدا ٿئي ٿو. ڇو ته هرڪو هڪ اهم مسئلو حل ڪرڻ چاهي ٿو. سڀ وينڊرز، سڀ هيڪرز سمجھن ٿا ته اھي پاڻ ھن ريڪ تي قدم رکي سگھن ٿا، تنھنڪري اھي انھن کي ختم ڪرڻ چاھين ٿا.

جيڪڏهن توهان ڪنهن مسئلي تي ڪم ڪري رهيا آهيو، پر اهو توهان کان سواءِ ڪنهن کي به تڪليف نه ڏيندو آهي، پر توهان ان تي منظم طريقي سان ڪم ڪندا آهيو ۽ آخرڪار اهو مسئلو سمجهيو ويندو آهي، ته توهان جي پل جي درخواست ضرور قبول ڪئي ويندي. توهان جو پيچ قبول ڪيو ويندو، توهان جي بهتري يا بهتري لاءِ درخواستون به ڪميونٽي طرفان نظرثاني ڪيون وينديون. ڏينهن جي آخر ۾، اسان ڊيٽابيس کي هڪ ٻئي لاءِ بهتر بڻائيندا آهيون.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

هڪ دلچسپ ڊيٽابيس آهي Greenplum. اهو هڪ انتهائي متوازي ڊيٽابيس آهي پوسٽ گريس ڪوڊ بيس تي ٻڌل آهي، جنهن سان مان تمام گهڻو واقف آهيان.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://greenplum.org/greenplum-database-tables-compression/

۽ Greenplum ۾ دلچسپ ڪارڪردگي آهي - اصلاحي جدولن کي شامل ڪريو. اهي ٽيبل آهن جيڪي توهان جلدي شامل ڪري سگهو ٿا. اهي يا ته ڪالمن يا قطار ٿي سگهن ٿا.

پر ڪو به ڪلسترنگ نه هو، يعني ڪا به ڪارڪردگي نه هئي جتي توهان ٽيبل ۾ موجود ڊيٽا کي ترتيب ڏئي سگهو ٿا ترتيب جي مطابق جيڪو هڪ انڊيڪس ۾ آهي.

ٽئڪسي وارا ماڻهو مون وٽ آيا ۽ چيائون: ”اينڊري، تون پوسٽ گريس کي سڃاڻين ٿو. ۽ هتي اهو لڳ ڀڳ ساڳيو آهي. 20 منٽن تي تبديل ڪريو. تون وٺ ۽ ڪر“. مون سوچيو ته ها، مان ڄاڻان ٿو Postgres، 20 منٽن لاء سوئچنگ - مون کي اهو ڪرڻ جي ضرورت آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/commit/179feb77a034c2547021d675082aae0911be40f7

پر نه، اهو 20 منٽ نه هو، مون ان کي مهينن ۾ لکيو. PgConf.Russia ڪانفرنس ۾، مون Pivotal کان Heikki Linakangas سان رابطو ڪيو ۽ پڇيو: ”ڇا ان سان ڪو مسئلو آهي؟ ڇو اتي ڪو اپٽمائزڊ ٽيبل ڪلسترنگ نه آھي؟ هو چوي ٿو: ”توهان ڊيٽا وٺو. توهان ترتيب ڏيو، توهان ٻيهر ترتيب ڏيو. اهو صرف هڪ نوڪري آهي." مون: "ها، ها، توهان کي صرف اهو وٺڻ گهرجي ۽ اهو ڪريو." هو چوي ٿو: "ها، اسان کي اهو ڪرڻ لاء آزاد هٿن جي ضرورت آهي." مون سوچيو ته مون کي ضرور ائين ڪرڻ جي ضرورت آهي.

۽ ڪجهه مهينن بعد مون هڪ پل جي درخواست جمع ڪئي جيڪا هن ڪارڪردگي کي لاڳو ڪيو. هن پل جي درخواست جو جائزو ورتو ويو Pivotal پاران ڪميونٽي سان گڏ. يقينا، اتي ڪيڙا هئا.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/issues/10150

پر سڀ کان وڌيڪ دلچسپ ڳالهه اها آهي ته جڏهن هن ڇڪڻ جي درخواست کي ضم ڪيو ويو، ته ڪيڙا مليا ويا گرينپلم پاڻ ۾. اسان ڏٺو آهي ته هيپ ٽيبل ڪڏهن ڪڏهن ٽرانزيڪشن کي ٽوڙي ڇڏيندا آهن جڏهن ڪلستر ڪيو ويندو آهي. ۽ هي هڪ شيء آهي جنهن کي مقرر ڪرڻ جي ضرورت آهي. ۽ هوءَ ان جاءِ تي آهي جنهن کي مون هٿ ڪيو آهي. ۽ منهنجو قدرتي ردعمل هو - ٺيڪ آهي، مون کي اهو پڻ ڪرڻ ڏيو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/pull/10290

مون هن بگ کي درست ڪيو. فڪسرز ڏانهن ڇڪڻ جي درخواست موڪلي. کيس قتل ڪيو ويو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://github.com/greenplum-db/gpdb-postgres-merge/pull/53

جنهن کان پوءِ اهو معلوم ٿيو ته اها ڪارڪردگي حاصل ڪرڻ جي ضرورت آهي گرين پلم ورزن لاءِ PostgreSQL 12. يعني 20 منٽن جو ايڊونچر نئين دلچسپ ايڊونچر سان جاري آهي. موجوده ترقي کي ڇڪڻ لاء اهو دلچسپ هو، جتي ڪميونٽي نئين ۽ سڀ کان اهم خصوصيتن کي ڪٽيندي آهي. اهو منجهيل آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

https://github.com/greenplum-db/gpdb/pull/10565

پر اهو اتي ختم نه ٿيو. هر شيء کان پوء، اهو ظاهر ٿيو ته اسان کي هن سڀني لاء دستاويز لکڻ جي ضرورت آهي.

مون دستاويز لکڻ شروع ڪيو. خوشقسمتيءَ سان، Pivotal کان ڊاڪيومينٽريز به گڏ آيا. انگريزي سندن مادري ٻولي آهي. انهن مون کي دستاويز سان مدد ڪئي. حقيقت ۾، انهن پاڻ وري لکيو آهي جيڪو مون تجويز ڪيو هو حقيقي انگريزي ۾.

۽ هتي، اهو لڳي ها، جرئت ختم ٿي وئي. ۽ توهان کي خبر آهي ته پوء ڇا ٿيو؟ ٽئڪسي وارا ماڻهو مون وٽ آيا ۽ چيائون: ”اڃا ٻه ايڊونچر آهن، هر هڪ 10 منٽن لاءِ. ۽ مان انهن کي ڇا ٻڌايان؟ مون چيو ته هاڻي مان اسڪيل تي رپورٽ ڏيندس، پوءِ توهان جي ايڊونچرز کي ڏسنداسين، ڇاڪاڻ ته هي هڪ دلچسپ ڪم آهي.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

اسان هن ڪيس مان ڇا سکيو؟ ڇو ته اوپن سورس سان ڪم ڪرڻ هميشه هڪ مخصوص شخص سان ڪم ڪري رهيو آهي، اهو هميشه ڪميونٽي سان ڪم ڪري رهيو آهي. ڇو ته هر اسٽيج تي مون ڪنهن ڊولپر، ڪنهن ٽيسٽر، ڪنهن هيڪر، ڪنهن ڊاڪيومينٽري، ڪنهن آرڪيٽيڪٽ سان ڪم ڪيو آهي. مون گرينپلم سان ڪم نه ڪيو، مون گرينپلم جي ڀرسان ماڻهن سان ڪم ڪيو.

پر! اتي هڪ ٻيو اهم نقطو آهي - اهو صرف ڪم آهي. اهو آهي، توهان اچو، ڪافي پيئو، ڪوڊ لکو. سڀ قسم جا سادا انوائريٽ ڪم ڪن ٿا. اهو عام طور تي ڪريو - اهو ٺيڪ ٿي ويندو! ۽ اهو ڪافي دلچسپ ڪم آهي. هن ڪم لاءِ گذارش آهي Yandex.Cloud ڪلائنٽ کان، اسان جي ڪلستر جا استعمال ڪندڙ ٻئي Yandex اندر ۽ ٻاهران. ۽ مان سمجهان ٿو ته جن منصوبن ۾ اسان حصو وٺنداسين انهن جو تعداد وڌندو ۽ اسان جي شموليت جي کوٽائي به وڌندي.

اهو ئي سڀ ڪجهه آهي. اچو ته سوالن ڏانهن وڃو.

اوپن سورس ڊيٽابيس ۾ اسان ڇا ۽ ڇو ڪندا آهيون. آندري بورودين (Yandex.Cloud)

سوالن جا سيشن

سلام! اسان وٽ هڪ ٻيو سوال ۽ جواب سيشن آهي. ۽ اسٽوڊيو Andrei Borodin ۾. هي اهو شخص آهي جنهن صرف توهان کي Yandex.Cloud ۽ Yandex جي اوپن سورس ۾ تعاون بابت ٻڌايو. اسان جي رپورٽ هاڻي مڪمل طور تي ڪلائوڊ بابت ناهي، پر ساڳئي وقت اسان اهڙين ٽيڪنالاجي تي ٻڌل آهيون. ان کان سواءِ جيڪو توهان Yandex اندر ڪيو، اتي Yandex.Cloud ۾ ڪا به خدمت نه هوندي، تنهنڪري مون کان ذاتي طور تي مهرباني. ۽ براڊڪاسٽ کان پهريون سوال: ”هر هڪ پروجيڪٽ ڇا آهي جنهن تي توهان لکيو آهي؟

WAL-G ۾ بيڪ اپ سسٽم Go ۾ لکيل آهي. اھو ھڪڙو نئون منصوبو آھي جنھن تي اسان ڪم ڪيو آھي. هو لفظي طور تي صرف 3 سالن جي عمر ۾ آهي. ۽ هڪ ڊيٽابيس اڪثر ڪري اعتبار جي باري ۾ آهي. ۽ هن جو مطلب آهي ته ڊيٽابيس ڪافي پراڻا آهن ۽ اهي عام طور تي سي ۾ لکيل آهن پوسٽ گريس پروجيڪٽ تقريبا 30 سال اڳ شروع ڪيو ويو. پوء C89 صحيح انتخاب هو. ۽ ان تي Postgres لکيل آهي. وڌيڪ جديد ڊيٽابيس جهڙوڪ ClickHouse عام طور تي C++ ۾ لکيل آهن. سڀ سسٽم جي ترقي C ۽ C ++ جي چوڌاري مبني آهي.

اسان جي مالي مينيجر کان هڪ سوال، جيڪو ڪلائوڊ تي خرچن جو ذميوار آهي: "ڇو ڪلائوڊ اوپن سورس جي مدد تي پئسا خرچ ڪري ٿو؟"

هتي مالي مينيجر لاء هڪ سادي جواب آهي. اسان اهو ڪندا آهيون اسان جي خدمتن کي بهتر بڻائڻ لاءِ. اسان ڪهڙي طريقن سان بهتر ڪري سگهون ٿا؟ اسان شيون ڪري سگهون ٿا وڌيڪ ڪارائتو، تيز، ۽ شين کي وڌيڪ اسپيبلبل بڻائي سگهون ٿا. پر اسان لاء، هي ڪهاڻي بنيادي طور تي اعتبار بابت آهي. مثال طور، هڪ بيڪ اپ سسٽم ۾ اسان 100٪ پيچ جو جائزو وٺون ٿا جيڪي ان تي لاڳو ٿين ٿا. اسان ڄاڻون ٿا ته ڪوڊ ڇا آهي. ۽ اسان وڌيڪ آرامده آهيون نئين نسخن کي پيداوار لاءِ. اهو آهي، سڀ کان پهريان، اهو اعتماد بابت آهي، ترقي لاء تيارگي ۽ اعتماد بابت

ٻيو سوال: ”ڇا ٻاهرين صارفين جون گهرجون جيڪي Yandex.Cloud ۾ رهن ٿا اهي اندروني استعمال ڪندڙن کان مختلف آهن جيڪي اندروني ڪلائوڊ ۾ رهن ٿا؟

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

اڳيون سوال: ”توهان ذاتي طور تي ان حقيقت بابت ڪيئن ٿا محسوس ڪيو ته توهان جيڪي ڪندا آهيو ان مان گهڻو ڪجهه ٻين ڪلائوڊز طرفان استعمال ڪيو ويندو آهي؟ اسان مخصوص نالو نه ڏينداسين، پر ڪيترائي منصوبا جيڪي Yandex.Cloud ۾ ڪيا ويا آهن ٻين ماڻهن جي بادلن ۾ استعمال ڪيا ويا آهن.

هي ٿڌو آهي. پهرين، اها نشاني آهي ته اسان ڪجهه صحيح ڪيو آهي. ۽ اهو انا کي ڇڪي ٿو. ۽ اسان کي وڌيڪ يقين آهي ته اسان صحيح فيصلو ڪيو آهي. ٻئي طرف، اها اميد آهي ته مستقبل ۾ هي اسان کي نوان خيال آڻيندو، ٽئين پارٽي استعمال ڪندڙن کان نئين درخواستون. GitHub تي اڪثر مسئلا انفرادي سسٽم جي منتظمين، انفرادي ڊي بي ايز، انفرادي آرڪيٽيڪٽس، انفرادي انجنيئرز پاران ٺاهيا ويندا آهن، پر ڪڏهن ڪڏهن سسٽماتي تجربو رکندڙ ماڻهو اچي ٿو ۽ چون ٿا ته 30 سيڪڙو ڪجهه ڪيسن ۾ اسان وٽ اهو مسئلو آهي ۽ اچو ته ان کي حل ڪرڻ بابت سوچيو. اھو اھو آھي جيڪو اسان سڀ کان وڌيڪ منتظر آھيون. اسان ٻين ڪلائوڊ پليٽ فارمن سان تجربو حصيداري ڪرڻ جا منتظر آهيون.

توهان مارٿن بابت تمام گهڻو ڳالهايو. مون کي خبر آهي ته توهان ماسڪو ۾ هڪ ميراٿن ڊوڙي. نتيجي طور؟ PostgreSQL کان ماڻهن کي ختم ڪيو؟

نه، Oleg Bartunov تمام تيز ڊوڙندو آهي. هن مون کان هڪ ڪلاڪ اڳ ختم ڪيو. مجموعي طور تي، مان خوش آهيان ته مان ڪيترو پري آهيان. مون لاء، صرف ختم ڪرڻ هڪ ڪاميابي هئي. مجموعي طور تي، اها حيرت انگيز آهي ته پوسٽ گريس ڪميونٽي ۾ ڪيترائي رانديگر آهن. اهو مون کي لڳي ٿو ته ايروبڪ راندين ۽ سسٽم پروگرامنگ جي خواهش جي وچ ۾ ڪجهه قسم جو تعلق آهي.

ڇا توهان چئو ٿا ته ڪلڪ هاؤس تي ڪو رنرز نه آهن؟

مان پڪ ڄاڻان ٿو ته اهي اتي آهن. ClickHouse پڻ هڪ ڊيٽابيس آهي. رستي ۾، اوليگ هاڻي مون ڏانهن لکي رهيو آهي: "ڇا اسان رپورٽ کان پوء ڊوڙڻ لاء وڃون؟" هي هڪ بهترين خيال آهي.

نڪيتا جي نشريات مان هڪ ٻيو سوال: ”توهان گرين پلم ۾ بگ کي ڇو ٺيڪ ڪيو ۽ جونيئرز کي نه ڏنو؟ سچ، اهو بلڪل واضح ناهي ته بگ ڇا آهي ۽ ڪهڙي خدمت ۾، پر شايد ان جو مطلب اهو آهي جنهن بابت توهان ڳالهايو آهي.

ها، اصول ۾، اهو ڪنهن کي ڏنو وڃي ها. اهو صرف ڪوڊ هو جيڪو مون تبديل ڪيو. ۽ اهو فوري طور تي جاري رکڻ قدرتي هئي. اصول ۾، ٽيم سان ماهر حصيداري جو خيال هڪ سٺو خيال آهي. اسان ضرور ضرور حصيداري ڪنداسين Greenplum ڪم اسان جي ڊويزن جي سڀني ميمبرن جي وچ ۾.

جيئن ته اسان جونيئر بابت ڳالهائي رهيا آهيون، هتي هڪ سوال آهي. ان شخص فيصلو ڪيو ته پوسٽ گريس ۾ پهريون ڪمٽ ٺاهيو. پهرين واعدو ڪرڻ لاءِ هن کي ڇا ڪرڻ جي ضرورت آهي؟

هي هڪ دلچسپ سوال آهي: "ڪٿي شروع ڪجي؟" اهو عام طور تي دانا ۾ ڪجهه سان شروع ڪرڻ تمام ڏکيو آهي. Postgres ۾، مثال طور، اتي ھڪڙي فهرست آھي. پر حقيقت ۾، هي هڪ ورق آهي، جيڪو انهن ڪرڻ جي ڪوشش ڪئي، پر ڪامياب نه ٿيا. اهي پيچيده شيون آهن. ۽ عام طور تي توهان ماحولياتي نظام ۾ ڪجهه افاديت ڳولي سگهو ٿا، ڪجهه واڌايون جيڪي بهتر ٿي سگهن ٿيون، جيڪي ڪنيل ڊولپرز کان گهٽ ڌيان ڇڪيندا آهن. ۽، مطابق، اتي ترقي لاء وڌيڪ پوائنٽون آهن. گوگل سمر آف ڪوڊ پروگرام تي هر سال، پوسٽ گريس ڪميونٽي ڪيترن ئي مختلف عنوانن کي اڳيان رکي ٿو جن کي خطاب ڪري سگهجي ٿو. هن سال اسان وٽ هئا، مان سمجهان ٿو، ٽي شاگرد. هڪ به WAL-G ۾ انهن عنوانن تي لکيو جيڪي Yandex لاءِ اهم آهن. گرينپلم ۾، پوسٽ گريس ڪميونٽي جي ڀيٽ ۾ سڀ ڪجهه آسان آهي، ڇاڪاڻ ته گرينپلم هيڪرز پل جي درخواستن کي تمام سٺو علاج ڪن ٿا ۽ فوري طور تي جائزو وٺڻ شروع ڪن ٿا. پوسٽ گريس ڏانهن پيچ موڪلڻ مهينن جو معاملو آهي، پر گرينپلم هڪ ڏينهن ۾ ايندو ۽ ڏسو ته توهان ڇا ڪيو آهي. ٻي شيء اها آهي ته Greenplum موجوده مسئلن کي حل ڪرڻ جي ضرورت آهي. Greenplum وڏي پيماني تي استعمال نه ڪيو ويو آهي، تنهنڪري توهان جي مسئلي کي ڳولڻ تمام ڏکيو آهي. ۽ سڀ کان پهريان، اسان کي ضرور مسئلا حل ڪرڻ جي ضرورت آهي.

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