JavaRush /جاوا بلاگ /Random-UR /ڈویلپر انٹرویو: ڈیٹا بیس کے سوالات کا تجزیہ

ڈویلپر انٹرویو: ڈیٹا بیس کے سوالات کا تجزیہ

گروپ میں شائع ہوا۔
سب کو سلام! ہم سب یہاں ایک مقصد کی طرف کام کر رہے ہیں - جاوا ڈویلپرز بننا ۔ شاید ایک پیشہ ور بننے کے راستے پر سب سے اہم مرحلہ تکنیکی انٹرویو ہے. ایک اصول کے طور پر، انٹرویو لینے والا اہم موضوعات سے گزرتا ہے، چند سوالات پوچھتا ہے۔ اس مضمون میں، ہم ایسے ہی ایک اہم موضوع کے بارے میں بات کریں گے - ڈیٹابیس ۔ آئیے اکثر پوچھے جانے والے سوالات کو دیکھتے ہیں اور مواد میں گہرائی میں ڈوبے بغیر ان کے جواب دینے کی کوشش کرتے ہیں، کیونکہ اس صورت میں کتاب کا حجم ہمارے لیے کافی نہیں ہو گا! تو چلو چلتے ہیں.ڈویلپر انٹرویو: ڈیٹا بیس کے سوالات کا تجزیہ - 1

1. ڈیٹا بیس کیا ہیں؟ وہ کن اقسام میں تقسیم ہیں؟

DBMS سے کیا مراد ہے؟

ڈویلپر انٹرویو: ڈیٹا بیس کے سوالات کا تجزیہ - 2ایک ڈیٹا بیس (DB) ایک منظم ڈھانچہ ہے جو آپس میں جڑی ہوئی معلومات کو ذخیرہ کرنے، تبدیل کرنے اور پروسیس کرنے کے لیے ڈیزائن کیا گیا ہے، بنیادی طور پر بڑی مقدار۔ دوسرے الفاظ میں، ایک ڈیٹا بیس ایک منظم ڈیٹا اسٹوریج ہے. مثال کے طور پر، ایک فون بک.

ڈیٹا بیس کی اقسام

  1. ایک رشتہ دار ڈیٹا بیس ڈیٹا کا ایک مجموعہ ہے جس کے درمیان پہلے سے طے شدہ تعلقات ہیں۔ ڈیٹا کو کالموں اور قطاروں پر مشتمل جدولوں کے سیٹ کے طور پر ذخیرہ کیا جاتا ہے۔ میزیں ڈیٹابیس میں پیش کردہ اشیاء کے بارے میں معلومات کو ذخیرہ کرتی ہیں۔ ہر ٹیبل کالم ایک مخصوص ڈیٹا کی قسم کو ذخیرہ کرتا ہے، اور ہر سیل ایک وصف قدر ذخیرہ کرتا ہے۔
  2. غیر متعلقہ نظام (NoSQL) لچکدار اسکیموں کے ساتھ مخصوص ڈیٹا ماڈلز کے لیے ڈیزائن کیے گئے نظام ہیں۔ دوسرے لفظوں میں، یہ ڈیٹا بیس ہیں جو ڈیٹا کو ٹیبلر اسکیموں، قطاروں اور کالموں کی شکل میں نہیں بلکہ دوسرے فارمیٹس میں محفوظ کرتے ہیں۔
آپ اس مضمون میں غیر متعلقہ ڈیٹا بیس کے بارے میں مزید پڑھ سکتے ہیں: ڈویلپرز کے لیے NoSQL کے لیے ایک رہنما ۔ ڈیٹا بیس مینجمنٹ سسٹم (DBMS) سافٹ ویئر کا ایک سیٹ ہے جس کے ساتھ صارف ڈیٹا بیس (DBs) بنا سکتا ہے اور ان پر مختلف آپریشن کر سکتا ہے: سپلیمنٹ، اپ ڈیٹ، ڈیلیٹ، سلیکٹ، وغیرہ۔ DBMS ڈیٹا کی حفاظت، سالمیت، تحفظ کی ضمانت دیتا ہے۔ اسٹوریج اور آپ کو ڈیٹا بیس انتظامیہ تک رسائی دینے کی اجازت دیتا ہے۔ مثال کے طور پر، MySql ایک DBMS ہے جو غیر متعلقہ ڈیٹا بیس یا MongoDB تک رسائی فراہم کرتا ہے۔

2. نارملائزیشن کیا ہے؟ عام شکل؟ نارملائزیشن کی کتنی شکلیں ہیں؟ پہلے تین نام بتائیں۔

نارملائزیشن ڈیٹا بیس میں ڈیٹا کو ترتیب دینے اور ترتیب دینے کا عمل ہے، جو انحصار کی بے کار پن اور عدم مطابقت کو ختم کرکے ڈیٹا بیس کی زیادہ لچک فراہم کرتا ہے۔ نارمل فارم ٹیبل کی ایک خاصیت ہے، جسے نارملائزیشن کے تناظر میں سمجھا جاتا ہے، جو ٹیبل کو ساخت کی سادگی اور درستگی کے لحاظ سے نمایاں کرتا ہے۔ عام شکل کی وضاحت ضروریات کے ایک سیٹ کے طور پر کی جاتی ہے جسے میز کو پورا کرنا ضروری ہے۔ مجموعی طور پر چھ عام شکلیں ہیں، لیکن عملی طور پر پہلے تین سے زیادہ استعمال نہیں کی جاتی ہیں:
  1. پہلی عام شکل:
    • تمام صفات سادہ ہیں (یعنی جوہری اور ناقابل تقسیم)؛
    • تمام ڈیٹا اسکیلر ہے (یعنی مثبت)؛
    • کوئی ڈپلیکیٹ قطاریں نہیں ہیں (اس کے لیے، ہر قطار کے لیے ایک بنیادی کلید بنائی جاتی ہے)۔
  2. دوسری عام شکل:
    • پہلی عام شکل کی شرائط پوری ہوتی ہیں؛
    • ہر غیر کلیدی وصف ایک بنیادی کلید کا حوالہ دیتا ہے۔
  3. تیسری عام شکل:
    • دوسرے نارمل گروپ کی شرائط پوری ہوتی ہیں۔
    • نان کی فیلڈز دیگر نان کی فیلڈز سے آزاد ہیں: وہ صرف ایک بنیادی کلید کے ساتھ منسلک ہو سکتے ہیں۔

3. ڈی نارملائزیشن

ڈی نارملائزیشن ڈیٹا بیس نارملائزیشن کی شکلوں کی جان بوجھ کر کمی یا خلاف ورزی ہے، عام طور پر بے کار ڈیٹا کو شامل کرکے ڈیٹا بیس سے پڑھنے کو تیز کرنا۔ عام طور پر، یہ معمول کے لیے الٹا عمل ہے۔ ایسا ہوتا ہے کیونکہ عام شکلوں کا نظریہ ہمیشہ عملی طور پر لاگو نہیں ہوتا ہے۔ مثال کے طور پر، غیر جوہری اقدار ہمیشہ "برائی" نہیں ہوتی ہیں: بعض اوقات اس کے برعکس بھی۔ کچھ معاملات میں، سوالات کو انجام دیتے وقت اضافی جوائنز ضروری ہوتے ہیں، خاص طور پر جب بڑی مقدار میں معلومات پر کارروائی کی جاتی ہے۔ یہ بالآخر کارکردگی کو بہتر بنا سکتا ہے۔ تجزیات کے لیے بنائے گئے ڈیٹا بیس کو اکثر استفسار پر عمل درآمد کو تیز کرنے کے لیے غیر معمول بنا دیا جاتا ہے۔ مثال کے طور پر، آپ اکثر رپورٹس کے لیے کچھ ڈیٹا کا نمونہ لیں گے جہاں غیر کلیدی کالم ایک دوسرے سے متعلق ہوں گے۔ آپ جان بوجھ کر نارملائزیشن کی تیسری شکل کو ہٹاتے ہیں اور نمونے لینے میں آسانی کے لیے ہر چیز کو ایک ٹیبل میں جوڑ دیتے ہیں - تاکہ آپ کو دوسرے ٹیبلز پر اضافی سوالات کرنے کی ضرورت نہ پڑے۔

4. اشاریہ جات

