JavaRush /جاوا بلاگ /Random-SD /ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو

ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو

گروپ ۾ شايع ٿيل
هيلو سڀ! اسان سڀ هتي هڪ مقصد ڏانهن ڪم ڪري رهيا آهيون - جاوا ڊولپرز ٿيڻ لاءِ . شايد هڪ پیشہ ور ٿيڻ جي رستي تي سڀ کان اهم مرحلو ٽيڪنيڪل انٽرويو آهي. ضابطي جي طور تي، انٽرويو وٺندڙ مکيه عنوانن جي ذريعي وڃي ٿو، ڪجهه سوال پڇڻ. هن آرٽيڪل ۾، اسان هڪ اهڙي اهم موضوع بابت ڳالهائينداسين - ڊيٽابيس . اچو ته سڀ کان وڌيڪ عام سوالن تي نظر رکون ۽ انهن جي جواب ڏيڻ جي ڪوشش ڪريو بغير مواد ۾ گهيرو ڪرڻ، ڇو ته هن صورت ۾ ڪتاب جو حجم اسان لاء ڪافي نه هوندو! سو، اچو ته هلون.ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 1

1. ڊيٽابيس ڇا آهن؟ اهي ڪهڙي قسم ۾ ورهايل آهن؟

DBMS مان ڇا مراد آهي؟

ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 2ڊيٽابيس (DB) ھڪ منظم ڍانچي آھي جنھن کي ذخيرو ڪرڻ، تبديل ڪرڻ ۽ پروسيسنگ لاءِ ٺاھيو ويو آھي باہم لاڳاپيل معلومات، خاص طور تي وڏي مقدار ۾. ٻين لفظن ۾، هڪ ڊيٽابيس هڪ منظم ڊيٽا اسٽوريج آهي. مثال طور، هڪ فون ڪتاب.

ڊيٽابيس جي قسمن

  1. هڪ تعلقي ڊيٽابيس ڊيٽا جو هڪ مجموعو آهي جيڪو انهن جي وچ ۾ اڳواٽ بيان ڪيل رشتن سان. ڊيٽا جدولن جي ھڪڙي سيٽ جي طور تي ذخيرو ٿيل آھي جنھن ۾ ڪالمن ۽ قطار شامل آھن. ٽيبلز ڊيٽابيس ۾ پيش ڪيل شين جي باري ۾ معلومات کي ذخيرو ڪري ٿو. هر ٽيبل ڪالمن هڪ مخصوص ڊيٽا جي قسم کي ذخيرو ڪري ٿو، ۽ هر سيل هڪ خاصيت جي قيمت کي محفوظ ڪري ٿو.
  2. غير لاڳاپو نظام (NoSQL) لچڪدار اسڪيمن سان مخصوص ڊيٽا ماڊلز لاءِ ٺهيل نظام آهن. ٻين لفظن ۾، اهي ڊيٽابيس آهن جيڪي ڊيٽا کي ذخيرو ڪن ٿا ٽيبلر اسڪيمن، قطار ۽ ڪالمن جي صورت ۾ نه، پر ٻين فارميٽ ۾.
توهان هن آرٽيڪل ۾ غير لاڳاپو ڊيٽابيس بابت وڌيڪ پڙهي سگهو ٿا: ڊولپرز لاءِ NoSQL لاءِ هڪ گائيڊ . هڪ ڊيٽابيس مينيجمينٽ سسٽم (DBMS) سافٽ ويئر جو هڪ سيٽ آهي جنهن سان صارف ڊيٽابيس (DBs) ٺاهي سگهي ٿو ۽ انهن تي مختلف عملن کي انجام ڏئي ٿو: اضافي، تازه ڪاري، حذف، چونڊيو، وغيره. ڊيٽا اسٽوريج ۽ توهان کي ڊيٽابيس انتظاميه تائين رسائي جي اجازت ڏئي ٿي. مثال طور، MySql هڪ DBMS آهي جيڪو هڪ لاڳاپو ڊيٽابيس تائين رسائي فراهم ڪري ٿو يا هڪ غير لاڳاپو لاءِ MongoDB.

2. نارملائيزيشن ڇا آهي؟ عام فارم؟ عام ڪرڻ جا ڪيترا روپ آهن؟ پهرين ٽن جو نالو.

