কম্পিউটার টিউটোরিয়াল

RediSearch হার্নেস করা: পাওয়ারফুল রেডিস কোয়ারীর জন্য অ্যাডভান্সড ইনডেক্সিং

রেডিসের একটি বহুমুখী ডেটা স্ট্রাকচার সেট আছে সিম্পল Strings থেকে শুরু করে পাওয়ারফুল অ্যাবস্ট্রাকশন যেমন রেডিস স্ট্রিমস পর্যন্ত। নেটিভ ডেটা টাইপগুলো আপনাকে অনেক দূর নিয়ে যেতে পারে, কিন্তু কিছু ইউজ কেস আছে যেগুলোর জন্য একটি ওয়ার্কঅরাউন্ড দরকার হতে পারে। একটি উদাহরণ হলো রেডিসে সেকেন্ডারি ইনডেক্স ব্যবহার করার প্রয়োজন কী-ভিত্তিক সার্চ/লুকআপের বাইরে যেতে রিচার কোয়ারি ক্যাপাবিলিটির জন্য। আপনি সর্টেড সেটস, লিস্টস, ইত্যাদি ব্যবহার করে কাজটা করতে পারেন, কিন্তু আপনাকে কিছু ট্রেড-অফ ফ্যাক্টর ইন করতে হবে।

এখানে আসে RediSearch! একটি রেডিস মডিউল হিসেবে উপলব্ধ, RediSearch নমনীয় সার্চ ক্যাপাবিলিটি প্রদান করে, একটি ফার্স্ট-ক্লাস সেকেন্ডারি ইনডেক্সিং ইঞ্জিনের فضل। এটি পাওয়ারফুল ফিচার অফার করে যেমন ফুল-টেক্সট সার্চ, অটো কমপ্লিশন, জিওগ্রাফিক্যাল ইনডেক্সিং, এবং আরও অনেক কিছু।

RediSearch-এর শক্তি প্রদর্শন করার জন্য, এই ব্লগ পোস্ট একটি ব্যবহারিক উদাহরণ অফার করে কীভাবে Azure Cache for Redis-এ RediSearch ব্যবহার করতে হয় একটি Go সার্ভিসের সাহায্যে যা RediSearch Go ক্লায়েন্ট ব্যবহার করে বিল্ট। এটি আপনাকে অ্যাপ্লিকেশনের একটি সেট দেওয়ার জন্য ডিজাইন করা হয়েছে যা আপনাকে রিয়েল-টাইমে টুইট ইনজেস্ট করতে এবং সেগুলো RediSearch ব্যবহার করে নমনীয়ভাবে কোয়ারী করতে দেয়।

নির্দিষ্টভাবে, আপনি শিখবেন কীভাবে:

  • RediSearch ইনডেক্সের সাথে কাজ করতে
  • বিভিন্ন RediSearch ডেটা টাইপ ব্যবহার করতে, যেমন TEXT, NUMERIC, TAG, এবং অন্যান্য
  • RediSearch ক্যাপাবিলিটি দেখানোর একটি অ্যাপ্লিকেশন কীভাবে বানাতে হবে
  • সার্ভিস কম্পোনেন্টগুলো কীভাবে Azure-এ ডিপ্লয় করতে হবে শুধু কয়েক কমান্ড দিয়ে
  • টুইট ডেটা RediSearch কোয়ারী করে বিশ্লেষণ করতে

অ্যাপ্লিকেশন ওভারভিউ

উল্লেখ করা হলে, উদাহরণ সার্ভিসটি আপনাকে রিয়েল-টাইমে টুইট কনসাম করতে এবং সেগুলো RediSearch vía কোয়ারী করার জন্য উপলব্ধ করে।

RediSearch হার্নেস করা: পাওয়ারফুল রেডিস কোয়ারীর জন্য অ্যাডভান্সড ইনডেক্সিং

