RediSearch, Redis-এর জন্য একটি রিয়েল-টাইম সেকেন্ডারি ইন্ডেক্স ফুল-টেক্সট সার্চ ক্যাপাবিলিটিসহ, সবচেয়ে প্রফুল ও ফিচার-রিচ Redis মডিউলগুলোর একটি। এটি প্রতিদিন আরও জনপ্রিয় হচ্ছে—গত কয়েক মাসে RediSearch Docker pulls ৫০০% বাড়েছে! সেই জনপ্রিয়তার উত্থান কাস্টমারদের রিয়েল-টাইম ইনভেন্টরি ম্যানেজমেন্ট থেকে ইফিমেরাল সার্চ পর্যন্ত বহুবিধ আকর্ষণীয় ইউজ কেস আনে দিয়েছে।
সেই মোমেন্টাম বাড়াতে, আমরা এখন RediSearch 2.0-এর পাবলিক প্রিভিউ bekend করছি, যেটি ডেভেলপার এক্সপেরিয়েন্স উন্নত করার জন্য এবং RediSearch-এর সবচেয়ে স্কেলেবল ভার্সন হওয়ার জন্য ডিজাইন করা। RediSearch 2.0 Redis-এর Active-Active জিও-ডিস্ট্রিবিউশন টেকনোলজি সাপোর্ট করে, ডাউনটাইম ছাড়া স্কেলেবল, এবং Redis on Flash সাপোর্ট অন্তর্ভুক্ত করে (বর্তমানে প্রাইভেট প্রিভিউতে)। এই গোলগুলো পারফরমেন্সে নেগেটিভ প্রভাব ডाले বিনা পূরণ করতে, আমরা RediSearch 2.0-এর জন্য একটি সম্পূর্ণ নতুন আর্কিটেকচার তৈরি করেছি—এবং এটি কাজ করল: RediSearch 2.0, RediSearch 1.6-র চেয়ে 2.4x দ্রুত।
RediSearch 2.0-এর নতুন আর্কিটেকচারের ভিতরে
আপনার Redis ডাটাবেসে একটি রিচ কোয়েরি-এন্ড-অ্যাগ্রিগেশন ইঞ্জিন থাকা আপনাকে ক্যাশিং বাইরে বহু নতুন ইউজ কেসের দরজা খুলে দেয়। RediSearch আপনাকে Redis কে আপনার প্রাইমারি ডাটাবেস হিসেবে ব্যবহার করতে দেয় এমন পরিস্থিতিতে যেখানে আপনাকে জটিল কোয়েরি ব্যবহার করে ডেটা অ্যাক্সেস করতে হয়। আরও ভালো, এটি Redis-এর বিশ্ব-শ্রেণীর গতি, নির্ভরযোগ্যতা, এবং স্কেলেবিলিটি সংরক্ষণ করে, এবং আপনাকে ডেটা আপডেট ও ইন্ডেক্স করতে কোডে জটিলতা যোগ করার প্রয়োজন নেই।
RediSearch 2.0-এ আমরা ইন্ডেক্স কীভাবে ডেটার সাথে সিঙ্কে রাখা হয় সেটি রি-আর্কিটেকচার করেছি। ডেটা ইন্ডেক্সের মাধ্যমে লিখতে হয়তো (FT.ADD কমান্ড ব্যবহার করে), RediSearch এখন হ্যাশে লেখা ডেটাকে ফলো করে এবং সিঙ্ক্রোনাসলি ইন্ডেক্স করে। এই রি-আর্কিটেকচারের সাথে API-এ বেশ কয়েকটি পরিবর্তন আসে, যা আমরা একটি পূর্ববর্তী পোস্টে আলোচনা করেছি যখন RediSearch 2.0 তার প্রথম মাইলফলক পেয়েছিল।

এই নতুন আর্কিটেকচার দুটি মূল সুবিধা আনে। প্রথম, আপনার বিদ্যমান ডেটার ওপর একটি সেকেন্ডারি ইন্ডেক্স তৈরি করা এখন আগের চেয়ে অনেক সহজ। আপনি শুধু আপনার বিদ্যমান Redis ডাটাবেসে RediSearch যোগ করুন, একটি ইন্ডেক্স তৈরি করুন, এবং কোয়েরি শুরু করুন, আপনার ডেটা মাইগ্রেট করতে হবে না বা ইন্ডেক্সে ডেটা যোগ করার জন্য নতুন কমান্ড ব্যবহার করতে হবে না। এটি নতুন RediSearch ইউজারদের লার্নিং কভার ড্রাস্টিক্যালি কমিয়ে দেয় এবং আপনাকে আপনার বিদ্যমান Redis ডাটাবেসে ইন্ডেক্স তৈরি করতে দেয়—বिना রিস্টার্ট কिये।
নতুন উপায়ে ডেটা ইন্ডেক্স করার বাইরে, আমরা ইন্ডেক্স কীস্পেসের বাইরে নিয়ে গেলাম। এটি Redis Enterprise-এর Active-Active টেকনোলজি সক্ষম করে, যা конфликт-ফ্রি রেপ্লিকেটেড ডেটা টাইপস (CRDTs) এর ওপর ভিত্তি করে। দুটি ইনভার্টেড ইন্ডেক্স konflিক্ট-ফ্রি মার্জ করা কঠিন, কিন্তু Redis-এ ইতিমধ্যে Hashes-এর একটি প্রুভেন CRDTs ইমপ্লিমেন্টেশন আছে। তাই এই নতুন আর্কিটেকচারের দ্বিতীয় বড় সুবিধা হলো RediSearch 2.0 কে আরও বেশি স্কেলেবল করা। যেহেতু RediSearch এখন Hashes ফলো করে এবং ইন্ডেক্স কীস্পেসের বাইরে চলে গেল, আপনি এখন RediSearch একটি Active-Active জিও-ডিস্ট্রিবিউটেড ডাটাবেসে রান করতে পারেন।

একটি ডকুমেন্ট সকল ডাটাবেসে রেপ্লিকেট হবে রেপ্লিকেশন সেটে স্ট্রং ইভেন্টুয়াল কনসিস্টেন্ট манনারে। প্রতিটি রেপ্লিকাতে, RediSearch সিম্পলি Hashes-এ সব আপডেট ফলো করবে, অর্থাৎ সকল ইন্ডেক্সও স্ট্রং ইভেন্টুয়াল কনসিস্টেন্ট হবে।
ওপেন সোর্স Redis-এ OSS ক্লাস্টার সাপোর্ট
আমরা স্কেলেবিলিটি ক্যাপাবিলিটি শুধু Redis Enterprise ইউজারদের জন্য সীমাবদ্ধ রাখতে চাইনি, তাই আমরা ওপেন সোর্স Redis ক্লাস্টার API-তে একাধিক শার্ড ওপর একটি সিঙ্গেল ইন্ডেক্স স্কেল করার সাপোর্ট যোগ করলাম। পূর্বে, একটি সিঙ্গেল RediSearch ইন্ডেক্স, এবং এর ডকুমেন্টগুলো, একটি সিঙ্গেল শার্ডে থাকতে হতো। এর মানে OSS Redis-এ ডেটাসেট সাইজ এবং থ্রুপুট একটি সিঙ্গেল Redis প্রসেস যা হ্যান্ডেল করতে পারে সেটি দ্বারা বাউন্ডেড ছিল। Redis Enterprise ডকুমেন্ট ডিস্ট্রিবিউট করার ক্ষমতা অফার করতো একটি ক্লাস্টারড ডাটাবেসে এবং কোয়েরি টাইমে ফলাফল অ্যাগ্রিগেট করতো। এই ফ্যান-আউট এবং অ্যাগ্রিগেশন একটি কম্পোনেন্ট দ্বারা হ্যান্ডেল করা হতো যাকে "কordinator" বলা হয় যা এখন পাবলিকলি Redis Source Available License-ওন্ডার উপলব্ধ যাতে এটি ওপেন সোর্স Redis ক্লাস্টারসহ এবং Redis Enterprise-সহ কাজ করে। ফলাফলটি RediSearch-এর সবচেয়ে স্কেলেবল ভার্সন।
নাম্বারগুলো দেখাও!
RediSearch 2.0-এর ইনজেশন পারফরমেন্স অसेস করতে, আমরা আমাদের ফুল-টেক্সট সার্চ বেঞ্চমার্ক (FTSB) সুইটকে পাবলিকলি উপলব্ধ NYC Taxi ডেটাসেট দিয়ে এক্সটেন্ড করলাম। এই ডেটাসেট ইন্ডাস্ট্রি জুড়ে ব্যবহৃত হয় এর রিচ ডেটা টাইপ সেট (টেক্সট, ট্যাগ, জিওগ্রাফিক, এবং নমেরিক), এবং বড় সংখ্যক ডকুমেন্টের কারণে।
এই বেঞ্চমার্ক ফোকাস করে রাইট পারফরমেন্সে, নিউ یর্ক সিটিতে যেলো ক্যাবের রাইডের ট্রিপ-রেকর্ড ডেটা ব্যবহার করে। স্পেসিফিক্যালি এই বেঞ্চমার্কের জন্য আমরা জানুয়ারি ২০১৫ ডেটাসেট ব্যবহার করলাম, যেটি ১২ মিলियन+ ডকুমেন্ট লোড করে গড়ে ৫০০ বাইট পার ডকুমেন্ট। ফুল বেঞ্চমার্ক স্পেসিফিকেশন জন্য GitHub-এ FTSB রেফার করুন।
সকল বেঞ্চমার্ক ভেরিয়েন্ট Amazon Web Services ইনস্ট্যান্সে রান করা হয়েছে, আমাদের বেঞ্চমার্ক-টেস্টিং ইন্ফ্রাস্ট্রাকচার 통해서 প্রোভিশন করা। টেস্টগুলো এক্সিকিউট হয়েছে একটি ৩-নোড ক্লাস্টারে ১৫ শার্ডসহ, RediSearch Enterprise ভার্সন ১.৬ এবং ২.০। বেঞ্চমার্কিং ক্লায়েন্ট এবং RediSearch সক্রিয় ৩ নোড বিশিষ্ট ডাটাবেস দুটোই আলাদা c5.9xlarge ইনস্ট্যান্সে রান করছিল।
যেহেতু RediSearch 2.0 Hashes-এ পরিবর্তন ফলো করে এবং অটোমেটিক্যালি সেগুলো ইন্ডেক্স করার ক্ষমতা দিয়ে আসে, আমরা FT.ADD এবং HSET কমান্ডের জন্য ভেরিয়েন্ট যোগ করলাম। আপগ্রেড সহজ করতে, আমরা এখন deprecated FT.ADD কমান্ডকে RediSearch 2.0-এ HSET কমান্ডগুলোর সাথে রিম্যাপ করেছি। নিচের দুটি চার্ট RediSearch ১.৬ এবং ২.০ উভয়ের জন্য সামগ্রিক ইনজেশন রেট এবং ল্যাটেন্সি প্রদর্শন করে, সাব-মিলিসেকেন্ড ল্যাটেন্সি রিটেইন করে।