نارملائيزيشن هڪ ڊيٽابيس ۾ ڊيٽا کي ترتيب ڏيڻ ۽ ترتيب ڏيڻ جو عمل آهي، جيڪو لاتعداد ۽ انحصار جي غير مطابقت کي ختم ڪندي وڌيڪ ڊيٽابيس لچڪدار مهيا ڪري ٿو. عام فارم هڪ ٽيبل جي ملڪيت آهي، جنهن کي عام ڪرڻ جي حوالي سان سمجهيو ويندو آهي، جيڪو سادگي ۽ ڍانچي جي درستگي جي لحاظ سان ٽيبل کي بيان ڪري ٿو. عام فارم جي ضرورتن جي هڪ سيٽ جي طور تي وضاحت ڪئي وئي آهي ته هڪ ميز کي پورو ڪرڻ گهرجي. مجموعي طور تي ڇهه عام شڪلون آهن، پر عملي طور تي پهرين ٽن کان وڌيڪ استعمال نه ڪيا ويا آهن:
  1. پهريون عام فارم:
    • سڀئي خاصيتون سادي آهن (يعني ايٽمي ۽ ناقابل تقسيم)؛
    • سڀ ڊيٽا اسڪيلر آهي (يعني، مثبت)؛
    • ڪا به نقل ٿيل قطار نه آهي (هن لاء، هر قطار لاء هڪ پرائمري چيڪ ٺاهي وئي آهي).
  2. ٻيو عام فارم:
    • پهرين عام فارم جون حالتون ملن ٿيون؛
    • هر غير اهم وصف هڪ بنيادي ڪيئي حوالي ڪري ٿو.
  3. ٽيون عام فارم:
    • ٻئي عام گروپ جون حالتون ملن ٿيون؛
    • Nonkey فيلڊز ٻين nonkey شعبن کان آزاد آهن: اهي صرف هڪ پرائمري ڪي سان لاڳاپيل ٿي سگهن ٿيون.

3. غير معمولي ڪرڻ

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

4. انڊيڪس

هڪ انڊيڪس قدرن جو هڪ ترتيب ڏنل سيٽ آهي جيڪو هڪ ٽيبل سان لاڳاپيل آهي يا هڪ مخصوص ڪالمن سان ڏسڻ جيڪو ڊيٽا جي بحالي کي تيز ڪري ٿو. اھو آھي، ھي ھڪڙي قسم جي انڊيڪس آھي: فون بڪ ۾ الفابيٽ وانگر، جيڪو اسان جي مدد ڪري ٿو جڏھن آخري نالو سان ڳولھيو. جيڪڏهن صحيح طريقي سان استعمال ڪيو وڃي، هي خصوصيت ڪارڪردگي بهتر ڪري سگهي ٿي جڏهن وڏي ڊيٽابيس سان ڪم ڪندي. يا توهان ان کي تمام گهڻو گهٽ ڪري سگهو ٿا. ڳولا کي تيز ڪرڻ لاءِ، اهي ڪنجيون هڪ متوازن وڻ جي ڍانچي ۾ محفوظ ڪيون وينديون آهن جن ذريعي ڳولا ڪئي ويندي آهي. ضابطي جي طور تي، انڊيڪس کي فيلڊ تي داخل ٿيڻ جي ضرورت آهي جيڪي گهڻو ڪري ڳولها ويندا آهن. توهان کي انڊيڪس ٺاهڻ جي باري ۾ سوچڻ گهرجي ان کان اڳ نه جڏهن توهان وٽ گهٽ ۾ گهٽ 10 هزار رڪارڊ آهن. ٻي صورت ۾، توهان هڪ قابل ذڪر نتيجو نه ڏسندا، ڇاڪاڻ ته وقت کان اڳ اصلاح EVIL آهي . ۽ ڪيئن هڪ انڊيڪس سسٽم جي ڪارڪردگي کي متاثر ڪري سگهي ٿو، توهان پڇو؟ جڏهن نئين ڊيٽا داخل ڪئي وئي آهي يا پراڻي ڊيٽا کي ختم ڪيو ويو آهي، متوازن وڻ جي جوڙجڪ کي ٻيهر ڳڻيو ويندو. دراصل، وڌيڪ ڊيٽا ۽ انڊيڪس، وڌيڪ وڻن کي ڳڻڻ جي ضرورت آهي. صورتحال جو تصور ڪريو: توھان وٽ ھن ٽيبل تي اٽڪل 20,000 رڪارڊ ۽ 7 انڊيڪس آھن. اهو آهي، ڊيٽا داخل ڪرڻ وقت، توهان کي 7 وڻن کي ٻيهر ڳڻڻ جي ضرورت آهي، هر هڪ 20,000 رڪارڊ سان. سختيءَ سان ڳالهائڻ، جدولن لاءِ انڊيڪس استعمال ڪرڻ جن ۾ ڊيٽا اڪثر شامل ڪئي ويندي/ حذف ڪئي ويندي، سفارش نه ڪئي وئي آهي. آخر ۾، مان اهو نوٽ ڪرڻ چاهيان ٿو ته ڪالمن لاءِ انڊيڪسس جن ۾ قيمت اڪثر ملي ويندي آهي، nullايترو اثرائتو نه هوندو، تنهنڪري انهن کي اهڙن ڪالمن ۾ شامل ڪرڻ جي لائق ناهي.

