নিবন্ধের এই সিরিজটি আমার জন্য অনেক মজার হয়েছে কারণ আমি নতুন প্রযুক্তি সম্পর্কে শিখেছি এবং অন্বেষণ করেছি। আমি প্রথম এটি আবিষ্কার করার পর থেকে কী ধরা পড়ছে তা দেখতেও মজাদার। Apache Paimon- এ আমার শেষ নিবন্ধটি অবিশ্বাস্যভাবে জনপ্রিয় ছিল, যা আমার আশ্চর্যের মতো ছিল, কিন্তু মনে হচ্ছে এটি কী ছিল তাতে আমিই একমাত্র আগ্রহী ছিলাম না। সেই নিবন্ধটির জন্য ধন্যবাদ, আমি টাইমপ্লাস দ্বারা স্পনসর করা ওপেন-সোর্স অ্যাপাচি 2.0 লাইসেন্সপ্রাপ্ত প্রকল্প, প্রোটন জুড়ে দৌড়েছি। এটি একটি এসকিউএল ডাটাবেস যা ঐতিহাসিক এবং স্ট্রিমিং ডেটা উভয়ই মিটমাট করে। C++ এ লেখা এবং ClickHouse দ্বারা চালিত, ফোকাস সরলতা এবং কর্মক্ষমতা। একটি একক এক্সিকিউটেবল সহ, ইনস্টলেশন সহজ।
একটি প্রবণতা আমি দেখেছি যে আরও বেশি রিয়েল-টাইম অ্যানালিটিক্স অ্যাপ্লিকেশন তৈরি করা হচ্ছে, কিন্তু আপনি সেগুলি দুবার তৈরি করতে চান না। একবার স্ট্রিমিংয়ের জন্য এবং একবার ঐতিহাসিক ব্যাকফিলের জন্য। একটি একক প্ল্যাটফর্ম থাকার সুনির্দিষ্ট সুবিধা থাকবে যা ব্যাচ বা স্ট্রিমিং মোড বা এমনকি একটি হাইব্রিড মোডে অনুসন্ধান করতে পারে যেখানে আপনি ইনকামিং ডেটার একটি স্ট্রিমে ঐতিহাসিক ডেটা যোগ করছেন। এটা মনে হয় যে প্রোটন ঠিক এটি করার জন্য নির্মিত হয়েছিল।
সংক্ষেপে, আমাদের কাছে একটি ক্লিক হাউস ডাটাবেস রয়েছে এবং টাইমপ্লাস স্ট্রিমিং পরিষেবাগুলির জন্য সমর্থন যোগ করেছে। এটি আপনাকে সেই ক্লিকহাউস ডাটাবেসের সাথে একটি ফ্লিঙ্ক-এর মতো ক্যোয়ারী ইঞ্জিন এবং কাফকার মতো স্ট্রিমিং স্টোরেজ পেতে হবে। সুতরাং, যে মত দেখায় কি?
ডটেড লাইনটি হল যেখানে প্রোটন আসে৷ আমি কী সম্ভব তা সম্পর্কে ভাল ধারণা পেতে আর্কিটেকচার ডক্সের মাধ্যমে পড়ার পরামর্শ দিই৷
ডেটার একটি র্যান্ডম স্ট্রিম তৈরি করতে এবং প্রোটনের সাথে এটিকে জিজ্ঞাসা করতে, আমরা এরকম কিছু করতে পারি:
-- Create a stream with random data. CREATE RANDOM STREAM devices(device string default 'device'||to_string(rand()%4), temperature float default rand()%1000/10); -- Run the long-running stream query. SELECT device, count(*), min(temperature), max(temperature) FROM devices GROUP BY device; ┌─device──┬─count()─┬─min(temperature)─┬─max(temperature)─┐ │ device0 │ 2256 │ 0 │ 99.6 │ │ device1 │ 2260 │ 0.1 │ 99.7 │ │ device3 │ 2259 │ 0.3 │ 99.9 │ │ device2 │ 2225 │ 0.2 │ 99.8 │ └─────────┴─────────┴──────────────────┴──────────────────┘
প্রোটনের অনেক নিফটি বৈশিষ্ট্য রয়েছে; যেটি আমাকে অবিলম্বে আঘাত করেছিল তা হল প্রোটনে নির্দিষ্ট ইভেন্টগুলি সংরক্ষণ করার জন্য একটি বস্তুগত দৃষ্টিভঙ্গি তৈরি করার ক্ষমতা। ডকুমেন্টেশন থেকে ধার করে, ধরা যাক আপনার কাছে একটি কাফকা স্ট্রীম রিপোর্টিং ওয়েব ইভেন্ট রয়েছে, এবং আপনি ভাঙা লিঙ্কের প্রতিবেদনগুলি সংরক্ষণ করতে চান যাতে আপনি সেগুলিকে পরে জিজ্ঞাসা করতে পারেন, এমনকি কাফকা ডাউন বা ইভেন্টগুলি সরিয়ে দিয়েও। এটা এই মত কিছু দেখতে হবে:
create materialized view mv_broken_links as select raw:requestedUrl as url,raw:method as method, raw:ipAddress as ip, raw:response.statusCode as statusCode, domain(raw:headers.referrer) as referrer from frontend_events where raw:response.statusCode<>'200';
তারপরে, আপনি যদি সরাসরি বস্তুগত দৃষ্টিভঙ্গি অনুসন্ধান করতে চান এবং ডেটা থেকে একটি বার চার্ট তৈরি করতে চান তবে এটি দেখতে এরকম হবে:
-- streaming query select * from mv_broken_links; -- historical query select method, count() as cnt, bar(cnt,0,40,5) as bar from table(mv_broken_links) group by method order by cnt desc; ┌─method─┬─cnt─┬─bar─┐ │ GET │ 25 │ ███ │ │ DELETE │ 20 │ ██▌ │ │ HEAD │ 17 │ ██ │ │ POST │ 17 │ ██ │ │ PUT │ 17 │ ██ │ │ PATCH │ 17 │ ██ │ └────────┴─────┴─────┘
এই কার্যকারিতার কিছু আমাকে আপসোলভারের কথা মনে করিয়ে দেয়, যে কোম্পানিতে আমি কয়েক বছর আগে কাজ করেছি।
জাভা, গো এবং পাইথনের জন্য অন্যান্য ভাষার ড্রাইভার উপলব্ধ। রেডপান্ডার মতো কিছুর সাথে প্রোটন ব্যবহার করা ঐতিহাসিক ডেটা স্ট্রিম করার জন্য একটি ন্যূনতম পদচিহ্ন হবে।
অন্যান্য অনেক বৈশিষ্ট্য উপলব্ধ আছে, কিন্তু এটি একটি টিউটোরিয়াল হতে বোঝানো হয় না. আমি একটি হালকা ব্যাখ্যা করতে চাই এবং কিছু বৈশিষ্ট্যের প্রতি দৃষ্টি আকর্ষণ করতে চাই। দস্তাবেজগুলি সংক্ষিপ্ত এবং সামগ্রিকভাবে, ভাল লেখা, অবশ্যই অনেকগুলি ওপেন-সোর্স প্রকল্পের চেয়ে ভাল৷
যদিও এই মুহুর্তে আমার ব্যক্তিগতভাবে এই ধরণের ব্যবস্থার প্রয়োজন নেই, আমি অবশ্যই এমন জায়গায় গিয়েছি এবং এমন সংস্থাগুলি দেখেছি যেখানে এটি থাকা খুব, খুব দুর্দান্ত হবে। এই লোকের মতো শান্ত?
সম্ভবত না, কিন্তু তারপর আবার, কিছুই না :)। অযৌক্তিকতা বাদ দিয়ে, প্রোটন দলটি প্রকল্পটি নথিভুক্ত করে একটি দুর্দান্ত কাজ করেছে এবং এটি যতটা সম্ভব ইনস্টল করা এবং ব্যবহার করা সহজ করে তুলেছে। আমি এই একক-বাইনারী প্রকল্পগুলি পছন্দ করি যেগুলির প্রচুর নির্ভরতা সহ একটি বিশাল জাভা ইকোসিস্টেমের প্রয়োজন নেই। কোন ভুল করবেন না, যদিও, টাইমপ্লাসের একটি বাণিজ্যিক সংস্করণ রয়েছে যা আপনাকে স্টক প্রোটন রিলিজের চেয়ে বেশি ক্ষমতা দেয়। যাইহোক, তারা প্রোটনের খুব সমর্থনকারী এবং সম্প্রদায়ের স্বাগত বলে মনে হচ্ছে।
নিচের লিঙ্কগুলিতে আমার অন্যান্য হেক কী... নিবন্ধগুলি দেখুন: