Windows কী এবং তাদের প্রকারভেদ

Apache Flink-এ Windows হলো এমন একটি মেকানিজম যা স্ট্রিম ডেটাকে নির্দিষ্ট সময় বা ইভেন্টের উপর ভিত্তি করে ভাগ করে ডেটা প্রসেস করতে সাহায্য করে। স্ট্রিম ডেটা সাধারণত অবিরাম এবং অন্তহীন হয়, তাই নির্দিষ্ট সময় বা ইভেন্টের পরিপ্রেক্ষিতে ডেটা গ্রুপ করে প্রসেস করা গুরুত্বপূর্ণ। Flink-এ উইন্ডো মেকানিজম স্ট্রিম ডেটা প্রসেসিং-এর অন্যতম গুরুত্বপূর্ণ উপাদান, এবং Flink বিভিন্ন ধরনের উইন্ডো সমর্থন করে।

Flink-এ উইন্ডোর প্রকারভেদ

Flink-এ উইন্ডোকে সাধারণত চারটি প্রধান শ্রেণিতে ভাগ করা হয়:

  1. Tumbling Windows
  2. Sliding Windows
  3. Session Windows
  4. Global Windows

প্রতিটি উইন্ডোর একটি নির্দিষ্ট আচরণ এবং প্রসেসিং মেকানিজম রয়েছে। নিচে তাদের ব্যাখ্যা করা হলো:

1. Tumbling Windows

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

  • ব্যবহার: যখন আপনার ডেটা প্রসেসিং এর জন্য একটি নির্দিষ্ট সময়ের ইন্টারভাল (যেমন ১ মিনিট, ৫ মিনিট) দরকার, তখন Tumbling Windows উপযোগী।
  • উদাহরণ: প্রতি ৫ সেকেন্ডে স্ট্রিম ডেটা গ্রুপ করতে এবং প্রসেস করতে।

উদাহরণ:

dataStream
    .keyBy(value -> value.getKey())
    .window(TumblingEventTimeWindows.of(Time.seconds(5)))
    .sum("value");
  • এই উদাহরণে, প্রতি ৫ সেকেন্ডের ইন্টারভালে ডেটা উইন্ডো তৈরি করা হয়েছে এবং সেই উইন্ডোর মধ্যে value ফিল্ডের সমষ্টি (sum) গণনা করা হয়েছে।

2. Sliding Windows

Sliding Windows হলো একটি ফিক্সড-সাইজ উইন্ডো যা একটি নির্দিষ্ট ইন্টারভালে স্লাইড করে। Sliding Windows সাধারণত ওভারল্যাপিং উইন্ডো হয়, যেখানে প্রতিটি উইন্ডো নির্দিষ্ট সময় পরপর শুরু হয় এবং আগের উইন্ডোর কিছু অংশও ধরে রাখতে পারে।

  • ব্যবহার: যখন আপনার একটি নির্দিষ্ট সময়ের ইন্টারভালে ডেটা গ্রুপ করতে হবে, তবে আপনি চাইবেন যে নতুন উইন্ডো কিছুটা আগের উইন্ডোর সাথে ওভারল্যাপ করে।
  • উদাহরণ: ১০ সেকেন্ডের উইন্ডো কিন্তু প্রতি ৫ সেকেন্ড পরপর স্লাইড হবে।

উদাহরণ:

dataStream
    .keyBy(value -> value.getKey())
    .window(SlidingEventTimeWindows.of(Time.seconds(10), Time.seconds(5)))
    .sum("value");
  • এখানে, প্রতি ১০ সেকেন্ডের উইন্ডো তৈরি করা হয়েছে, যা প্রতি ৫ সেকেন্ডে স্লাইড করে এবং উইন্ডোর মধ্যে থাকা ডেটার value ফিল্ডের সমষ্টি (sum) গণনা করা হচ্ছে।

3. Session Windows

Session Windows হলো এমন উইন্ডো যা একটানা ইভেন্টের উপর নির্ভর করে এবং কোন ফিক্সড টাইম ইন্টারভাল অনুসরণ করে না। এটি inactivity gap বা session gap এর উপর ভিত্তি করে ডেটাকে গ্রুপ করে। যখন দুটি ইভেন্টের মধ্যে একটি নির্দিষ্ট সময়ের বিরতি থাকে, তখন একটি নতুন উইন্ডো শুরু হয়।

  • ব্যবহার: যখন আপনার ডেটা প্রসেসিং করতে হবে নির্দিষ্ট সেশন বা সময়ের মধ্যে যতক্ষণ না একটি নির্দিষ্ট বিরতি ঘটে।
  • উদাহরণ: যদি একটি ইভেন্ট এবং পরবর্তী ইভেন্টের মধ্যে ৩০ সেকেন্ডের বেশি বিরতি থাকে, তাহলে নতুন সেশন শুরু হবে।

উদাহরণ:

dataStream
    .keyBy(value -> value.getKey())
    .window(EventTimeSessionWindows.withGap(Time.seconds(30)))
    .sum("value");
  • এখানে, যদি দুটি ইভেন্টের মধ্যে ৩০ সেকেন্ডের বেশি গ্যাপ থাকে, তাহলে একটি নতুন সেশন উইন্ডো শুরু হয়।

4. Global Windows

Global Windows হলো একটি বিশেষ উইন্ডো যা Flink-এর মাধ্যমে নির্দিষ্টভাবে ট্রিগার না হওয়া পর্যন্ত স্ট্রিমের সমস্ত ডেটাকে ধরে রাখে। Global Windows সাধারণত কাস্টম ট্রিগার এবং প্রসেস ফাংশনের সাথে ব্যবহৃত হয়, কারণ এটি ডিফল্টভাবে কোন সময় বা ইভেন্ট কাউন্টের উপর নির্ভর করে না।

  • ব্যবহার: যখন আপনার একটি কাস্টম ট্রিগারের উপর ভিত্তি করে উইন্ডো প্রসেস করতে হবে, তখন Global Windows উপযোগী। এটি সাধারণত কমন নয়, তবে কাস্টম প্রসেসিং-এর জন্য উপযোগী।

উদাহরণ:

dataStream
    .keyBy(value -> value.getKey())
    .window(GlobalWindows.create())
    .trigger(new CustomTrigger())
    .sum("value");
  • এখানে, GlobalWindows.create() ব্যবহার করে একটি গ্লোবাল উইন্ডো তৈরি করা হয়েছে এবং একটি কাস্টম ট্রিগার সেট করা হয়েছে, যা নির্দিষ্ট শর্ত অনুযায়ী উইন্ডো প্রসেস করবে।

উইন্ডো প্রক্রিয়াকরণে ব্যবহৃত অতিরিক্ত উপাদানসমূহ

  • Triggers: ট্রিগার নির্ধারণ করে যে উইন্ডো কখন প্রসেস হবে। Flink-এ বেশ কিছু ডিফল্ট ট্রিগার রয়েছে যেমন Event time trigger, Processing time trigger ইত্যাদি, এবং ডেভেলপাররা কাস্টম ট্রিগারও তৈরি করতে পারেন।
  • Evictors: উইন্ডো প্রসেস করার সময় ডেটা বাদ দেওয়ার জন্য ইভিক্টর ব্যবহার করা হয়।
  • Allowed Lateness: এটি ব্যবহৃত হয় উইন্ডো বন্ধ হওয়ার পরেও লেট ইভেন্ট প্রসেস করার জন্য একটি নির্দিষ্ট সময় নির্ধারণ করতে।

উপসংহার

Apache Flink-এ Windows বিভিন্ন ধরণের স্ট্রিম ডেটা প্রসেসিং এবং অ্যাগ্রিগেশন করতে সাহায্য করে। এটি বিভিন্ন ধরনের প্রসেসিং স্ট্র্যাটেজি সমর্থন করে, যেমন Tumbling Windows নির্দিষ্ট ইন্টারভালের জন্য ডেটা গ্রুপ করে, Sliding Windows ওভারল্যাপিং করে প্রসেসিং করে, Session Windows সেশন ভিত্তিক ডেটা গ্রুপ করে, এবং Global Windows কাস্টম শর্তে ডেটা প্রসেস করে। এই উইন্ডোগুলি Flink-এ স্ট্রিম ডেটা প্রসেসিংকে আরও সহজ এবং কার্যকর করে তোলে।

আরও দেখুন...

Promotion