SQL ۾ ڪلستر ٿيل ۽ غير ڪلستر ٿيل انڊيڪس جي وچ ۾ ڇا فرق آھي؟

گڏ ٿيل:

  • منتخب ٿيل فيلڊ لاء جسماني ترتيب فراهم ڪري ٿي؛
  • جيڪڏهن ڪنهن ٽيبل ۾ ڪلستر ٿيل انڊيڪس هجي، ته ان کي چئبو آهي ڪلستر ٿيل؛
  • في ٽيبل تي هڪ کان وڌيڪ انڊيڪس جي ضرورت ناهي؛
  • MySQL ۾، هڪ ڪلسٽر ٿيل انڊيڪس صارف طرفان واضح طور تي بيان نه ڪيو ويو آهي، ڇاڪاڻ ته جيڪڏهن توهان پنهنجي ٽيبل تي پرائمري ڪيئي جي وضاحت نه ڪندا آهيو، MySQL پهريون انڊيڪس ڳولي ٿو UNIQUEجتي سڀ ڪي ڪالم آهن NOT NULL، ۽ InnoDB ان کي ڪلستر ٿيل انڊيڪس طور استعمال ڪري ٿو.

غير جمع ٿيل:

  • 999 تائين غير ڪلستر ٿيل انڊيڪس في ٽيبل ممڪن آهن.
  • ٽيبل ۾ حقيقي ڊيٽا سان قطارن ڏانهن پوائنٽر تي مشتمل آهي؛
  • جسماني حڪم مهيا نه ڪندو آھي؛
  • غير ڪلسٽرڊ انڊيڪسس لاءِ، ترتيب ڏنل ڊيٽا سان گڏ الڳ جدول آهن، يعني، هڪ ڪالمن لاءِ هڪ ٽيبل جنهن تي انڊيڪس واقع آهي، تنهن ڪري، جڏهن ڊيٽا جي درخواست ڪئي وڃي جيڪا ڏنل فيلڊ جو حصو نه هجي، سوال پهرين تي ڪيو ويندو. ھن جدول ۾ فيلڊ، ۽ صرف پوءِ اصل جدول ۾ قطار جي خلاف اضافي سوال.
هڪ غير ڪلستر ٿيل انڊيڪس ٺاهڻ:
CREATE INDEX index_name ON table_name(column_name)

6. جامع انڊيڪس ڇا آهي؟

جامع انڊيڪس - هڪ ئي وقت ۾ ڪيترن ئي ڪالمن ڏانهن موڪلڻ سان ٺهيل. ٻين لفظن ۾، اهو ڪيترن ئي ڪالمن تي مشتمل هڪ پيچيده انڊيڪس آهي. اهڙا انڊيڪس استعمال ڪيا ويندا آهن جڏهن هڪ سوال ۾ هڪ کان وڌيڪ ڪالمن ظاهر ٿيندا آهن. هڪ جامع انڊيڪس ٺاهڻ:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
عام طور تي، اهي انڊيڪس استعمال ڪيا ويندا آهن جڏهن ڪيترن ئي ڪالمن ۾ ڊيٽا منطقي طور تي لاڳاپيل آهي.

7. هڪ ڍڪڻ واري انڊيڪس ڇا آهي؟ منفرد انڊيڪس؟

هڪ ڍڪڻ واري انڊيڪس هڪ انڊيڪس آهي جيڪو ٽيبل تائين پهچڻ کان سواء سوال جو جواب ڏيڻ لاء ڪافي آهي. هن انڊيڪس کي استعمال ڪندي، توهان ڊيٽا جي پوري قطار حاصل ڪري سگهو ٿا، پر حقيقت ۾ اهو ضروري ناهي. ڇو ته توهان کي سڌو سنئون ماخذ ٽيبل ڏانهن وڃڻ جي ضرورت ناهي ۽ صرف انڊيڪس استعمال ڪندي جواب ڏئي سگهو ٿا، انڊيڪس کي ڍڪڻ لاء استعمال ڪرڻ لاء ٿورو تيز آهن. ساڳئي وقت، اهو نه وساريو ته وڌيڪ ڪالمن، وڌيڪ پيچيده ۽ سست انڊيڪس پاڻ ٿي ويندي آهي. تنهنڪري توهان کي اهو غلط استعمال نه ڪرڻ گهرجي. مٿي اسان ڪلستر ٿيل ۽ غير ڪلستر ٿيل انڊيڪس بابت ڳالهايو، جيڪي منفرد ٿي سگهن ٿيون . ان جو مطلب اهو آهي ته انڊيڪس ڪيچ لاءِ ٻه شعبا هڪجهڙا نه آهن. ٻي صورت ۾، انڊيڪس منفرد نه ٿيندو، ڇاڪاڻ ته ڪيترن ئي قطارن ۾ ساڳي قيمت شامل ٿي سگھي ٿي. هڪ منفرد غير ڪلستر ٿيل انڊيڪس ٺاهڻ جو هڪ مثال:
CREATE UNIQUE INDEX index_name ON table_name(column_name)

8. هڪ پرائمري ڪنجي ڇا آهي

پرائمري ڪيچ هڪ ٽيبل ۾ هڪ فيلڊ آهي جيڪو ڊيٽابيس جي ٽيبل ۾ هر قطار کي سڃاڻي ٿو. ھڪڙي جدول ۾ صرف ھڪڙو ھڪڙو ميدان ٿي سگھي ٿو، ۽ سڀ قدر منفرد ھئڻ گھرجي. توهان کي ڪجهه به ياد نه ڪيو؟ سڀ کان پوء، هڪ پرائمري چيڪ هڪ منفرد، ڪلستر ٿيل انڊيڪس ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 3کان وڌيڪ ناهي . ضابطي جي طور تي، بنيادي چابيون ٺاهي وينديون آهن جڏهن ٽيبل ٺاهي رهيا آهن:
CREATE TABLE table_name(
column_name int PRIMARY KEY,..)
هن ڪالمن ۾ هڪ پابندي خودڪار طور شامل ڪئي ويندي - NOT NULL. توھان اڳ ۾ ئي ٺاھيل ٽيبل لاءِ ڪيچي پڻ سيٽ ڪري سگھو ٿا:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
جيڪڏهن مٿي بيان ڪيل طريقي سان هڪ پرائمري ڪيئي شامل ڪئي وئي آهي، ته پوءِ پرائمري ڪي ( ) جي طور تي بيان ڪيل فيلڊن جا قدر column_nameچيڪ ڪيا ويندا آهن انهي کي يقيني بڻائڻ لاءِ ته اهي null ويلز تي مشتمل نه آهن (هڪ رڪاوٽ پڻ شامل ڪئي ويندي - NOT NULL).

هڪ پرڏيهي چاٻي ڇا آهي؟

هڪ غير ملڪي ڪيئي هڪ ملڪيت آهي جيڪا جدولن جي وچ ۾ تعلق مهيا ڪرڻ لاءِ ٺاهي وئي آهي. عام طور تي، هڪ غير ملڪي چيڪ هڪ ذيلي ٽيبل ۾ ڪالمن تي مقرر ڪيو ويو آهي ۽ مکيه ٽيبل مان ڪالمن مان هڪ ڏانهن اشارو ڪيو ويو آهي. بيان ڪري سگهجي ٿو جڏهن ٽيبل ٺاهي:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
پوء ٽيبل ٺاهڻ کان پوء:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
توھان مقرر ڪري سگھو ٿا ھڪڙي غير ملڪي چاٻي جو رويو جڏھن ھلائڻ واري فيلڊ کي اھو حوالو ڏئي ٿو. هٿرادو هيٺين ON DELETEقسمن جا ٿي سگهن ٿا ON UPDATE: ممڪن رويي جا اختيار:
  • CASCADE- ھن ملڪيت سان، منحصر جدول مان قطارون پاڻمرادو ختم ٿي وينديون يا تبديل ٿي وينديون جڏھن لاڳاپيل قطارون ڊھي وينديون يا مين جدول ۾ تبديل ٿينديون؛
  • SET NULL- ھن ملڪيت سان، جڏھن ھڪڙي لاڳاپيل قطار کي ختم ڪيو ويندو آھي يا مکيه جدول مان اپڊيٽ ڪيو ويندو آھي، NULLغير ملڪي ڪي ڪالمن جي قيمت مقرر ڪئي ويندي؛
  • NO ACTION- مکيه جدول ۾ قطار کي ختم ڪرڻ يا تبديل ڪرڻ جي ڪوشش کي رد ڪري ٿو جيڪڏهن انحصار واري ٽيبل ۾ لاڳاپيل قطارون آهن؛
  • RESTRICT- جي برابر NO ACTION؛
  • SET DEFAULT- ھن ملڪيت سان، جڏھن ھڪڙي لاڳاپيل قطار کي ختم ڪيو ويندو آھي يا مکيه جدول مان اپڊيٽ ڪيو ويندو آھي، ڊفالٽ قدر (جيڪڏھن ڪو آھي) غير ملڪي ڪي ڪالمن لاء مقرر ڪيو ويندو.