ایک انڈیکس قدروں کا ایک ترتیب شدہ سیٹ ہے جو کسی ٹیبل یا کسی مخصوص کالم کے ساتھ ویو سے منسلک ہوتا ہے جو ڈیٹا کی بازیافت کو تیز کرتا ہے۔ یعنی یہ انڈیکس کی ایک قسم ہے: فون بک میں حروف تہجی کی طرح، جو آخری نام سے تلاش کرتے وقت ہماری مدد کرتا ہے۔ اگر درست طریقے سے استعمال کیا جائے تو یہ فیچر بڑے ڈیٹا بیس کے ساتھ کام کرتے وقت کارکردگی کو بہت بہتر بنا سکتا ہے۔ یا آپ اسے بہت کم کر سکتے ہیں۔ تلاش کو تیز کرنے کے لیے، یہ چابیاں ایک متوازن درخت کے ڈھانچے میں محفوظ کی جاتی ہیں جس کے ذریعے تلاش کی جاتی ہے۔ ایک اصول کے طور پر، اشاریہ جات کو ان فیلڈز پر درج کرنے کی ضرورت ہوتی ہے جو اکثر تلاش کیے جاتے ہیں۔ جب آپ کے پاس کم از کم 10 ہزار ریکارڈ ہوں تو آپ کو انڈیکس بنانے کے بارے میں سوچنا چاہیے۔ بصورت دیگر، آپ کو کوئی قابل توجہ نتیجہ نظر نہیں آئے گا، کیونکہ قبل از وقت اصلاح EVIL ہے ۔ اور انڈیکس سسٹم کی کارکردگی کو کیسے متاثر کرسکتا ہے، آپ پوچھتے ہیں؟ جب نیا ڈیٹا داخل کیا جاتا ہے یا پرانا ڈیٹا حذف کر دیا جاتا ہے، تو متوازن درخت کی ساخت کو دوبارہ شمار کیا جائے گا۔ درحقیقت، جتنے زیادہ ڈیٹا اور اشاریہ جات، اتنے ہی زیادہ درختوں کی گنتی کی ضرورت ہے۔ صورتحال کا تصور کریں: آپ کے پاس اس ٹیبل پر تقریباً 20,000 ریکارڈز اور 7 اشاریہ جات ہیں۔ یعنی، ڈیٹا داخل کرتے وقت، آپ کو 7 درختوں کی دوبارہ گنتی کرنے کی ضرورت ہے، ہر ایک میں 20,000 ریکارڈ ہیں۔ سختی سے بولیں تو، ان ٹیبلز کے لیے اشاریہ جات کا استعمال کرنا جن میں ڈیٹا کو کثرت سے شامل/حذف کیا جائے گا بالکل بھی سفارش نہیں کی جاتی ہے۔ آخر میں، میں یہ نوٹ کرنا چاہوں گا کہ کالموں کے اشاریہ جات جن میں قدر اکثر پائی جاتی ہے، nullاتنی موثر نہیں ہوگی، اس لیے ان کو ایسے کالموں میں شامل کرنا مناسب نہیں۔

ایس کیو ایل میں کلسٹرڈ اور نان کلسٹرڈ انڈیکس میں کیا فرق ہے؟

کلسٹرڈ:

  • منتخب فیلڈ کے لیے فزیکل آرڈر فراہم کرتا ہے۔
  • اگر کسی ٹیبل میں کلسٹرڈ انڈیکس ہو تو اسے کلسٹرڈ کہا جاتا ہے۔
  • فی ٹیبل ایک سے زیادہ انڈیکس کی ضرورت نہیں ہے۔
  • 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 NULLNULL— اس خاصیت کے ساتھ، جب ایک متعلقہ قطار کو مرکزی میز سے حذف یا اپ ڈیٹ کیا جاتا ہے، تو غیر ملکی کلیدی کالم کی قدر سیٹ ہو جائے گی۔
  • 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. بینک اکاؤنٹ سے مخصوص اکاؤنٹ میں رقم منتقل کریں۔
