نحوه کار SQL Engine پایگاه داده
پنجشنبه 29 اسفند 1398در حال حاضر ما فرض میکنیم که شما میدانید SQL چیست یا تجربه کار با SQL را دارید یا از آن سالها استفاده کردهاید. ما افراد زیادی را میشناسیم که چیزهای زیادی در مورد SQL میدانند و حتی پروژههای بسیاری با SQL انجام دادهاند اما نمیدانند موتور SQL یا SQL engine چیست یا اینکه SQL engine پایگاه داده چگونه کار میکند.
بدیهی است که کمتر کسی به کار داخلی SQL engine اهمیت میدهد زیرا ما بدون اینکه بدانیم SQL چگونه کار میکند، میتوانیم با استفاده از هر برنامه SQLای پایگاه داده را ایجاد کرده و به آن دسترسی داشته باشیم.
SQL یک زبان برنامهنویسی است یا زبان پرس و جو (کوئرینویسی)؟
با استفاده از SQL ما میتوانیم به صورت تبادلی از زبان برنامهنویسی و کوئرینویسی استفاده کنیم، بسیاری از توسعهدهندگان به SQL به عنوان یک زبان برنامهنویسی خاص نگاه میکنند زیرا SQL engine شامل دو مولفه کامپایلر (Compiler) و ماشین مجازی (Virtual machine) است که کامپایلر دستورات کوئری را به پروسیجرها کامپایل میکند و ماشین مجازی پروسیجرها را اجرا میکند. مفهوم کامپایل و اجرای کوئریهای SQL توسط SQL engine آن را به یک زبان برنامهنویسی تبدیل میکند. بنابراین اگر کسی بگوید SQL یک زبان برنامهنویسی است، تا حدودی درست گفته است.
چرا برای هر زبان برنامهنویسی که میتواند عملیات CRUD را ایجاد کند، از SQL استفاده کنیم؟
صحیح است که با استفاده از هر زبان برنامهنویسی میتوانیم عملیات ساده CRUD (Create، Read، Update و Delete) را اجرا کنیم، اما وقتی برنامه با کوئریهای پیچیده در زبان برنامهنویسی همراه است باید صدها خط معادل چند خط کوتاه SQL بنویسیم.
مروری بر SQL
SQL مخفف Structured Query Language است که میتواند به عنوان زبان برنامهنویسی یا کوئرینویسی محسوب شود. هدف اصلی آن تعامل با بانک اطلاعاتی رابطهای است که در آن دادهها به صورت جداول ذخیره میشوند. SQL میتواند حجم زیادی از دادهها را مدیریت کند، به ویژه اگر دادهها به صورت همزمان نوشته شوند و ما انتقال زیادی از این دادهها را داشته باشیم.
وقتی کاربر از SQL برای مدیریت دادهها استفاده میکند، میتواند عملیات ایجاد، بازیابی، بهروزرسانی و حذف دادهها را انجام دهد. سیستمهای مدیریت دیتابیس رابطهای (DBMS) متنوعی وجود دارند، مثل MySQL، SQLite، Postgres SQL و غیره و همه آنها یک نوع ویژگی را ارائه میدهند.
SQL Engine چیست؟
SQL engine نوعی نرمافزار است که دستورات SQL را جمعآوری و تفسیر میکند، بنابراین عملیات مناسب میتوانند بر روی دیتابیس رابطهای اجرا شوند. هدف SQL engine ایجاد، خواندن، بهروزرسانی و حذف (CRUD) دادهها از دیتابیس است.
یک SQL engine یا موتور دیتابیس SQL server شامل دو مولفه اصلی موتور ذخیرهسازی و پردازنده کوئری است. امروزه برخی از SQL DBMSهای مدرن شامل بیش از یک نوع موتور ذخیرهسازی هستند. ما انواع مختلفی از SQL engineها را داریم و همه آنها دارای معماری متفاوتی هستند، اما برای انجام هدف مشابهی استفاده میشوند که شامل عملیات CRUD بر روی دیتابیس و بسیاری از ویژگیهای دیگر است.
SQL بخش بزرگی از بازار آنلاین را پوشش میدهد و بسیاری از شرکتها از سیستمهای SQL خود برای پردازش معاملات آنلاین و پردازش تحلیلی آنلاین استفاده میکنند.
SQL Database Engine چگونه کار میکند؟
میدانیم که کامپایلر SQL کوئری را کامپایل میکند و ماشین مجازی کوئری کامپایلشده را اجرا میکند. حالا بیایید ببینیم موتور پایگاه داده یا همان دیتابییس چگونه کار میکند.
SQL مراحل بسیاری دارد که فرآیند کامپایل کوئری و اجرای آن را انجام میدهد. همانطور که گفتیم، هر موتور پایگاه داده SQLای شامل دو مولفه اصلی، کامپایلر و ماشین مجازی است. کامپایلر کوئری را میخواند و این کوئری را به کد بایت مناسب تبدیل میکند، سپس آن کد بایت توسط ماشین مجازی ارزیابی میشود و پاسخ مناسبی را به کلاینت برمیگرداند.
اجرای کامل کوئری شامل 4 مرحله اصلی است:
1. کامپایل (تجزیه، بررسی)
2. بایندینگ (اتصال)
3. بهینهسازی
4. اجرا
کامپایل-تجزیه
این بخشی از فرآیند کامپایل است، و در این مرحله دستور کوئری با اجزای مناسب در عبارات منحصربهفرد توکنگذاری میشود.
کامپایل-بررسی
این بخش دستور را اعتبارسنجی کرده و آن را با فهرست سیستم مطابقت میدهد. این مرحله از کامپایل اعتبارسنجی میکند که آیا کوئری معتبر است یا خیر، همچنین مجوز کاربر را برای اجرای این دستور اعتبارسنجی میکند.
کامپایل-بایندینگ
نمایش باینری مربوطه را برای دستور کوئری وارد شده ایجاد میکند. تمام موتورهای SQL server این مرحله از کامپایل را دارند که در آن کد بایت تولید میشود.
با استفاده از این مرحله، دستور کامپایل شده و حالا به سرور دیتابیس برای بهینهسازی و اجرا ارسال میشود.
بهینهسازی
در این مرحله بهترین الگوریتم برای کد بایت بهینهسازی میشود. این ویژگی همچنین با عنوان Query Optimizer یا Relational Engine نیز شناخته میشود.
اجرا
ماشین مجازی کد بایت بهینهسازی شده را دریافت کرده و آن را اجرا میکند.
نکته: فرآیند تجزیه کامپایل نیاز به هیچ مجوزی از دیتابیس ندارد که باعث میشود این مرحله سریعترین مرحله فرآیند کامپایل باشد.
تبدیل SQL از داده به جدول
SQL با C نوشته شده است و از اصل Binary-Tree استفاده میکند که باعث میشود دادههای ورودی در سطرها و ستونها ذخیره شوند. در ساختار Binary-Tree چندین شاخه وجود دارد که اشاره به عنصر داده جدید دارد و همین ساختار توسط دیتابیس SQL دنبال میشود که دادهها به جداول تبدیل میشود که هر ستون و سطر دادهها به یکدیگر اشاره دارند.
موتور ذخیرهسازی (Storage Engine) SQL Server چست؟
نرمافزاری است که برای انجام عملیات CRUD بین دیسک و حافظه مورد استفاده قرار میگیرد.
جمعبندی
برای ایجاد محیط دیتابیس، ما نیاز به SQL engine دیتابیس داریم، و برای ساخت موتور دیتایس اغلب از زبانهای برنامهنویسی سطح پایین مثل C یا C++ استفاده میشود زیرا آنها کنترل بر روی مدیریت حافظه را در اختیار کاربر قرار میدهند، که در برنامهنویسی سطح بالا وجود ندارد. در زبانهای سطح بالا مدیریت حافظه به صورت اتوماتیک توسط سیستم عامل انجام میشود. SQL engine یک توسعه cross-platform است و میتواند از پلتفرمهای مختلفی برای ساخت برخی برنامهها استفاده کند اما همه پلتفرمها میتوانند به SQL engine برای امکانات دیتابیس لینک شوند.
- SQL Server
- 4k بازدید
- 0 تشکر