استعمال مثال:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) ON UPDATE CASCADE ON DELETE CASCADE }
ON DELETEجيڪڏهن رويي لاءِ ۽ واضح طور تي مقرر نه ڪيو ويو آهي ON UPDATE، ته رويي کي سيٽ ڪيو ويندو RESTRICT.

10. جدولن جي وچ ۾ ڪنيڪشن جا قسم (شامل ڪريو)

جدولن جي وچ ۾ ڪنيڪشن عام ڊيٽا (فيلڊز) جي بنياد تي مهيا ڪئي وئي آهي. اهو هڪ آپريٽر جي استعمال سان ٿئي ٿو JOIN، هڪ آپريشن جيڪو هڪ ٽيبل جي قطارن سان ٻئي ۾ قطار سان ملندو آهي. نقشي سازي ڪئي وئي آهي ته جيئن ٻنهي جدولن جا ڪالمن ويجھو آهن، جيتوڻيڪ اهي الڳ الڳ جدولن مان حاصل ڪري سگھجن ٿيون. ۽ جيڪڏھن اسان وٽ ٽن جدولن لاءِ عام فيلڊ آھن، اسان انھن جي ڊيٽا کي ھڪڙي عام جدول طور ڏيکاري سگھون ٿا. بهرحال، اهو غور ڪرڻ جي قابل آهي ته گهٽ ٽيبل جيڪي شامل ڪيا ويا آهن، تيزيء سان سوال هلندي. تنهن ڪري، قسم JOIN:
  • INNER JOIN- هڪ ڪنيڪشن جيڪو ڏيکاري ٿو صرف اهي ڊيٽا جيڪي پهرين ٽيبل مان آهن جيڪي ٻئي ٽيبل جي ڪجهه ڊيٽا سان ملن ٿا. باقي هيٺ لهي وڃن ٿا.ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 4
  • LEFT JOIN- هڪ ڪنيڪشن جيڪو ڏيکاري ٿو سڀني ڊيٽا کي پهرين ٽيبل مان ۽ لاڳاپيل ڊيٽا ٻئي مان، جيڪڏهن ڪو. جيڪڏهن ڪو به لاڳاپيل ڊيٽا نه آهي، ٻئي جدول مان ڊيٽا لاء فيلڊ خالي ٿي ويندا.ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 5
  • RIGHT JOIN- هڪ ڪنيڪشن جيڪو ڏيکاري ٿو سڀني ڊيٽا کي ٻئي ٽيبل مان ۽ لاڳاپيل ڊيٽا پهرين کان، جيڪڏهن ڪو. جيڪڏهن ڪو به لاڳاپيل ڊيٽا نه آهي، پهرين ٽيبل جي ڊيٽا لاء فيلڊ خالي ٿي ويندا.ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 6
  • FULL JOIN- هڪ ڪنيڪشن جيڪو ڏيکاري ٿو سڀني ڊيٽا کي پهرين ۽ سيڪنڊ جدولن مان. جيڪڏهن ٻئي جدول ۾ ڪو لاڳاپيل ڊيٽا نه آهي، ته ان ڊيٽا لاءِ فيلڊون خالي هونديون.ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 7
  • CROSS JOIN- هڪ ڪراس جوائنٽ جنهن ۾ پهرين ٽيبل جي هر قطار ٻئي ميز جي هر قطار ۾ شامل ڪئي وئي آهي (هر هڪ ڏانهن). يعني، جيڪڏهن ٻن جدولن ۾ 3 قطارون آهن، ان سان گڏ ٿيڻ کان پوءِ اسان کي 9 قطارن جو نتيجو ملندو.ڊولپر انٽرويو: ڊيٽابيس سوالن جو تجزيو - 8
مثال Join(inner):
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column

11. ڊيٽابيس ۾ ACID ملڪيت ڇا آهي؟

A - Atomicity ، انهي ڳالهه کي يقيني بڻائي ٿو ته ڪو به ٽرانزيڪشن جزوي طور تي سسٽم تي پابند ناهي. يا ته ان جا سڀئي ذيلي آپريشن ڪيا ويا آهن، يا ڪو به نه. مثال طور، هڪ بئنڪ کان ٻئي اڪائونٽ ۾ پئسا منتقل ڪرڻ ۾ ٻه عمل شامل آهن:
  1. بئنڪ اڪائونٽ ۾ پئسا منتقل ڪريو.
  2. بئنڪ اڪائونٽ مان پئسا هڪ مخصوص اڪائونٽ ڏانهن منتقل ڪريو.
پر ڪجهه به ٿي سگهي ٿو. مثال طور، اهي بينڪ ڏانهن ويندا، ۽ پوء ڪجهه غلطي ٿيندي ۽ ٻيو آپريشن مڪمل نه ٿيندو. يا ان جي برعڪس: صرف ٻيو آپريشن ڪيو ويندو. تنهن ڪري، اهي ڪارناما هڪ ٽرانزيڪشن ۾ ڪيا ويا آهن، ۽ نتيجو يا ته سڀ يا ڪجهه به ناهي. سي - تسلسل : هر ڪامياب ٽرانزيڪشن هميشه صرف حل ڪرڻ جا نتيجا رڪارڊ ڪري ٿو. اهو يقيني بڻائي ٿو ته سڀئي پابنديون پوريون ڪيون ويون آهن (مثال طور، NOT NULL)، ٻي صورت ۾ ٽرانزيڪشن کي واپس ڪيو ويندو. ۽ - اڪيلائي : ٽرانزيڪشن جي عمل جي دوران، متوازي ٽرانزيڪشن کي ان جي نتيجي تي اثر انداز نه ڪرڻ گهرجي. هي اسان کي هر ڪنهن کان غير حتمي ڊيٽا رياستن کي لڪائڻ جي صلاحيت ڏئي ٿو. دراصل، اهو ئي سبب آهي ته ناڪام ٽرانزيڪشن ڪجهه به نه ٽوڙي سگهي ٿو. ٿورڙو گهٽ اسان ٽرانزيڪشن جي اڪيلائي جي سطحن سان واقف ٿينداسين. D - Durability : جيڪڏهن هڪ ٽرانزيڪشن مڪمل ٿي وڃي ته پوءِ توهان پڪ ڪري سگهو ٿا ته ان ۾ ڪيل تبديليون ڪجهه ناڪامي جي ڪري منسوخ نه ٿينديون.

12. ٽرانزيڪشن جي اڪيلائي جي سطح

هر اڪيلائي جي سطح کي اجازت ڏئي ٿو/منع ڪري ٿو ڪجهه عملن (موقعن):
  • پريتم پڙهڻ - ساڳئي ٽرانزيڪشن جي اندر، ساڳئي ڊيٽا جي درخواست مختلف نتيجا ڏئي ٿي، جيڪا ٻئي (متوازي) ٽرانزيڪشن ذريعي ڊيٽا جي اضافي جي ڪري ٿئي ٿي.
  • غير ورجائيندڙ پڙهڻ - ساڳئي ٽرانزيڪشن جي اندر، ساڳئي ڊيٽا جي درخواست مختلف نتيجا ڏئي ٿي، جيڪا ڪنهن ٻئي (متوازي) ٽرانزيڪشن ذريعي ڊيٽا جي تبديلي يا حذف ٿيڻ جي ڪري ٿئي ٿي.
  • "گندي" پڙهڻ - پڙهڻ واري ڊيٽا شامل ڪئي وئي يا ٽرانزيڪشن طرفان تبديل ڪئي وئي جيڪا بعد ۾ واپس نه ڪئي ويندي؛
  • گم ٿيل تازه ڪاري - جڏهن مختلف ٽرانزيڪشن ساڳئي وقت ڊيٽا جي ساڳئي بلاڪ کي تبديل ڪندا آهن، سڀ تبديليون گم ٿي وينديون آهن سواءِ آخري هڪ (ملٽي ٿريڊنگ ۾ ”ريس حالت“ وانگر).
