ماجرای انتخاب ترتیب جوین تو پایگاه داده، این بار با کوانتوم!

بذار اول یه چیز رو بگم: تو دنیای پایگاه داده‌ها (Database)، یکی از مهم‌ترین و همیشگی‌ترین چالش‌ها اینه که وقتی چندتا جدول رو می‌خوای بهم بچسبونی (که بهش میگن Join)، این بهم چسبوندن رو به چه ترتیبی انجام بدی که سریع‌ترین و بهینه‌ترین نتیجه رو بگیری. به این کار می‌گن “بهینه‌سازی ترتیب جوین” یا همون Join Order Optimization.

حالا، جدیداً کلی محقق دارن سعی می‌کنن این معما رو با علم جدید کوانتوم (Quantum Computing یعنی کامپیوترهایی که بر اساس قواعد فیزیک کوانتومی کار می‌کنن و قراره تو حل بعضی مسائل از کامپیوترهای عادی خیلی سریع‌تر باشن) حل کنن.

تو این مقاله یه تیم اومدن و سه تا الگوریتم کوانتومی جدید ساختن که مخصوص “بهینه‌سازی ترتیب جوین چپ عمیق” هستن. اگه نمی‌دونی Left-deep join یعنی چی، ساده بگم: تو این مدل، همیشه یه جدول رو نگه می‌داری و بقیه جدول‌ها رو یکی یکی بهش جوین می‌کنی. این روش یه عالمه جای بحث داره اما فعلاً بدون که رویکرد رایجی بین برنامه‌نویساست.

الان معمولاً برای حل این جور مسائل یه مدل خاصی هست به اسم Quadratic Unconstrained Binary Optimization یا QUBO. منظورش اینه که مسأله رو جوری مدل می‌کنیم که بشه با یه سری صفر و یک تو یه معادله درجه دو، بهینه‌سازی کرد. ولی چیزی که این مقاله جالبه اینه که تیم تحقیق مدل رو یه قدم پیش‌تر بردن و از مدل Higher-order Unconstrained Binary Optimization استفاده کردن. این یعنی محدود به معادلات درجه دو نموندن؛ مدلشون آزادتر و پیچیده‌تر شده و باعث شده مسأله رو دقیق‌تر مدل کنن. تا قبل از این، رو مسائل دیتابیسی همچین مدلی رو کسی استفاده نکرده بود!

حالا چرا این مهمه؟ چون این مدل جدید (Higher-order) راحت‌تر می‌تونه خودش رو با کامپیوترهای کوانتومی و “کوانتوم آنیلر”ها وفق بده. Quantum Annealer یه نوع کامپیوتر کوانتومیه که مخصوص حل مسائل بهینه‌سازی ساخته شده.

از اون طرف هم برای حل این مدل‌ها چندتا الگوریتم معروف داریم: مثل meta-heuristic‌ها (یعنی راه‌حل‌های تقریبی که برای مسائل خیلی سخت، جواب خوب تو زمان کم میدن)، مثل Quantum Approximate Optimization Algorithm یا QAOA (یه الگوریتم تقریبی معروف تو دنیای کوانتوم)، یا حتی Variational Quantum Eigensolver که اونم یه تکنیک خاص و هوشمندانه‌ست برای حل این مدل مسائل.

حالا، دو تا از الگوریتم‌هایی که این تیم ارائه داده، اولین بار تونستن تابع هزینه ترتیب جوین رو “کاملاً دقیق” مدل کنن. یعنی دیگه مثل الگوریتم‌های قدیمی که یه ذره راه رو میان، اینا واقعاً ترتیب‌ها رو همون‌جوری مدل می‌کنن که باید باشه. حتی ثابت کردن این دو تا روش جدید دقیقاً همون برنامه‌هایی رو کدگذاری می‌کنن که الگوریتم برنامه دینامیک (Dynamic Programming)، موقع تحلیل گراف کوئری، بهینه‌ترین نتیجه رو براش پیدا می‌کنه (گراف کوئری یعنی همون نموداری که نشون میده جدول‌ها چجوری باید بهم جوین بخورن). این یعنی این الگوریتم‌های کوانتومی در عمل می‌تونن همون چیزی رو بدن که کلاسیک‌ترین الگوریتم‌های دیتابیسی میدن، تا وقتی که مسئله‌مون پای ضرب داخلی یا همون cross product وسط نباشه.

الگوریتم سوم هم، تا جایی که تونسته نتیجه گرفته که جوابش حداقل به خوبی روش‌های حریصانه یا Greedy Algorithms باشه (یعنی الگوریتم‌هایی که هر بار بهترین انتخاب تو لحظه رو می‌کنن. خب گاهی جواب واقعاً بهینه نیست ولی سریع کار می‌کنه).

خلاصه، این مقاله نشون داده که بین روش‌های سنتی کلاسیک و روش‌های مدرن کوانتومی یه پل تئوریک واقعی وجود داره و میشه انتظار داشت تو آینده، بهینه‌سازی دیتابیس‌هامون واقعاً روی کوانتوم کار کنه و حتی شاید بهتر از کامپیوترهای فعلی جواب بگیریم.

نکته باحال آخر اینکه اومدن تو آزمایشگاه، الگوریتم‌هاشونو حسابی تست کردن. هم با کامپیوترهای کوانتومی، هم با ابزارهای کلاسیک! روی هزاران تا مسأله که ساختارشون کلی فرق می‌کرد (از Clique که یعنی هر گره به همه وصله، تا Cycle که به شکل حلقه‌ست، Star که یکی به بقیه وصله، Tree یا همون درخت و Chain که مثل زنجیر پشت‌سر همه). خلاصه، تونستن کارایی و عملی بودن الگوریتم‌هاشونو تو عمل هم نشون بدن.

در کل، می‌تونیم بگیم قدمی بزرگ و هیجان‌انگیز برای ترکیب دیتابیس و ماشین‌های کوانتوم برداشته شده؛ پس اگه دنبال آینده علم و تکنولوژی هستی، حتماً این ماجراها رو زیر نظر بگیر!

منبع: +