لیکن کچھ بھی ہو سکتا ہے۔ مثال کے طور پر، وہ بینک جائیں گے، اور پھر کچھ خرابی ہو گی اور دوسرا آپریشن مکمل نہیں ہو گا۔ یا اس کے برعکس: صرف دوسرا آپریشن کیا جائے گا۔ لہذا، یہ اعمال ایک لین دین کے اندر کئے جاتے ہیں، اور نتیجہ یا تو تمام یا کچھ بھی نہیں ہے. C - مستقل مزاجی : ہر کامیاب لین دین ہمیشہ صرف قابل حل نتائج ریکارڈ کرتا ہے۔ یہ یقینی بناتا ہے کہ تمام پابندیوں کو پورا کیا گیا ہے (مثال کے طور پر، NOT NULL)، بصورت دیگر لین دین واپس لے لیا جائے گا۔ اور - تنہائی : لین دین کے عمل کے دوران، متوازی لین دین اس کے نتائج کو متاثر نہیں کرنا چاہیے۔ یہ ہمیں غیر حتمی ڈیٹا اسٹیٹس کو ہر کسی سے چھپانے کی صلاحیت فراہم کرتا ہے۔ دراصل، یہی وجہ ہے کہ ناکام لین دین کچھ بھی نہیں توڑ سکتا۔ تھوڑا کم ہم لین دین کی تنہائی کی سطحوں سے واقف ہوں گے۔ D - پائیداری : اگر کوئی لین دین مکمل ہو جاتا ہے، تو آپ یقین کر سکتے ہیں کہ اس میں کی گئی تبدیلیاں کسی ناکامی کی وجہ سے منسوخ نہیں ہوں گی۔

12. لین دین کی تنہائی کی سطح

ہر الگ تھلگ کی سطح بعض اعمال (موقعوں) کی اجازت دیتی ہے/ منع کرتی ہے:
  • فینٹم ریڈنگ - ایک ہی لین دین کے اندر، ایک ہی ڈیٹا کی درخواست مختلف نتائج دیتی ہے، جو کسی دوسرے (متوازی) لین دین کے ذریعے ڈیٹا کے اضافے کی وجہ سے ہوتی ہے۔
  • غیر دہرائے جانے والا پڑھنا - ایک ہی لین دین کے اندر، ایک ہی ڈیٹا کی درخواست مختلف نتائج دیتی ہے، جو کسی اور (متوازی) لین دین کے ذریعے ڈیٹا میں تبدیلی یا حذف ہونے کی وجہ سے ہوتی ہے۔
  • "گندا" پڑھنا - لین دین کے ذریعہ شامل یا تبدیل شدہ ڈیٹا کو پڑھنا جو بعد میں واپس نہیں لیا جائے گا۔
  • گمشدہ اپ ڈیٹ - جب مختلف ٹرانزیکشنز ڈیٹا کے ایک ہی بلاک کو ایک ہی وقت میں تبدیل کرتی ہیں، تو آخری کو چھوڑ کر تمام تبدیلیاں ضائع ہو جاتی ہیں (ملٹی تھریڈنگ میں "ریس کنڈیشن" کی طرح)۔
سہولت کے لیے، ہم جدول میں تنہائی کی سطحوں اور ان کی صلاحیتوں پر غور کرتے ہیں:
موصلیت کی سطح پریت پڑھنا غیر بار بار پڑھنا "گندی" پڑھنا اپ ڈیٹ کھو دیا
سیریلائزیبل + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. SQL انجیکشن کیا ہے؟

ایس کیو ایل انجیکشن ویب سائٹ کو ہیک کرنے کے طریقوں میں سے ایک ہے، جس کا نچوڑ کچھ ایس کیو ایل کوڈ کو GETسوالات POSTیا کوکیز کے ذریعے ڈیٹا میں داخل کرنا ہے۔ اگر کوئی ویب سائٹ ایسے انجیکشن لگاتی ہے تو ڈیٹا بیس تک رسائی حاصل کرنا اور ایپلیکیشن کو ہیک کرنا ممکن ہے۔ مثال کے طور پر ہم کچھ متغیر کا نام جانتے ہیں۔ آئیے column_nameٹائپ کے ساتھ کہتے ہیں boolean۔ اگر نظام انجیکشن کے لیے حساس ہے، تو ہم OR column_name=trueڈیٹا بیس سے اپنی ضرورت کی ہر چیز کو شامل اور لکھ سکتے ہیں۔ ORایک OR حالت بنائے گا، اور اس کے بعد ہمارا اظہار ہمیشہ ہوگا true، جو ہمیں مزید لے جائے گا۔ SQL انجیکشن جیسی ویب سائٹ پر حملہ SQL سوالات میں استعمال ہونے والے آنے والے ڈیٹا کی غلط پروسیسنگ کی وجہ سے ممکن ہے۔ JDBC کا استعمال کرتے ہوئے ڈیٹا بیس سے جڑتے وقت ، آپ مختلف استعمال کرتے ہیں Statements۔ PreparedStatementسیکورٹی کو بڑھانے کے لیے، معمول کے بجائے استعمال کرنا ضروری ہے Statement، کیونکہ جب استعمال کیا جاتا ہے، Statementاستفسار کے تار اور اقدار کو آسانی سے ایک ساتھ جوڑا جاتا ہے، جس سے انجیکشن ممکن ہو جاتے ہیں۔ بدلے میں، PreparedStatementایک مخصوص درخواست ٹیمپلیٹ ہے، اور ڈیٹا کو اس میں کوٹیشن کے نشانات کے ساتھ داخل کیا جاتا ہے۔ نتیجے کے طور پر، ایس کیو ایل انجیکشن کو صرف کچھ فیلڈ کی سٹرنگ نمائندگی کے طور پر سمجھا جائے گا۔ ایس کیو ایل انجیکشن سے بچانے کے لیے، آپ ریگولر ایکسپریشنز پر مبنی چیک استعمال کر سکتے ہیں (آپ اس آرٹیکل میں ریگولر ایکسپریشنز کے بارے میں مزید پڑھ سکتے ہیں )۔ Собеседование разработчика: разбор вопросов по базам данных - 9دوسرا آپشن یہ ہے کہ آنے والے پیرامیٹرز کے حروف کی تعداد پر ایک حد مقرر کی جائے: مثال کے طور پر، اگر آپ کو 9999 سے زیادہ نمبر نہیں ملنا چاہیے، تو چار آنے والے حروف کی حد ہوگی۔ یہ ایس کیو ایل انجیکشن کے استعمال سے ہیکنگ کے خطرے کو کم کرے گا۔ آپ جاوا میں سیکیورٹی کے بارے میں مضمون "جاوا میں سیکیورٹی: بہترین طریقہ کار" سے مزید جان سکتے ہیں ۔

14. ذخیرہ شدہ طریقہ کار کیا ہیں؟ ذخیرہ شدہ افعال؟ ٹرگر؟

ایس کیو ایل میں ذخیرہ شدہ طریقہ کار ڈیٹا بیس میں ایک ہستی ہے، جو ایس کیو ایل ہدایات کا ایک مجموعہ ہے جو ایک بار مرتب کرکے سرور پر محفوظ کیا جاتا ہے۔ ایک لفظ میں، یہ جاوا میں طریقوں کا ایک ینالاگ ہے۔ ذخیرہ شدہ طریقہ کار ڈیٹا پر کارروائیاں انجام دے سکتے ہیں، عام سوالات اور کچھ ایسی کارروائیاں جو عام سوالات کے لیے دستیاب نہیں ہیں۔ ایک طریقہ کار ایک ایس کیو ایل ہستی ہے جو ایک بار بنائی جاتی ہے اور پھر دلائل پاس کرکے بلائی جاتی ہے۔ اس نقطہ نظر کا فائدہ یہ ہے کہ ان ہدایات کو ایک سے زیادہ مرتبہ دوبارہ استعمال کیا جا سکتا ہے۔ ذخیرہ شدہ طریقہ کار کارکردگی کو بہتر بناتا ہے، پروگرامنگ کی صلاحیتوں کو بڑھاتا ہے، اور ڈیٹا سیکیورٹی کی خصوصیات کو سپورٹ کرتا ہے۔ آئیے ایک طریقہ کار بنانے پر غور کریں:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
طریقہ کار کو کال کرنا:
CALL procedure_name (first_param, second_param…..);
ذخیرہ شدہ فنکشن ذخیرہ شدہ طریقہ کار کی ایک قسم ہے۔ فنکشن کے درمیان فرق یہ ہے کہ یہ ہمیشہ صرف ایک ہی قدر واپس کرتا ہے، جبکہ طریقہ کار اقدار کا ایک سیٹ لوٹاتا ہے۔ ذخیرہ شدہ طریقہ کار کو باقاعدہ ایس کیو ایل کے ساتھ نہیں ملایا جا سکتا، لیکن ایک ذخیرہ شدہ فنکشن ہو سکتا ہے - اور یہ اس کا فائدہ ہے۔ دوسری طرف، ذخیرہ شدہ افعال میں طریقہ کار سے کہیں زیادہ حدود ہیں۔ ذخیرہ شدہ فنکشن بنانا:
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