سهولت لاءِ، اسان جدول ۾ اڪيلائي جي سطح ۽ انهن جي صلاحيتن تي غور ڪريون ٿا:
موصليت جي سطح پريت پڙهڻ غير بار بار پڙهڻ "گندي" پڙهڻ گم ٿيل اپڊيٽ
سيريز ڪرڻ جي قابل + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. SQL انجيڪشن ڇا آهي؟

SQL انجيڪشن ويب سائيٽ کي هيڪ ڪرڻ جي طريقن مان ھڪڙو آھي، جنھن جو خلاصو آھي ڪجھ SQL ڪوڊ کي ڊيٽا ۾ GETسوالن POSTيا ڪوڪيز ذريعي داخل ڪرڻ. جيڪڏهن هڪ ويب سائيٽ اهڙي انجيڪشن کي انجام ڏئي ٿي، اهو ممڪن آهي ڊيٽابيس تائين رسائي حاصل ڪرڻ ۽ ايپليڪيشن کي هيڪ ڪرڻ. مثال طور، اسان ڄاڻون ٿا ڪجهه متغير جو نالو. اچو ته column_nameقسم سان چئون boolean. جيڪڏهن سسٽم انجيڪشن لاء حساس آهي، اسان شامل ڪري سگهون ٿا OR column_name=true۽ پوء هر شي کي لکي سگھون ٿا جيڪو اسان کي ڊيٽابيس مان گهربل آهي. ORهڪ OR حالت ٺاهيندو، ۽ ان کان پوء اسان جو اظهار هميشه هوندو true، جيڪو اسان کي اڳتي وڌائيندو. SQL انجيڪشن وانگر ويب سائيٽ تي حملو SQL سوالن ۾ استعمال ٿيندڙ ايندڙ ڊيٽا جي غلط پروسيسنگ جي ڪري ممڪن آهي. جڏهن JDBC استعمال ڪندي ڊيٽابيس سان ڳنڍڻ ، توهان مختلف استعمال ڪريو ٿا Statements. PreparedStatementسيڪيورٽي کي وڌائڻ لاءِ، عام جي بدران استعمال ڪرڻ ضروري آھي Statement، ڇاڪاڻ ته جڏھن استعمال ڪيو ويندو آھي، Statementسوالن جا اسٽرنگ ۽ قدر آسانيءَ سان شامل ڪيا ويندا آھن، انجيڪشن کي ممڪن بڻائيندا آھن. موڙ ۾، اتي PreparedStatementهڪ مخصوص درخواست ٽيمپليٽ آهي، ۽ ڊيٽا ان ۾ داخل ڪئي وئي آهي ان ۾ ڪوٽا جي نشانين سان ظاهر ٿيل. نتيجي طور، SQL انجيڪشن کي صرف ڪجهه فيلڊ جي اسٽرنگ نمائندگي طور سمجهيو ويندو. SQL انجيڪشن کان بچاءُ لاءِ، توھان استعمال ڪري سگھو ٿا چيڪن جي بنياد تي ريگيولر ايڪسپريشن (توهان پڙھي سگھوٿا ريگولر ايڪسپريشن بابت ھن آرٽيڪل ۾ ). Собеседование разработчика: разбор вопросов по базам данных - 9ٻيو اختيار اهو آهي ته ايندڙ پيرا ميٽرن جي اکرن جي تعداد تي حد مقرر ڪريو: مثال طور، جيڪڏهن توهان کي 9999 کان وڌيڪ نمبر نه ملڻ گهرجي، چار ايندڙ ايندڙ اکرن جي حد ڪندا. اهو SQL انجيڪشن استعمال ڪندي هيڪنگ جي خطري کي گهٽائي ڇڏيندو. توهان جاوا ۾ سيڪيورٽي بابت وڌيڪ ڄاڻ حاصل ڪري سگهو ٿا آرٽيڪل مان "Security in Java: best practices" .

14. ذخيرو ٿيل طريقا ڇا آهن؟ ذخيرو ٿيل افعال؟ ٽرگر؟