RediSearch সদা দ্রুত ছিল, কিন্তু এই আর্কিটেকচার চেঞ্জের সাথে আমরা ৯৬K ডকুমেন্ট পার সেকেন্ড ইন্ডেক্স করার থেকে ১৩২K docs/sec-এ চলে এলাম আওভারঅল p50 ইনজেশন ল্যাটেন্সি ০.৪ms-এ, ড্রাস্টিক্যালি রাইট স্কেলিং উন্নত করল।
শুধু থ্রুপুট বুকস্টই নয়, প্রতিটি ইনজেশনও এখন দ্রুত হয়। আর্কিটেকচার চেঞ্জের কারণে সামগ্রিক ইনজেশন উন্নতির পাশাপাশি, আপনি এখন OSS Redis Cluster API ক্যাপাবিলিটিওর ওপর নির্ভর করতে পারেন আপনার সার্চ ডাটাবেসের ইনজেশন লিনিয়ারলি স্কেল করার জন্য।
থ্রুপুট এবং ল্যাটেন্সি উন্নতিকে একসাথে করলে, RediSearch 2.0 RediSearch 1.6-র চেয়ে 2.4X স্পিডআপ দিয়ে।
RediSearch 2.0-এর জন্য কী আসছে
সংক্ষেপে, RediSearch 2.0 সকল Redis ইউজারের জন্য সবচেয়ে দ্রুত এবং সবচেয়ে স্কেলেবল ভার্সন যা আমরা কখনো রিলিজ করেছি। অতিরিক্ত, RediSearch 2.0-এর নতুন আর্কিটেকচার ডেভেলপার এক্সপেরিয়েন্স উন্নত করে বিদ্যমান ডেটার জন্য Redis-এ ইন্ডেক্স তৈরি করতে সিমলেসলি এবং আপনার Redis ডেটা অন্য একটি RediSearch-সক্রিয় ডাটাবেসে মাইগ্রেট করার প্রয়োজন দূর করে। এই নতুন আর্কিটেকচার RediSearch-কে অন্যান্য ডেটা স্ট্রাকচার যেমন Streams বা Strings ফলো ও অটো-ইন্ডেক্স করতে দেবে। আগামী রিলিজগুলোতে, এটি আপনাকে নেস্টেড ডেটা স্ট্রাকচার যেমন RedisJSON-এ ডেটা স্ট্রাকচারের সাথে কাজ করতে দেবে।
আমরা ডেভেলপার এক্সপেরিয়েন্স আরও উন্নত করার জন্য আরো ফিচার যোগ করতে পরিকল্পনা করছি। আগামীতে, একটি নতুন কমান্ড খুঁজুন যা আপনাকে আপনার সার্চ কোয়েরি প্রোফাইল করতে দেবে কোয়েরি এক্সিকিউশনের সময় পারফরমেন্স বটলনেক কোথায় হচ্ছে সেটি বুঝতে ভালোভাবে।
শুরু করতে প্রস্তুত? Tug Grall-এর ব্লগ চেক আউট করুন … Getting Started with RediSearch 2.0! তারপর এই টিউটোরিয়ালের ধাপগুলো ফলো করুন GitHub-এ বা Redis Enterprise Cloud Essentials-এ একটি ফ্রি ডাটাবেস তৈরি করুন। (নোট: RediSearch 2.0-এর পাবলিক প্রিভিউ দুটি Redis Enterprise Cloud Essentials রিজনে উপলব্ধ: মুম্বাই এবং অরেগন।)