এর দুটি কম্পোনেন্ট:

  1. Consumer/Indexer: Twitter Streaming API থেকে পড়ে, ইনডেক্স তৈরি করে, এবং ক্রমাগত টুইট ডেটা (রেডিস HASH হিসেবে) যোগ করে সেগুলো আসার সাথে সাথে।
  2. Search service: একটি REST API যা আপনাকে RediSearch কোয়ারি সিনট্যাক্স ব্যবহার করে টুইট সার্চ করতে দেয়।

এই মুহূর্তে, আমি সল্যুশনটি আপ এবং রানিং করতে কীভাবে ডাইভ করব সেটি দেখাব যাতে আপনি এটি একশনে দেখতে পারেন। যাইহোক, আপনি যদি আগ্রহী হন ইনডিভিডুয়াল কম্পোনেন্ট কীভাবে কাজ করে সেটি বুঝতে, তাহলে Code walk through সেকশন এবং এই ব্লগের গিটহাব রিপো রেফার করুন: https://github.com/abhirockzz/redisearch-tweet-analysis.

পূর্বশর্ত

  1. শুরুতে, আপনার একটি Microsoft Azure অ্যাকাউন্ট দরকার: এখান থেকে ফ্রিতে পান!
  2. উপরোক্ত সার্ভিস কম্পোনেন্টগুলো Azure Container Instances-এ ডিপ্লয় হবে নেটিভ Docker CLI কমান্ড ব্যবহার করে। এই ক্ষমতা Docker এবং Azure-এর ইন্টিগ্রেশন দ্বারা সক্ষম।
  3. আপনার Docker Desktop ভার্সন ২.৩.০.৫ বা তারপরের দরকার, Windows, macOS-এর জন্য, বা Linux-এ Docker ACI Integration CLI ইনস্টল করুন। Twitter Streaming API ব্যবহার করতে, আপনার একটি Twitter ডেভেলপার অ্যাকাউন্টও দরকার। আপনার যদি ইতিমধ্যে না থাকে, এই নির্দেশাবলী অনুসরণ করুন। RediSearch অ্যাকশনে!

এই কুইক-স্টার্ট টিউটোরিয়াল ব্যবহার করে Azure-এ একটি রেডিস এন্টারপ্রাইজ টিয়ার ক্যাশ সেট আপ করুন। একবার সেট আপ ফিনিশ হলে, নিশ্চিত করুন যে আপনার রেডিস হোস্টনেম এবং অ্যাক্সেস কী হ্যান্ডি আছে:

RediSearch হার্নেস করা: পাওয়ারফুল রেডিস কোয়ারীর জন্য অ্যাডভান্সড ইনডেক্সিং

আমাদের সার্ভিসের উভয় কম্পোনেন্ট ডকার কন্টেইনারের হিসেবে উপলব্ধ: Tweet indexing service এবং Search API service. (আপনি যদি আপনার নিজের ডকার ইমেজ বানাতে চান, অনুগ্রহ করে গিটহাব রিপোতে উপলব্ধ প্রত্যেকের Dockerfile ব্যবহার করুন।)

আপনি এখন দেখবেন Azure Container Instances-এ এগুলো ডিপ্লয় করা কতটা সুবিধাজনক, যা আপনাকে ডকার কন্টেইনার অন-ডিম্যান্ডে একটি ম্যানেজড, সার্ভারলেস Azure এনভায়রনমেন্টে চালাতে দেয়।

Azure-এ ডিপ্লয় করুন

একটি docker-compose.yml ফাইল ইনডিভিডুয়াল কম্পোনেন্টগুলো ডিফাইন করে (tweets-search এবং tweets-indexer)। আপনার যা করতে হবে সেটি হলো আপনার Azure Redis ইনস্ট্যান্সের মান এবং আপনার Twitter ডেভেলপার অ্যাকাউন্ট শংসাপত্র দিয়ে আপডেট করা। এখানে ফাইলটি সম্পূর্ণরূপে:

একটি Azure context তৈরি করুন:

গিটহাব রিপো ক্লোন করুন:

কন্টেইনার গ্রুপের অংশ হিসেবে উভয় সার্ভিস কম্পোনেন্ট ডিপ্লয় করুন:

(নোট করুন যে Docker Compose কমান্ডগুলি বর্তমানে একটি ACI context-এ উপলব্ধ যা docker compose- দিয়ে শুরু হয়। এটা docker-compose হাইফেনসহ সেটির সাথে NOT একই। )

আপনি আউটপুট এরকম কিছু দেখবেন:

সার্ভিসগুলো стар্ট হওয়ার জন্য অপেক্ষা করুন, আপনি Azure পোর্টালও চেক করতে পারেন। একবার উভয় সার্ভিস আপ এবং রানিং হলে, আপনি তাদের রেসপেক্টিভ লগ চেক করতে পারেন:

সব ঠিক থাকলে, tweet-consumer সার্ভিসটি শুরু হয়ে গেছে বলে বুঝবেন। এটি টুইটের একটি স্ট্রিম পড়েगा এবং সেগুলো রেডিসে পersist করবে।

সত্যের মুহূর্ত!

টুইট ডেটা কোয়ারী করার সময়। এটি করতে, আপনি Azure Container Instances-এ REST API অ্যাক্সেস করতে পারেন একটি IP অ্যাড্রেস এবং একটি ফুলি কোয়ালিফাইড ডোমেইন নেম (FQDN) দিয়ে (Container Access-এ আরও পড়ুন)। IP খুঁজে বের করতে, docker ps চালান এবং আউটপুটের PORTS সেকশন চেক করুন (নিচে দেখানো অনুযায়ী):

আপনি এখন সব ধরনের কোয়ারী চালাতে পারেন! ডাইভ করার আগে, এখানে ইন্ডেক্সড অ্যাট্রিবিউটের একটি কুইক আইডিয়া যা আপনি আপনার সার্চ কোয়ারীতে ব্যবহার করতে পারেন:

(নোট, আমি নিচের উদাহরণগুলিতে curl ব্যবহার করেছি, কিন্তু "REST Client" for VS Code অত্যন্ত রিকমেন্ড করব)

সার্চ সার্ভিস API-এর জন্য বেস URL সেট করুন:

সিম্পল শুরু করুন এবং সব ডকুমেন্ট কোয়ারী করুন ( * ব্যবহার করে):

আপনি আউটপুট এরকম কিছু দেখবেন:

Page-Size এবং Search-Hits হেডারগুলো নোট করুন: এগুলো অ্যাপ্লিকেশন থেকে পাস করা কাস্টম হেডার, মূলত পেজিনেশন এবং লিমিট Демো করার জন্য। আমাদের "সব ডকুমেন্ট দাও" কোয়ারীর প্রতিক্রিয়ায়, আমরা রেডিসে ১২টি রেজাল্ট পেলাম, কিন্তু JSON বডি ১০টি এন্ট্রি রিটার্ন করল। এটি RediSearch Go API-এর ডিফল্ট আচরণের কারণে, যা আপনি বিভিন্ন কোয়ারি প্যারামিটার ব্যবহার করে পরিবর্তন করতে পারেন, যেমন:

অথবা, উদাহরণস্বরূপ, আইফোন থেকে পাঠানো টুইট সার্চ করুন:

আপনি সবসময় কোয়ারি রেজাল্টে সব অ্যাট্রিবিউট চাইবেন না। উদাহরণস্বরূপ, এটিই কীভাবে শুধু ইউজার (Twitter স্ক্রিন নেম) এবং টুইট টেক্সট ফেরত পাবেন:

ইউজার নামের ওপর একটি কোয়ারী কেমন (যেমন jo- দিয়ে শুরু):

আপনি কোয়ারীতে অ্যাট্রিবিউটের একটি কম্বিনেশনও ব্যবহার করতে পারেন:

নির্দিষ্ট হ্যাশট্যাগ সহ টুইট খুঁজে বের করার প্রস্তাব কেমন? একাধিক হ্যাশট্যাগ ব্যবহার করা সম্ভব ( | দ্বারা বিভক্ত)?