SQL ۾ ذخيرو ٿيل طريقا ڊيٽابيس ۾ ھڪڙو ادارو آھي، جيڪو SQL هدايتن جو ھڪڙو سيٽ آھي جيڪو ھڪڙي ڀيرو مرتب ڪيو ويو آھي ۽ سرور تي ذخيرو ٿيل آھي. هڪ لفظ ۾، هي جاوا ۾ طريقن جو هڪ اينالاگ آهي. ذخيرو ٿيل طريقا ڊيٽا تي عمل ڪري سگھن ٿا، ٻئي عام سوالن ۽ ڪجھ ڪارناما جيڪي عام سوالن لاء دستياب نه آھن. هڪ طريقيڪار هڪ SQL ادارو آهي جيڪو هڪ ڀيرو ٺاهيو ويندو آهي ۽ پوءِ سڏيو ويندو آهي پاسنگ آرگيومينٽس ذريعي. هن طريقي جو فائدو اهو آهي ته اهي هدايتون هڪ ڀيرو کان وڌيڪ استعمال ڪري سگهجن ٿيون. ذخيرو ٿيل طريقا ڪارڪردگي کي بهتر بڻائي ٿو، پروگرامنگ جي صلاحيتن کي وڌايو، ۽ ڊيٽا سيڪيورٽي خاصيتن کي سپورٽ ڪن ٿا. اچو ته هڪ طريقيڪار ٺاهڻ تي غور ڪريو:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
عمل کي سڏڻ:
CALL procedure_name (first_param, second_param…..);
ذخيرو ٿيل فنڪشن هڪ قسم جو ذخيرو ٿيل عمل آهي. هڪ فنڪشن جي وچ ۾ فرق اهو آهي ته اهو هميشه صرف هڪ واحد قدر موٽائي ٿو، جڏهن ته هڪ طريقيڪار قدرن جو هڪ سيٽ موٽائي ٿو. ذخيرو ٿيل طريقيڪار باقاعده SQL سان ملائي نه ٿو سگهجي، پر هڪ ذخيرو ٿيل فنڪشن ٿي سگهي ٿو - ۽ اهو ان جو فائدو آهي. ٻئي طرف، ذخيرو ٿيل ڪمن ۾ طريقيڪار کان وڌيڪ حدون آهن. محفوظ ٿيل فنڪشن ٺاهڻ:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
 begin
……...
RETURN some_value;
end
هڪ محفوظ ٿيل فنڪشن کي سڏڻ:
SELECT function_name(first_param, second_param…..);
هڪ ٽريگر هڪ ٻيو قسم جو ذخيرو ٿيل طريقو آهي جيڪو سڌو سنئون صارف طرفان نه سڏيو ويندو آهي، پر چالو ڪيو ويندو آهي جڏهن ڊيٽا کي تبديل ڪيو ويندو آهي. اهو آهي، اهو طريقو چالو ڪيو ويندو آهي جڏهن ڪجهه شرطون ملن ٿيون، جهڙوڪ، INSERTيا DELETE، يا UPDATEڏنل جدول جي هڪ خاص ڪالمن ۾ ڊيٽا. جڏهن هڪ ٽريگر فائر ڪيو ويندو آهي ته لفظن جي استعمال سان طئي ڪيو ويندو آهي BEFORE(منسلڪ واقعي کان اڳ فائر فائر) يا AFTER(واقعي کان پوء).
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
 begin
……...
 end

15. مشق

جيئن ته اهو ٿي سگهي ٿو، هڪ انٽرويو ۾ سڀ کان وڌيڪ عام SQL سوال مشق ٿيندو - مسئلو حل ڪرڻ. اهو اندازو ڪرڻ جي ڪوشش ڪرڻ ۾ ڪو به مقصد ناهي ته توهان ڪهڙي ڪم ۾ ايندا، ڇو ته هر شيء تي منحصر شخص جي تخيل جي نفيس تي منحصر آهي. تنهن ڪري، صرف ڪم ڪندڙ اختيار هوندو بهتر حاصل ڪرڻ لاءِ SQL سوالن جي مختلف پيچيدگين تي. sql-ex.ru مختلف ڪمن تي مشق ڪرڻ لاءِ وسيلا طور ڪم ڪري سگھي ٿو . پهرين ويهن مڪمل ٿيل ڪمن کان پوء، توهان جي ڳالهائيندڙ لاء اهو تمام ڏکيو هوندو ته توهان کي ڪنهن SQL ڪم سان ڊيڄاريو. Собеседование разработчика: разбор вопросов по базам данных - 11اهو سڀ ڪجهه اڄ جي لاءِ آهي: مون کي اميد آهي ته هي مضمون پڙهڻ کان پوءِ، ڊيٽابيس بابت سوال ڪنهن به مشڪلات يا مسئلن جو سبب نه بڻجندا. توهان جي توجه جي مهرباني ۽ توهان کي ٻيهر ملن ٿا!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION