Database Konkour Flashcards
DBMS
چیست؟
سیستمی برای مدیریت پایگاه داده است.
منظور از خاصیت یکپارچگی در خواص ACID
چیست؟
یا باید همه دستوالعمل های یک تراکنش اجرا شوند یا هیچکدام نباید اجرا شوند.
عنصرهای اصلی پایگاه داده کدام است؟
عناصر اصلی پایگاه داده شامل سختافزار، نرمافزار، کاربر و داده است. سختافزار برای ذخیرهسازی، پردازش و ارتباطات در فرایندهای پایگاه داده مورد استفاده قرار میگیرد. انواع نرمافزار در بحث پایگاه داده نیز شامل نرم افزار کاربردی و نرم افزار سیستمی میشود. کاربران پایگاه داده نیز افرادی مختلفی همچون مدیر پایگاه داده، برنامه نویس
DBP و کاربران نهایی هستند. نقش دادهها در بانکهای اطلاعاتی نیز بسیار واضح است یعنی اگر دادهای درکار نباشد نیازی به پایگاه داده هم وجود نخواهد داشت.
معماری توزیع شده در انواع معماری
DBMS
چیست؟
معماری است که در آن دادههای ذخیره شده به لحاظ منطقی متعلق به یک سیستم هستند و به لحاظ فیزیکی دادهها روی کامپیوترهایی به هم متصل در یک شبکه یا چند شبکه ذخیره شدهاند.
انواع مدل سازی معنایی داده کدام است؟
مدلسازی معنایی داده، ارائه مدلی از محیط عملیاتی به کمک مفاهیمی مستقل از موضوعهای مربوط به نمایش منطقی و فیزیکی دادهها است. روشهای
EER ،ER و UML
از جمله روشهای مدلسازی معنایی دادهها به حساب میآیند.
ER روش موجودیت
- ارتباط،
EER
روش موجودیت - ارتباط توسعه یافته و
UML
زبان مدلسازی یکپارچه است که فقط خاص مدلسازی معنایی داده نیست و برای طراحی سیستمهای نرمافزاری هم از UML
استفاده میشود.
انواع کلید در مدل رابطه ای کدام است؟
انواع کلید در مدل رابطهای عبارتند از:
ابرکلید
کلید کاندید
کلید اصلی
کلید فرعی
کلید خارجی
DDL (Data Definition Language)
زبان تعریف داده برای
ساختاردهی پایگاه داده است و جدول ها و ویوها و این ها را می سازد
DML (Data Manipulation Language)
زبان دستکاری داده هاست که برای تغییرات روی داده ها به کار می رود مثل
select, insert, update, delete
پارتیشن بندی در دیتابیس برای چه چیزی انجام می شود و چرا؟
1- برای بهبود عملکرد جست و جو و فیلتر کردن داده ها
2- برای مدیریت بهتر داده های کلان
برای ایجاد یک پارتیشن بندی، از ابتدای یک جدول که داریم ایجاد می کنیم، باید آن جدول را بر اساس یک ستون پارتیشن بندی کنیم.
این ستون باید
primary key
باشد تا دیتاها یکتا باشند و ما رکوردهای تکراری در جدول های نامربوط به آن پارتیشن نداشته باشیم.
در مثال زیر، آمدیم و مقصد ماموریت افراد را پارتیشن بندی کردیم.
CREATE TABLE missions (
mission_id SERIAL,
person_id INT REFERENCES persons(id),
destination VARCHAR(100),
mission_date DATE,
PRIMARY KEY (mission_id, destination) – اضافه کردن ستون destination به کلید اصلی
) PARTITION BY LIST (destination);
CREATE TABLE missions_destination_New_York partition of missions
FOR VALUES IN (‘New York’);
CREATE TABLE missions_destination_Los_Angeles PARTITION OF missions
FOR VALUES IN (‘Los Angeles’);
CREATE TABLE missions_destination_Chicago PARTITION OF missions
FOR VALUES IN (‘Chicago’);
CREATE TABLE missions_destination_Houston PARTITION OF missions
FOR VALUES IN (‘Houston’);
CREATE TABLE missions_destination_London PARTITION OF missions
FOR VALUES IN (‘London’);
CREATE TABLE missions_destination_Paris PARTITION OF missions
FOR VALUES IN (‘Paris’);
DO $$
DECLARE
cities TEXT[] := ARRAY[‘New York’, ‘Los Angeles’, ‘Chicago’, ‘Houston’, ‘London’, ‘Paris’];
BEGIN
FOR i IN 1..1000000 LOOP
INSERT INTO missions (person_id, destination, mission_date)
VALUES (
(i % 1000) + 1, – هر فرد چندین ماموریت دارد
cities[(i % array_length(cities, 1)) + 1], – انتخاب شهر از لیست
CURRENT_DATE - (i % 365)
);
END LOOP;
END $$;
Distributed Database Systems
یک دیتابیس از چندین سیستم تشکیل می شود که همه ی این سیستم ها با هم در یک شبکه هستند و با همدیگر همکاری می کنند.
در
distributed database systems،
نحوه توزیع دادهها میتواند به دو روش اصلی انجام شود:
Replication (تکثیر):
در این روش، نسخههای کپی
(Replication)
از یک دیتابیس یا بخشی از آن در چندین سیستم ذخیره میشوند.
مزایا:
اگر یکی از سیستم ها خراب شود، سایر سیستم ها می توانند کار کنند.
چالشها:
هماهنگ کردن دادهها
(Data Consistency)
در میان سیستمها، به خصوص در صورت تغییر یا بهروزرسانی دادهها.
Partitioning (پارتیشنبندی):
در این روش، دادهها به بخشهای مختلف تقسیم میشوند و هر بخش در یک سیستم خاص ذخیره میشود.
مزایا: استفاده بهینه از منابع، کاهش حجم داده در هر سیستم، و افزایش عملکرد (Performance).
چالشها: مدیریت کوئریهای پیچیده که ممکن است نیاز به ترکیب دادهها از سیستمهای مختلف داشته باشند.
Transparency
in
Distributed Database Systems
Transparency (شفافیت)
به معنای پنهان کردن پیچیدگی سیستم های توزیع شده از کاربران است.
Types of Transparency:
1- Access Transparency :
شفافیت دسترسی:
یعنی کاربر نیازی ندارد که بداند داده ها کجا ذخیره شده اند و چگونه باید به آن دسترسی پیدا کند. کاربر یک کوئری می نویسد و سیستم به طور خودکار تشخیص می دهد که باید به کدام سرور مراجعه کند.
2- Location Transparency:
شفافیت مکانی:
کاربر نیازی ندارد که بداند داده ها در کدام سرور یا نود ذخیره شده اند.
3- Replication Transparency:
شفافیت تکثیر:
اگر دادهها در چندین سیستم کپی شده باشند
(Replication)،
سیستم بهطور خودکار کپی مناسب را انتخاب میکند، بدون اینکه کاربر از تعداد کپیها یا مکان آنها اطلاعی داشته باشد.
مثلا اگر دو جدول یکسان
Orders
در دو سرور
A و B
داشته باشیم، خود سیستم انتخاب می کند که از کدام سرور پاسخ بدهد.
4- Fragmentation Transparency:
شفافیت تقسیم بندی:
اگر داده ها را به چندین بخش تقسیم کنیم و هر بخش در سرور خاصی ذخیره شود، سیستم این جزییات را از کاربر پنهان می کند.
ACID in Transaction
1- Atomicity:
اتمی بودن:
یا همه عملیات یک ترنزاکشن باید انجام شود یا کلا انجام نشود.
2- Consistency:
سازگاری:
بعد از انجام یک ترنزاکشن، یکپارچگی دیتابیس حفظ شود.
مثلا موجودی بانکی نمی تواند منفی باشد، بنابراین اگر یک ترنزاکشن که انجام شد، موجودی بانکی نباید منفی شود.
3- Isolation:
ایزوله سازی:
دو تراکنش که همزمان انجام می شوند، نباید با همدیگر کانفلیکت داشته باشد.
برای اجرای این ویژگی، می توان یک قفل روی دیتابیس گذاشت که فقط یک تراکنش انجام شود و تمام که شد، سراغ تراکنش بعدی می رود.
4- Durability:
ماندگاری:
تغییرات ترنزاکشن باید ماندگار باشد.
یعنی با ریستارت سرور، آن ترنزاکشن هم باید همچنان وجود داشته باشد.
انواع حافظه در دیتابیس
1- Volatile:
حافظه موقت
2- non-volatile:
حافظه ای که با ریستارت کردن سیستم، پاک نمی شود اما ممکن است خراب هم شود.
3- Stable Storage:
یا
Permenant Storage:
حافظه دائمی:
برای داشتن حافظه ی دائمی از
Replication
استفاده می کنیم.
Recoverable Schedule
زمانبندی قابل بازیابی
اگر داده ای را از یک ترنزاکشن می خوانیم ، حتما باید بعد از کامیت آن ترنزاکشن باشد.
Cascading Rollback
اگر یک ترنزاکشن
abort
یا
rollback
شود،
و همچنین این
abort
شدن باعث
abort شدن
ترنزاکشن های دیگر هم شود،
Cascading Rollback
اتفاق می افتد.
Isolation Levels
سطح های ایزولیشن
1- Serializable:
یعنی همه ی ترنزاکشن ها باید به گونه ای انجام شود که در خروجی نهایی، به صورتی باشد که انگار ترنزاکشن ها پشت سر هم انجام شده اند، حتی اگر در واقعیت، به طور همزمان اجرا شده باشند.
2- Repeatable Read:
خواندن های مکرر بدون تغییر
3- Commited Read:
یک ترنزاکشن داده هایی را می تواند بخواند که تا این لحظه کامیت شده باشند.
4- UnCommited Read:
یک ترنزاکشن می تواند داده های
Uncommit
ترنزاکشن های دیگر را هم بخواند.
این ساده ترین سطح ایزولیشن است.
یک سیستم برای طراحی باید چه اصولی داشته باشد؟ سه اصل مهم
1-Reliability: قابلیت اطمینان
سیستم باید درشرایط نامطلوب، سخت افزاری، نرم افزاری یا خطای انسانی هم عملکرد صحیح داشته باشد.
2- Scalability: مقیاس پذیری
با افزایش حجم داده، تعداد کاربران، و پیچیدگی سیستم، همچنان باید سیستم قابلیت مدیریت منطقی برای این شرایط را داشته باشد.
3- Maintainability: قابلیت نگه داری
سیستم باید طوری طراحی شود که توسعه دهنده های مختلف در زمان های مختلف روی سیستم کار کنند و آن را نگه داری کنند و همچنین فیچرهای جدید به آن اضافه کنند.
انواع مقیاس پذیری در طراحی سیستم ها
1- vertical scaling(scale up) : مقیاس پذیری عمودی
افزودن منابع قوی تر به سرور (ارتقای رم، سی پی ی و دیسک)
2-horizontal scaling (scale out): مقیاس پذیری افقی
افزایش تعداد سرورها
3- optimization: بهینه سازی نرم افزار
بهینه سازی پایگاه داده، کش کردن داده ها، بهبود الگوریتم ها و کاهش درخواست های غیرضروری
4- Distributed systems:
استفاده از دیتابیس های توزیع شده