Data Skew হল একটি অবস্থা যেখানে টেরাডেটা ডেটাবেসের মধ্যে ডেটা অসমানভাবে বিতরণ হয়। সাধারণভাবে, টেরাডেটা ডেটাকে তার প্রাইমারি ইনডেক্স বা পার্টিশনিং কলামের উপর ভিত্তি করে বিভিন্ন AMP (Access Module Processor) বা নোডে ভাগ করে। যদি এই ডেটা অসামঞ্জস্যভাবে ভাগ হয়ে যায়, তাহলে একাধিক AMP-এ একসাথে অত্যধিক ডেটা জমে যেতে পারে, যার ফলে পারফরম্যান্স হ্রাস পায়। এই ধরনের অসামঞ্জস্যপূর্ণ ডেটা বিতরণকেই Data Skew বলা হয়।
ডেটা স্কিউ তখন ঘটে যখন ডেটা এমনভাবে বিভক্ত হয় যে একাধিক AMP-এ বেশি ডেটা থাকে এবং অন্য AMP-গুলোতে খুব কম ডেটা থাকে বা শূন্য ডেটা থাকে।
Data Skew এর কারণ
- ইনডেক্স বা পার্টিশনিং কলামের অসামঞ্জস্যতা: ডেটার ভারসাম্যহীনতা বা স্কিউ সাধারণত তখন ঘটে যখন ইনডেক্স বা পার্টিশনিং কলামটি এমন কিছু মান ধারণ করে যা অত্যধিক ঘটে। যেমন, যদি কোনো কলামে একটি নির্দিষ্ট মান খুব বেশি উপস্থিত থাকে (যেমন একটি নির্দিষ্ট অঞ্চলের নাম), তাহলে এই মানটির জন্য একাধিক AMP-এ অনেক বেশি ডেটা জমে যাবে।
- কার্ডিনালিটি সমস্যা (Cardinality Issues): যদি ইনডেক্স কলামটি বা পার্টিশন কলামটি খুব কম বা খুব বেশি বৈচিত্র্যযুক্ত (low or high cardinality) হয়, তাহলে ডেটার অসমান বিতরণ হতে পারে। উদাহরণস্বরূপ, যদি একটি কলামে মাত্র কয়েকটি ইউনিক মান থাকে, তবে এই মানগুলির মধ্যে কিছু একটি AMP-এ বেশি ডেটা জমে যাবে।
- অপটিমাইজেশন বা পরিকল্পনা ত্রুটি: কখনও কখনও ডেটা বিভাজন সঠিকভাবে কনফিগার না হওয়ায়, একাধিক AMP একসাথে বেশি লোড বহন করতে পারে, যা স্কিউ তৈরি করে।
Data Skew এর প্রভাব
- পারফরম্যান্সে ধীরগতি (Performance Degradation): Data Skew ডেটাবেসের পারফরম্যান্সের উপর বিপরীত প্রভাব ফেলতে পারে। যখন কিছু AMP-এ অত্যধিক ডেটা থাকে, তখন এই AMP গুলি দীর্ঘ সময় ধরে কাজ করতে থাকে, এবং অন্যান্য AMP অপেক্ষা বেশি সময় নেয়। এতে পুরো সিস্টেমের কার্যকারিতা হ্রাস পায় এবং বড় কাজের জন্য সময় বেশি লাগে।
- অতিরিক্ত I/O (Excessive I/O): Data Skew এর কারণে কিছু AMP গুলিতে অত্যধিক I/O (Input/Output) কার্যক্রম বৃদ্ধি পায়। যেখানে অন্য AMP গুলিতে I/O কম হতে পারে, এর ফলে ডেটাবেসের দক্ষতা কমে যায় এবং অনেক সময় রিসোর্স অপচয় হয়।
- লোড ভারসাম্যহীনতা (Load Imbalance): ডেটা স্কিউ একধরনের লোড ভারসাম্যহীনতা সৃষ্টি করতে পারে, যেখানে কিছু AMP অত্যধিক কাজের বোঝা বহন করে, এবং অন্য AMP-এ খুব কম কাজ থাকে। এর ফলে, পুরো সিস্টেমের কার্যক্ষমতা কমে যায়।
- ডিলেট এবং আপডেট অপারেশনে সমস্যা (Issues in Delete and Update Operations): Data Skew ডেটাবেসে ডিলেট বা আপডেট অপারেশনকে ধীর করে দিতে পারে, কারণ ডেটা একাধিক AMP-এ অসমভাবে বিভক্ত থাকে। তাই একটি AMP-এ বড় আকারের অপারেশন সম্পন্ন করার জন্য অতিরিক্ত সময় এবং রিসোর্স প্রয়োজন হতে পারে।
Data Skew এর সমাধান
- ইনডেক্স এবং পার্টিশন কলাম নির্বাচন পুনরায় করা: Data Skew সমস্যা সমাধানের জন্য একটি ভাল পদ্ধতি হল ইনডেক্স কলাম বা পার্টিশন কলামের নির্বাচন পুনর্বিবেচনা করা। কোন কলামগুলি অসামঞ্জস্যভাবে ডেটা বিতরণ করছে তা বিশ্লেষণ করে, উপযুক্ত ইনডেক্স বা পার্টিশন কলাম নির্বাচন করতে হবে, যাতে ডেটা সমানভাবে বিতরণ হয়।
- ডিস্ট্রিবিউশন এক্সপ্রেশন (Distribution Expressions): আপনি ডিস্ট্রিবিউশন এক্সপ্রেশন ব্যবহার করে ডেটার শ্রেণীবিভাগ এবং বিতরণ উন্নত করতে পারেন। উদাহরণস্বরূপ, ডেটা একটি নির্দিষ্ট রেঞ্জে ভাগ করতে পারেন, যাতে একাধিক AMP-এ সমান পরিমাণ ডেটা থাকে।
- পিপিআই (PPI) ব্যবহার করা: Partitioned Primary Index (PPI) ব্যবহার করে, আপনি ডেটাকে বিভিন্ন অংশে ভাগ করতে পারেন, যার ফলে ডেটার স্কিউ কমানো যায় এবং প্রতিটি অংশের মধ্যে ভারসাম্য তৈরি হয়।
- কলাম স্টোরেজ এবং ইনডেক্স অপটিমাইজেশন: টেবিলের কলাম স্টোরেজ এবং ইনডেক্স অপটিমাইজেশন দ্বারা আপনি আরও ভালভাবে ডেটার বিতরণ এবং পারফরম্যান্স উন্নত করতে পারেন। এতে ডেটার অ্যাক্সেস টাইম কমবে এবং অপারেশনগুলির গতি বৃদ্ধি পাবে।
সারাংশ
Data Skew একটি টেরাডেটা ডেটাবেসে ঘটে যখন ডেটা অসমভাবে বিভক্ত হয়, যার ফলে একাধিক AMP-এ অত্যধিক ডেটা জমে এবং অন্যান্য AMP গুলিতে কম ডেটা থাকে। এটি পারফরম্যান্স হ্রাস, অতিরিক্ত I/O, লোড ভারসাম্যহীনতা, এবং ডিলেট বা আপডেট অপারেশন ধীর করতে পারে। ডেটা স্কিউ সমস্যা সমাধান করার জন্য সঠিক ইনডেক্স এবং পার্টিশন কলাম নির্বাচন, PPI ব্যবহার, এবং ডিস্ট্রিবিউশন এক্সপ্রেশন প্রয়োগ করা যেতে পারে।
Read more