ڇا مونگو ڊي بي به صحيح انتخاب هو؟

مون کي تازو معلوم ٿيو ته Red Hat سيٽلائيٽ مان MongoDB سپورٽ کي هٽائي ٿو (اهي چون ٿا لائسنس جي تبديلين جي ڪري). اهو مون کي سوچڻ لڳو ڇو ته گذريل ڪجهه سالن ۾ مون ڪيترن ئي مضمونن کي ڏٺو آهي ته مونگو ڊي بي ڪيترو خوفناڪ آهي ۽ ڪيئن ڪنهن کي به ان کي استعمال نه ڪرڻ گهرجي. پر هن وقت دوران، MongoDB هڪ وڌيڪ پختو پيداوار بڻجي چڪو آهي. ڇا ٿيو؟ ڇا سڀ نفرت واقعي هڪ نئين DBMS جي شروعاتي مارڪيٽنگ ۾ غلطين جي ڪري آهي؟ يا ماڻهو صرف غلط هنڌن تي MongoDB استعمال ڪري رهيا آهن؟

جيڪڏهن توهان محسوس ڪيو ته مان مونگو ڊي بي جو دفاع ڪري رهيو آهيان، مهرباني ڪري پڙهو رد ڪرڻ مضمون جي آخر ۾.

نئون رجحان

مان سافٽ ويئر انڊسٽري ۾ ڪم ڪري رهيو آهيان ان کان وڌيڪ سالن کان جيڪو مان چئي سگهان ٿو، پر مان اڃا تائين صرف انهن رجحانن جو هڪ ننڍڙو حصو ظاهر ڪيو ويو آهي جيڪي اسان جي صنعت کي ماريو آهي. مون 4GL، AOP، Agile، SOA، Web 2.0، AJAX، Blockchain جي عروج کي ڏٺو آهي ... فهرست لامحدود آهي. هر سال نوان رجحان ظاهر ٿيندا آهن. ڪجهه جلدي ختم ٿي ويندا آهن، جڏهن ته ٻيا بنيادي طور تي سافٽ ويئر ٺاهيل طريقي سان تبديل ڪندا آهن.

هر نئون رجحان هڪ عام جوش پيدا ڪري ٿو: ماڻهو يا ته بورڊ تي ٽپو ڏين ٿا، يا ٻين جي پيدا ڪيل شور کي ڏسو ۽ ميڙ جي پيروي ڪريو. اهو عمل گارٽنر پاران ڪوڊ ڪيو ويو آهي hype چڪر. جيتوڻيڪ متضاد، هي ٽائم لائن تقريبن بيان ڪري ٿو ته ٽيڪنالاجيز کي ڇا ٿيندو ان کان اڳ جو اهي آخرڪار ڪارائتو ٿي وڃن.

پر وقت بوقت هڪ نئين جدت ظاهر ٿئي ٿي (يا هڪ سيڪنڊ اچي رهيو آهي، جيئن ته هن معاملي ۾) صرف هڪ خاص عمل جي ذريعي. NoSQL جي صورت ۾، hype وڏي پيماني تي مونگو ڊي بي جي ابتڙ ۽ موسمياتي اڀار طرفان هلائي وئي. مونگو ڊي بي هن رجحان کي شروع نه ڪيو: حقيقت ۾، وڏيون انٽرنيٽ ڪمپنيون وڏي مقدار ۾ ڊيٽا کي پروسيس ڪرڻ ۾ مشڪلاتون پيدا ڪرڻ شروع ڪيو، جنهن جي نتيجي ۾ غير لاڳاپو ڊيٽابيس جي واپسي. مجموعي طور تي تحريڪ گوگل جي بگ ٽيبل ۽ فيس بڪ جي ڪئاسندرا جهڙن منصوبن سان شروع ٿي، پر اهو MongoDB هو جيڪو سڀ کان وڌيڪ مشهور ۽ رسائي لائق NoSQL ڊيٽابيس تي عمل درآمد ٿيو جنهن کي اڪثر ڊولپرز تائين رسائي هئي.

نوٽ: توھان سمجھي سگھو ٿا ته مان ڊاڪيومينٽ ڊيٽابيس کي ڪالمنر ڊيٽابيسس، ڪيئي/ويليو اسٽورز، يا ڊيٽا اسٽورن جي ٻين ڪيترن ئي قسمن مان ڪنھن به قسم جي ڊيٽا اسٽورن کي گڏ ڪري رھيو آھيان جيڪي عام NoSQL تعريف جي تحت اچن ٿا. ۽ توهان صحيح آهيو. پر ان وقت افراتفري جو راڄ هو. هر ڪو NoSQL سان جنون آهي، اهو هرڪو بڻجي چڪو آهي بلڪل ضروري آهي، جيتوڻيڪ ڪيترن ئي مختلف ٽيڪنالاجيز ۾ فرق نه ڏٺو. ڪيترن ئي لاء، MongoDB بڻجي چڪو آهي سان مترادف آهي NoSQL.

۽ ڊولپرز ان تي زور ڏنو. ڪنهن به مسئلي کي حل ڪرڻ لاءِ جادوئي انداز ۾ اسڪيم بيس ڊيٽابيس جو خيال ڪافي پرجوش هو. 2014 جي چوڌاري، اهو لڳي ٿو ته هر جڳهه جيڪو هڪ سال اڳ هڪ تعلقي ڊيٽابيس استعمال ڪيو جهڙوڪ MySQL، Postgres يا SQL Server MongoDB ڊيٽابيس کي ترتيب ڏيڻ شروع ڪيو. جڏهن پڇيو ويو ته ڇو، توهان هڪ جواب حاصل ڪري سگهو ٿا "هي ويب جو پيمانو آهي" کان وڌيڪ سوچيندڙ "منهنجو ڊيٽا تمام گهٽ ٺهيل آهي ۽ هڪ اسڪيما کان سواء ڊيٽابيس ۾ چڱي طرح ٺهڪي اچي ٿو."

اهو ياد رکڻ ضروري آهي ته MongoDB، ۽ دستاويزي ڊيٽابيس عام طور تي، روايتي لاڳاپن واري ڊيٽابيس سان ڪيترن ئي مسئلن کي حل ڪن ٿا:

  • سخت اسڪيم: هڪ لاڳاپي واري ڊيٽابيس سان، جيڪڏهن توهان وٽ متحرڪ طور تي ڊيٽا ٺاهيل آهي، توهان کي مجبور ڪيو ويندو ته يا ته ڊيٽا جي بي ترتيب "متفرق" ڪالمن جو هڪ گروپ ٺاهيو، اتي ڊيٽا جي بلب کي ڇڪيو، يا ترتيب استعمال ڪريو. EAV...هن سڀني ۾ اهم خاميون آهن.
  • اسڪيلنگ ۾ مشڪل: جيڪڏهن اتي تمام گهڻو ڊيٽا آهي ته اهو هڪ سرور تي مناسب نه آهي، MongoDB پيش ڪيل ميکانيزم کي اجازت ڏيڻ جي اجازت ڏئي ٿو ته ان کي ڪيترن ئي مشينن تي ماپ ڪري.
  • ڪمپليڪس سرڪٽ تبديليون: نه لڏپلاڻ! هڪ تعلقي ڊيٽابيس ۾، ڊيٽابيس جي جوڙجڪ کي تبديل ڪرڻ هڪ وڏو مسئلو ٿي سگهي ٿو (خاص طور تي جڏهن اتي تمام گهڻو ڊيٽا آهي). MongoDB عمل کي تمام سولو ڪرڻ جي قابل ٿي ويو. ۽ اهو اهو آسان بڻائي ڇڏيو آهي ته توهان صرف سرڪٽ کي اپڊيٽ ڪري سگهو ٿا جيئن توهان وڃو ۽ تمام جلدي اڳتي وڌو.
  • رڪارڊنگ ڪارڪردگي: MongoDB ڪارڪردگي سٺي هئي، خاص طور تي جڏهن صحيح طور تي ترتيب ڏنل. ايستائين جو مونگو ڊي بي جي آئوٽ آف دي باڪس جي ترتيب، جنهن لاءِ ان تي اڪثر تنقيد ڪئي وئي، ڪجهه متاثر ڪندڙ ڪارڪردگي جا انگ ڏيکاريا.

سڀ خطرا توهان تي آهن

MongoDB جا امڪاني فائدا وڏا هئا، خاص طور تي مسئلن جي ڪجهه طبقن لاءِ. جيڪڏھن توھان مٿي ڏنل فهرست پڙھو بغير سمجھڻ ۽ بغير تجربي جي، توھان کي اھو تاثر ملي سگھي ٿو ته MongoDB واقعي ھڪڙو انقلابي DBMS آھي. صرف مسئلو اهو هو ته مٿي ڏنل فائدن سان گڏ آيا هئا ڪيترن ئي caveats، جن مان ڪجهه هيٺ ڏنل آهن.

صحيح هجڻ لاء، 10gen/MongoDB Inc. اهو نه چوندا ته هيٺيون سچ نه آهن، اهي صرف سمجهوتا آهن.

  • گم ٿيل ٽرانزيڪشن: ٽرانزيڪشن ڪيترن ئي تعلقي ڊيٽابيس جي بنيادي خصوصيت آهن (سڀ نه، پر گهڻا). ٽرانزيڪشن جو مطلب آهي ته توهان ڪيترن ئي عملن کي ايٽمي طور تي انجام ڏئي سگهو ٿا ۽ يقيني بڻائي سگهو ٿا ته ڊيٽا مسلسل رهي ٿي. يقينن، هڪ NoSQL ڊيٽابيس سان، ٽرانزيڪشن هڪ واحد دستاويز جي اندر ٿي سگهي ٿو، يا توهان ٽرانزيڪشنل سيمينٽڪس حاصل ڪرڻ لاءِ ٻه-مرحلي ڪمٽ استعمال ڪري سگهو ٿا. پر توهان کي هن ڪارڪردگيءَ کي پاڻ لاڳو ڪرڻو پوندو... جيڪو هڪ ڏکيو ۽ وقت ساز ڪم ٿي سگهي ٿو. گهڻو ڪري توهان کي اهو احساس ناهي ته ڪو مسئلو آهي جيستائين توهان ڊيٽابيس ۾ ڊيٽا کي غلط رياستن ۾ ختم نه ڪيو ڇو ته عملن جي ايٽمي جي ضمانت نه ٿي سگهي. نوٽ: ڪيترن ئي ماڻهن مون کي ٻڌايو ته MongoDB 4.0 گذريل سال ٽرانزيڪشن متعارف ڪرايو، پر ڪجهه حدن سان. مضمون کان وٺي وڃڻ ساڳيو ئي رهي ٿو: اندازو لڳايو ته ٽيڪنالاجي توهان جي ضرورتن کي ڪيئن پورو ڪري ٿي.
  • لاڳاپي جي سالميت جو نقصان (پرڏيهي چابيون): جيڪڏهن توهان جي ڊيٽا جا لاڳاپا آهن، ته توهان کي انهن کي اپليڪيشن ۾ لاڳو ڪرڻو پوندو. هڪ ڊيٽابيس هجڻ سان جيڪو انهن رشتن جو احترام ڪري ٿو ايپليڪيشن مان تمام گهڻو ڪم وٺندو ۽ تنهن ڪري توهان جا پروگرامر.
  • ڊيٽا جي جوڙجڪ کي لاڳو ڪرڻ جي صلاحيت جي کوٽ: سخت اسڪيمن ڪڏهن ڪڏهن هڪ وڏو مسئلو ٿي سگهي ٿو، پر اهي پڻ هڪ طاقتور ميکانيزم آهن سٺي ڊيٽا جي جوڙجڪ لاءِ جيڪڏهن عقلمنديءَ سان استعمال ڪيو وڃي. دستاويزي ڊيٽابيس جهڙوڪ MongoDB ناقابل اعتماد اسڪيما لچڪدار مهيا ڪن ٿا، پر هي لچڪدار ڊيٽا کي صاف رکڻ جي ذميواري کي هٽائي ٿو. جيڪڏھن توھان انھن جو خيال نه رکو، توھان ختم ڪري ڇڏيندؤ توھان جي ايپليڪيشن ۾ ڪيترائي ڪوڊ لکڻ لاءِ ان ڊيٽا جي اڪائونٽ لاءِ جيڪي توھان جي توقع جي فارم ۾ محفوظ نه آھن. جيئن اسان اڪثر اسان جي ڪمپني تي چوندا آهيون Simple Thread... ايپليڪيشن هڪ ڏينهن ٻيهر لکي ويندي، پر ڊيٽا هميشه لاءِ رهندي. نوٽ: MongoDB اسڪيما چيڪنگ کي سپورٽ ڪري ٿو: اهو ڪارائتو آهي، پر ساڳئي ضمانت فراهم نٿو ڪري جيئن هڪ تعلقي ڊيٽابيس ۾. سڀ کان پهريان، اسڪيما چيڪ کي شامل ڪرڻ يا تبديل ڪرڻ سان گڏ موجود ڊيٽا کي متاثر نٿو ڪري. اهو توهان تي آهي انهي کي يقيني بڻائڻ ته توهان نئين اسڪيما مطابق ڊيٽا کي اپڊيٽ ڪيو. پنهنجو پاڻ لاء فيصلو ڪريو ته ڇا اهو توهان جي ضرورتن لاء ڪافي آهي.
  • اصلي سوال ٻولي / اوزار جي ماحولياتي نظام جو نقصان: SQL جي آمد هڪ مطلق انقلاب هو ۽ ان کان پوءِ ڪجھ به نه بدليو آهي. اها هڪ ناقابل يقين حد تائين طاقتور ٻولي آهي، پر پڻ ڪافي پيچيده. ڊيٽابيس جي سوالن کي نئين ٻولي ۾ ٺاھڻ جي ضرورت آھي JSON ٽڪرن تي مشتمل آھي انھن ماڻھن پاران جن کي SQL سان ڪم ڪرڻ جو تجربو آھي پوئتي موٽڻ لاءِ وڏو قدم سمجھيو ويندو آھي. هتي اوزارن جي هڪ پوري ڪائنات آهي جيڪا SQL ڊيٽابيس سان لهه وچڙ ۾ آهي، IDEs کان وٺي رپورٽنگ ٽولز تائين. ھڪڙي ڊيٽابيس ڏانھن منتقل ڪرڻ جيڪو SQL کي سپورٽ نٿو ڪري، مطلب آھي توھان انھن مان گھڻا اوزار استعمال نٿا ڪري سگھو يا توھان انھن کي استعمال ڪرڻ لاءِ ڊيٽا کي SQL ۾ ترجمو ڪرڻو پوندو، جيڪو توھان جي سوچڻ کان وڌيڪ ڏکيو ٿي سگھي ٿو.

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

ڇا مختلف ٿي سگهي ٿو؟

نه هرڪو ٽپو ڏئي سر پهرين ۽ هيٺان مارو. پر ڪيترن ئي منصوبن مونگو ڊي بي کي انهن هنڌن تي نصب ڪيو آهي جتي اهو مناسب نه هو - ۽ انهن کي ايندڙ ڪيترن سالن تائين ان سان گڏ رهڻو پوندو. جيڪڏهن اهي تنظيمون ڪجهه وقت گذارين ها ۽ طريقي سان سوچين ها ته انهن جي ٽيڪنالاجي چونڊ جي ذريعي، ڪيترن ئي مختلف چونڊون ڪيون ها.

صحيح ٽيڪنالاجي کي ڪيئن چونڊيو؟ ٽيڪنالاجي جي تشخيص لاءِ هڪ منظم فريم ورڪ ٺاهڻ لاءِ ڪيتريون ئي ڪوششون ڪيون ويون آهن، جهڙوڪ "سافٽ ويئر تنظيمن ۾ ٽيڪنالاجي متعارف ڪرائڻ لاء فريم ورڪ" и "سافٽ ويئر ٽيڪنالاجي جو جائزو وٺڻ لاء فريم ورڪ"، پر اهو مون کي لڳي ٿو ته هي غير ضروري پيچيدگي آهي.

ڪيتريون ئي ٽيڪنالاجيون صرف ٻه بنيادي سوال پڇڻ سان ذهانت سان اندازو لڳائي سگهجن ٿيون. مسئلو ماڻهن کي ڳولڻ آهي جيڪو انهن کي ذميواري سان جواب ڏئي سگهي ٿو، جواب ڳولڻ لاء وقت وٺڻ ۽ تعصب کان سواء.

جيڪڏهن توهان ڪنهن به مسئلي کي منهن نه رهيا آهيو، توهان کي نئين اوزار جي ضرورت ناهي. نقطو.

سوال 1: مان ڪهڙا مسئلا حل ڪرڻ جي ڪوشش ڪري رهيو آهيان؟

جيڪڏهن توهان ڪنهن به مسئلي کي منهن نه رهيا آهيو، توهان کي نئين اوزار جي ضرورت ناهي. نقطو. حل ڳولڻ ۽ پوءِ مسئلو پيدا ڪرڻ جي ڪا ضرورت ناهي. جيستائين توهان ڪنهن مسئلي کي منهن نه ڪيو آهي ته نئين ٽيڪنالاجي توهان جي موجوده ٽيڪنالاجي کان گهڻو بهتر حل ڪري ٿي، هتي بحث ڪرڻ لاء ڪجھ به ناهي. جيڪڏهن توهان هن ٽيڪنالاجي کي استعمال ڪرڻ تي غور ڪري رهيا آهيو ڇو ته توهان ڏٺو آهي ٻين کي ان کي استعمال ڪندي، سوچيو ته اهي ڪهڙا مسئلا آهن ۽ پڇو ته توهان وٽ اهي مسئلا آهن. هڪ ٽيڪنالاجي کي قبول ڪرڻ آسان آهي ڇو ته ٻيا ان کي استعمال ڪري رهيا آهن، چئلينج اهو سمجهڻ آهي ته ڇا توهان ساڳئي مسئلن کي منهن ڏئي رهيا آهيو.

سوال 2: مون کي ڇا غائب آهي؟

اهو يقيني طور تي هڪ وڌيڪ ڏکيو سوال آهي ڇو ته توهان کي ڳولهڻو پوندو ۽ پراڻي ۽ نئين ٽيڪنالاجي ٻنهي جي سٺي ڄاڻ هوندي. ڪڏهن ڪڏهن توهان واقعي هڪ نئين کي سمجهي نٿا سگهو جيستائين توهان ان سان گڏ ڪجهه ٺاهيو يا ڪنهن کي اهو تجربو هجي.

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

ماڻهو هميشه سڀ ڪجهه برباد ڪري ٿو

جئين توھان انھن سوالن جا جواب ڏيڻ جي ڪوشش ڪريو جيترو ٿي سگھي غيرجانبداريءَ سان، ھڪڙي ڳالھ ياد رکو: توھان کي انساني فطرت سان وڙھڻو پوندو. اتي ڪيترائي سنجڪاتي تعصب آھن جن کي لازمي طور تي ٽيڪنالاجي جو جائزو وٺڻ تي غالب ٿيڻ گھرجي. هتي صرف چند آهن:

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

مقصد جي تشخيص آسان ناهي، پر بنيادي سنجڪندڙ تعصب کي سمجهڻ توهان کي وڌيڪ منطقي فيصلا ڪرڻ ۾ مدد ڪندي.

خلاصو

جڏهن به ڪا جدت ظاهر ٿئي ٿي، ٻن سوالن جا جواب وڏي احتياط سان ڏنا وڃن:

  • ڇا هي اوزار هڪ حقيقي مسئلو حل ڪري ٿو؟
  • ڇا اسان واپار کي چڱي طرح سمجھندا آهيون؟

جيڪڏهن توهان اعتماد سان انهن ٻن سوالن جا جواب نٿا ڏئي سگهو، ڪجهه قدم پوئتي وٺو ۽ سوچيو.

پوء مونگو ڊي بي به صحيح انتخاب هو؟ يقيناً ها؛ جيئن ته اڪثر انجنيئرنگ ٽيڪنالاجيز سان، اهو ڪيترن ئي عنصر تي منحصر آهي. انهن مان جن انهن ٻن سوالن جا جواب ڏنا، ڪيترن ئي مونگو ڊي بي مان فائدو ورتو آهي ۽ ائين ڪرڻ جاري آهي. انهن لاءِ جن نه ڪيو، مون کي اميد آهي ته توهان هڪ قيمتي ۽ نه تمام ڏکوئيندڙ سبق سکيو هوندو هائپ چڪر ذريعي هلڻ بابت.

رد ڪرڻ

مان واضع ڪرڻ چاهيان ٿو ته مون کي مونگو ڊي بي سان نه ڪو پيار آهي ۽ نه ئي نفرت جو تعلق. اسان وٽ صرف اهڙي قسم جا مسئلا نه آهن جن کي حل ڪرڻ لاءِ مونگو ڊي بي بهترين موزون آهي. مون کي خبر آهي ته 10gen/MongoDB Inc. پهرين ۾ تمام بولڊ هو، غير محفوظ ڊفالٽ کي ترتيب ڏيڻ ۽ مونگو ڊي بي کي هر جڳهه (خاص طور تي هيڪاٿن تي) ڪنهن به ڊيٽا سان ڪم ڪرڻ لاء هڪ آفاقي حل جي طور تي فروغ ڏيڻ. اهو شايد هڪ خراب فيصلو هو. پر اهو هتي بيان ڪيل طريقي جي تصديق ڪري ٿو: اهي مسئلا تمام جلدي ڳولي سگهجن ٿا جيتوڻيڪ ٽيڪنالاجي جي سطحي تشخيص سان.

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

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