বেশিরভাগ ডাটাবেস প্রতিবার স্ক্র্যাচ থেকে কোয়েরিগুলি পুনরায় কার্যকর করে, যা পড়ার লেটেন্সিকে কোয়েরির জটিলতা এবং ডেটার আকারের সমানুপাতিক করে তোলে। Readyset একটি ভিন্ন পদ্ধতি গ্রহণ করে: এটি প্রতিটি কোয়েরিকে একটি ডেটাফ্লো গ্রাফে কম্পাইল করে—অপারেটরগুলির একটি নেটওয়ার্ক (জয়েন, ফিল্টার, অ্যাগ্রিগেশন, প্রজেকশন) যা ডেটা পরিবর্তনের সাথে সাথে কোয়েরির ফলাফল ক্রমাগত বজায় রাখে। যখন আপস্ট্রিমে একটি সারি সন্নিবেশিত, আপডেট বা মুছে ফেলা হয়, পরিবর্তনটি গ্রাফের মাধ্যমে প্রচারিত হয় এবং ক্যাশে করা ফলাফলটি ক্রমবর্ধমানভাবে আপডেট হয়। পড়া সম্পূর্ণ কোয়েরি এক্সিকিউশন নয়, বরং পূর্ব-গণিত মেটেরিয়ালাইজড ভিউতে অনুসন্ধানে পরিণত হয়।
এই আর্কিটেকচার SQL-এর উপর কাঠামোগত সীমাবদ্ধতা আরোপ করে। বাইনারি জয়েনের জন্য সমতা প্রেডিকেট প্রয়োজন; রেঞ্জ প্রেডিকেট বা এক্সপ্রেশন-ভিত্তিক জয়েন কী সমর্থিত নয়। সম্পর্কযুক্ত সাবকোয়েরিগুলিকে সমতুল্য জয়েনে পুনর্লিখন করতে হবে, কারণ ডেটাফ্লোতে প্রতি বাহ্যিক সারি এক্সিকিউশন নেই। ডেরাইভড টেবিল সমর্থিত কিন্তু সম্পূর্ণরূপে মেটেরিয়ালাইজড ইন্টারমিডিয়েট নোডে কম্পাইল হয়; পুনর্লিখন পাইপলাইন সেগুলিকে নিরাপদ স্থানে আক্রমণাত্মকভাবে ইনলাইন করে।
সমর্থিত জয়েন প্রকারের মধ্যে INNER, LEFT OUTER এবং CROSS অন্তর্ভুক্ত; RIGHT এবং FULL OUTER অনুপস্থিত মিল ট্র্যাক করার অসুবিধার কারণে সমর্থিত নয়। অ্যাগ্রিগেশনের জন্য স্পষ্ট GROUP BY কলাম রেফারেন্স এবং কমপক্ষে একটি অ্যাগ্রিগেট-ডেরাইভড প্রজেকশন প্রয়োজন।
ট্রেডঅফ হল যে কোয়েরিগুলিকে এমন একটি আকারে প্রকাশ করতে হবে যা ডেটাফ্লো ইঞ্জিন কম্পাইল করতে পারে—স্ট্যান্ডার্ড SQL-এর চেয়ে বেশি সীমাবদ্ধ—কিন্তু ফলাফল হল ক্রমবর্ধমান রক্ষণাবেক্ষণ এবং দ্রুত পড়া।
উৎস: Hacker News · সারাংশ: HeadlinesBriefing