বليزية হ্যাশট্যাগ সহ কতগুলো টুইট সম্প্রতি তৈরি হয়েছে জানতে চান? একটি রেঞ্জ কোয়ারী ব্যবহার করুন:

আপনি যদি টুইটে কিছু কোঅর্ডিনেট ইনফো পেতে সৌভাগ্যশালী হন, তবে আপনি সেগুলো এক্সট্র্যাক্ট করার চেষ্টা করতে পারেন এবং তারপর coordinates অ্যাট্রিবিউটে কোয়ারী করতে পারেন:

এই মাত্র কিছু উদাহরণ। বিনামূল্যে আরও পরীক্ষা করুন এবং অন্যান্য কোয়ারী ট্রাই করুন। RediSearch ডকুমেন্টেশনের এই সেকশনটি কাজে আসতে পারে!

গুরুত্বপূর্ণ: শেষ হলে, সার্ভিসগুলো এবং Azure Container Instances-এ সংশ্লিষ্ট কন্টেইনারগুলো বন্ধ করতে ভুলবেন না:

Azure Portal ব্যবহার করে আপনি যে Azure Redis ইনস্ট্যান্স তৈরি کرده थे সেটি ডিলিট করুন।

কোড ওয়াকথ্রু

এই সেকশনটি ইনডিভিডুয়াল কম্পোনেন্টের কোডের একটি হাই-লেভেল ওভারভিউ প্রদান করে। এটি গিটহাব রিপোতে সোর্স কোড নেভিগেট করা সহজ করতে পারে।

Tweets consumer/indexer:

go-twitter লাইব্রেরি Twitter-এর সাথে ইন্টারঅ্যাক্ট করতে ব্যবহৃত হয়েছে।

এটি Twitter Streaming API-তে অথেন্টিকেট করে:

এবং একটি আলাদা goroutine-এ টুইটের একটি স্ট্রিম শোনা দাঁড়ায়:

go index.AddData(tweetToMap(tweet))— নোট করুন এটি যেখানে ইনডেক্সিং কম্পোনেন্ট ইনভোক করা হয়। এটি Azure Cache for Redis-এ সংযোগ করে:

তারপর এটি ইনডেক্সটি (এবং বিদ্যমান ডকুমেন্টগুলিও) ড্রপ করে পুনরায় তৈরি করার আগে:

ইনডেক্স এবং এর সাথে সম্পর্কিত ডকুমেন্টগুলো ড্রপ করা হয়েছে যাতে আপনি একটি ক্লিন স্টেট দিয়ে শুরু করতে পারেন, যা এক্সপেরিমেন্ট/ডেমো সহজ করে তোলে। আপনি এই অংশটি কমেন্ট আউট করতে পারেন যদি ইচ্ছা করেন।

প্রতিটি টুইটের ইনফরমেশন একটি HASH-এ সংরক্ষিত থাকে (নামকরণ tweet:<tweet ID>) HSET অপারেশন ব্যবহার করে:

Tweets search একটি REST API এক্সপোজ করে RediSearch কোয়ারী করার জন্য। সকল অপশন (কোয়ারী সহ) কোয়ারি প্যারামিটার হিসেবে পাস করা হয়। উদাহরণস্বরূপ, https://localhost:8080/search?q=@source:iphone। এটি প্রয়োজনীয় কোয়ারি প্যারামিটার এক্সট্র্যাক্ট করে:

q প্যারামিটার বাধ্যতামূলক। যাইহোক, আপনি সার্চের জন্য নিচের প্যারামিটারগুলিও ব্যবহার করতে পারেন:

  • fields : আপনি কী অ্যাট্রিবিউট রেজাল্টে ফেরত পেতে চান সেটি স্পেসিফাই করতে, এবং
  • offset_limit : আপনি যদি কী অফসেট থেকে সার্চ শুরু করতে চান এবং রেজাল্টে কতগুলো ডকুমেন্ট ইনক্লুড করতে চান সেটি স্পেসিফাই করতে (ডিফল্ট szerint, অফসেট ০ এবং লিমিট ১০ – RediSearch Go ক্লায়েন্ট অনুযায়ী)।

উদাহরণস্বরূপ:

শেষে, রেজাল্টগুলো ইটারেট করা হয় এবং JSON হিসেবে পাস করা হয় (ডকুমেন্টের অ্যারে):

এই সেকশনের জন্য এতটুকু!

Azure Cache for Redis-এ রেডিস এন্টারপ্রাইজ টিয়ারস

রেডিস এন্টারপ্রাইজ Azure-এ একটি নেটিভ সার্ভিস হিসেবে উপলব্ধ দুটি নতুন টিয়ার হিসেবে Azure Cache for Redis-এর জন্য যা Microsoft এবং রেডিস দ্বারা অপারেট এবং সাপোর্টেড। এই সার্ভিস ডেভেলপারদের রেডিস এন্টারপ্রাইজ ফিচারগুলির একটি সমৃদ্ধ সেট অ্যাক্সেস দেয়, RediSearch-এর মতো মডিউলসহ। আরও তথ্যের জন্য, এই রিসোর্সগুলো দেখুন:

  • Azure Cache for Redis, Enterprise Tiers Are Now Generally Available
  • Deepening Our Partnership with Microsoft to Grow Redis Enterprise in the Cloud
  • Microsoft and Redis collaborate to give developers new Azure Cache for Redis capabilities
  • Redis Enterprise features on Azure Cache for Redis

উপসংহার

এই এন্ড-টু-এন্ড অ্যাপ্লিকেশন প্রদর্শন করে কীভাবে ইনডেক্সের সাথে কাজ করতে হয়, রিয়েল-টাইম ডেটা ইনজেস্ট করতে হয় ডকুমেন্ট তৈরি করতে (টুইট ইনফরমেশন) যা RediSearch ইঞ্জিন দ্বারা ইনডেক্স করা হয় এবং তারপর 다재다능한 কোয়ারি সিনট্যাক্স ব্যবহার করে সেগুলোর ওপর ইনসাইট এক্সট্র্যাক্ট করতে হয়।

রেডিস ডকুমেন্টেশনে কোনো টপিক সার্চ করার সময় পর্দার পেছনে কী ঘটে তা বুঝতে চান? এই ব্লগ পোস্ট চেক আউট করুন শিখতে রেডিস সাইট কীভাবে RediSearch দিয়ে ফুল-টেক্সট সার্চ ইনকর্পোরেট করেছে! বা, হয়তো আপনি একটি সার্ভারলেস অ্যাপ্লিকেশনে RediSearch কীভাবে ব্যবহার করবেন সেটি এক্সপ্লোর করতে আগ্রহী?

আপনি যদি এখনো শুরুর পর্যায়ে हों, RediSearch Quick Start পেজ ভিজিট করুন।

আপনি যদি Azure Cache for Redis-এ এন্টারপ্রাইজ ক্যাপাবিলিটি সম্পর্কে আরও জানতে চান, তবে নিচের রিসোর্সগুলো চেক আউট করতে পারেন:

  • Multi Zone redundancy এবং কীভাবে সেট আপ করবেন
  • Private Link support নেটওয়ার্ক আইসোলেশনের জন্য
  • সঠিক ক্যাশিং টিয়ার বেছে নেওয়া
  • Enterprise tiers-এর জন্য হাই অভেইলেবিলিটি
  1. ফটোশপে (Photoshop) ব্যাচ-প্রসেস ফাইল করার পদ্ধতি

  2. RediSearch 2.0: Redis-এর জন্য নেক্সট-জেন রিয়েল-টাইম সার্চ

  3. RediSearch 2.0 মাইলস্টোন ঘোষণা: স্বয়ংক্রিয় ইন্ডেক্সিং রিয়েল-টাইম সার্চকে উন্নত করে

  4. উইন্ডোজ ১০ অ্যাকশন সেন্টার সক্রিয় বা নিষ্ক্রিয় করুন - সম্পূর্ণ গাইড