ডেটাবেস পার্টিশনিং একটি পদ্ধতি যেখানে একটি বড় ডেটাবেস টেবিলকে ছোট ছোট অংশে বিভক্ত করা হয়, যাতে ডেটার ব্যবস্থাপনা সহজ এবং কার্যকর হয়। মারিয়া ডিবি (MariaDB)-তে পার্টিশনিং দুটি প্রধান পদ্ধতিতে করা হয়: Horizontal Partitioning এবং Vertical Partitioning।
Horizontal Partitioning
Horizontal Partitioning বা Row-based Partitioning হলো একটি পদ্ধতি যেখানে একটি টেবিলের রো (row) গুলোর মধ্যে ডেটাকে ভাগ করা হয়। প্রতিটি পার্টিশন একই টেবিলের অংশ থাকে, তবে ডেটার ভিন্ন ভিন্ন অংশ ধারণ করে। এটি মূলত তখন ব্যবহার করা হয় যখন টেবিলটি খুব বড় হয় এবং কিছু নির্দিষ্ট রো (যেমন, সময়ভিত্তিক ডেটা) বেশি ব্যবহার হয়। এই পার্টিশনিং পদ্ধতিতে, টেবিলের ডেটাকে বিভিন্ন পার্টিশনে ভাগ করা হয়, যেখানে প্রতিটি পার্টিশন আলাদা ডেটা ধারন করে এবং প্রতিটি পার্টিশনের স্টোরেজ আলাদা হতে পারে।
Horizontal Partitioning এর উদাহরণ
ধরা যাক, আপনি একটি orders টেবিলের ডেটা পার্টিশন করতে চান, যেখানে প্রতিটি অর্ডারের order_date দিয়ে ডেটা ভাগ করা হবে। এ ক্ষেত্রে, বিভিন্ন মাস বা বছরের জন্য পার্টিশন তৈরি করা যাবে।
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10, 2)
)
PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p2019 VALUES LESS THAN (2020),
PARTITION p2020 VALUES LESS THAN (2021),
PARTITION p2021 VALUES LESS THAN (2022)
);
এখানে:
PARTITION BY RANGE: এটি একটি রেঞ্জ ভিত্তিক পার্টিশনিং, যেখানে ডেটার ভিত্তিতে বিভিন্ন পার্টিশন তৈরি হয়।YEAR(order_date):order_dateকলামের বছর অনুযায়ী পার্টিশনিং করা হবে।
এভাবে, অর্ডারের ডেটা বিভিন্ন পার্টিশনে ভাগ হয়ে যাবে, যা ইন্ডেক্সিং এবং কোয়েরি পারফরম্যান্সের জন্য উপকারী।
Horizontal Partitioning এর সুবিধা
- পারফরম্যান্স উন্নতি: বড় টেবিলের জন্য পারফরম্যান্স উন্নত হয়, কারণ শুধুমাত্র নির্দিষ্ট পার্টিশনের ডেটা স্ক্যান করা হয়।
- ডেটা ম্যানেজমেন্ট সহজ করা: কিছু নির্দিষ্ট অংশের ডেটা রিট্রিভ করা এবং ম্যানেজ করা সহজ হয়।
- বিকল্প স্টোরেজ: প্রতিটি পার্টিশন আলাদা স্টোরেজ ডিভাইসে রাখা যেতে পারে, যা হাই পারফরম্যান্স এবং লোড ব্যালান্সিংয়ে সাহায্য করে।
Horizontal Partitioning এর অসুবিধা
- কমপ্লেক্স কোয়েরি: কিছু সময় পার্টিশনিং পদ্ধতির কারণে কোয়েরি করা জটিল হতে পারে।
- পার্টিশন রিভিউ: যখন নতুন পার্টিশন যোগ করা হয় বা পুরনো পার্টিশন মুছে ফেলা হয়, তখন ডেটার পুনঃপার্টিশনিং করা প্রয়োজন হতে পারে।
Vertical Partitioning
Vertical Partitioning বা Column-based Partitioning হলো একটি পদ্ধতি যেখানে একটি টেবিলের কলামগুলোকে বিভিন্ন পার্টিশনে ভাগ করা হয়। এটি মূলত তখন ব্যবহার করা হয় যখন কিছু কলাম খুব বেশি ডেটা ধারণ করে এবং অন্যান্য কলামগুলোর তুলনায় কম ব্যবহৃত হয়। কলামভিত্তিক পার্টিশনিংয়ের মাধ্যমে, কম ব্যবহৃত কলামগুলো আলাদা স্টোরেজে রাখা যেতে পারে, যা ডেটা অ্যাক্সেসের জন্য কার্যকরী হতে পারে।
Vertical Partitioning এর উদাহরণ
ধরা যাক, আপনি একটি employees টেবিলের ডেটা পার্টিশন করতে চান, যেখানে কিছু কলাম (যেমন, address বা phone_number) খুব বেশি ব্যবহার হয় না। আপনি এই কলামগুলোর জন্য আলাদা পার্টিশন তৈরি করতে পারেন:
CREATE TABLE employees_main (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(100)
);
CREATE TABLE employees_additional (
employee_id INT PRIMARY KEY,
address VARCHAR(255),
phone_number VARCHAR(50),
FOREIGN KEY (employee_id) REFERENCES employees_main(employee_id)
);
এখানে:
employees_mainটেবিলে শুধুমাত্র প্রধান তথ্য রাখা হয়েছে, যেমনemployee_id,name, এবংdepartment।employees_additionalটেবিলটি কলামভিত্তিক ডেটা রাখবে, যেমনaddressএবংphone_number।
এভাবে, ডেটার দুটি অংশ আলাদা টেবিলে রাখা হয়েছে। যখন কোনো একটি কলাম প্রয়োজন হয়, তখন শুধুমাত্র সেই পার্টিশন (অথবা টেবিল) থেকে ডেটা আনা হয়।
Vertical Partitioning এর সুবিধা
- পারফরম্যান্স বৃদ্ধি: কিছু কলাম কম ব্যবহৃত হলে তাদের আলাদা রাখা যেতে পারে, যা সঞ্চয়ের জন্য কার্যকরী।
- ডেটার কার্যকরী ব্যবহার: কম ব্যবহৃত ডেটার জন্য আলাদা স্টোরেজ ব্যবহার করা যায়, যা আরও কার্যকরী হতে পারে।
- বড় টেবিল কমপ্লেক্সিটি কমানো: একাধিক ছোট টেবিল তৈরি করে বড় টেবিলের কমপ্লেক্সিটি কমানো যায়।
Vertical Partitioning এর অসুবিধা
- জটিলতা: কোয়েরি করার সময় আলাদা টেবিলগুলোর সাথে যুক্ত থাকতে হয়, যা কিছুটা জটিল হতে পারে।
- রেফারেনশিয়াল ইন্টেগ্রিটি: আলাদা টেবিলগুলোর মধ্যে রেফারেনশিয়াল ইন্টেগ্রিটি বজায় রাখা কিছুটা কঠিন হতে পারে, বিশেষ করে
FOREIGN KEYব্যবহারের ক্ষেত্রে।
Horizontal এবং Vertical Partitioning এর তুলনা
| বৈশিষ্ট্য | Horizontal Partitioning | Vertical Partitioning |
|---|---|---|
| ভাগ করার পদ্ধতি | রো বা লাইন অনুযায়ী ভাগ করা হয়। | কলাম অনুযায়ী ভাগ করা হয়। |
| সুবিধা | বড় টেবিলের পারফরম্যান্স উন্নতি হয়। | কম ব্যবহৃত কলামগুলো আলাদা করে রাখলে স্টোরেজ সাশ্রয় হয়। |
| ইউস কেস | সময়ভিত্তিক ডেটা, বড় টেবিল যেখানে কিছু রো বেশি ব্যবহার হয়। | খুব বেশি কলাম বা ফিল্ড যেখানে কিছু কলাম কম ব্যবহৃত হয়। |
| কনফিগারেশন জটিলতা | কিছুটা জটিল, বিশেষ করে সঠিক রেঞ্জ নির্ধারণে। | অধিকতর জটিল হতে পারে, বিশেষ করে টেবিলগুলোর মধ্যে সম্পর্ক রাখার ক্ষেত্রে। |
সারাংশ
Horizontal Partitioning এবং Vertical Partitioning উভয় পদ্ধতিই ডেটাবেসের পারফরম্যান্স এবং ম্যানেজমেন্ট উন্নত করতে সাহায্য করে, তবে তাদের ব্যবহারের উপযুক্ত পরিস্থিতি ভিন্ন। Horizontal Partitioning বড় টেবিলের ডেটাকে ছোট ছোট ভাগে ভাগ করতে সাহায্য করে, যেখানে প্রতিটি ভাগ আলাদা ডেটা ধারণ করে। অন্যদিকে, Vertical Partitioning কলামভিত্তিক ডেটা বিভক্ত করতে সহায়তা করে, যাতে কম ব্যবহৃত কলামগুলো আলাদা স্টোরেজে রাখা যায়। দুটি পদ্ধতিরই সুবিধা এবং অসুবিধা রয়েছে, এবং সঠিক সিদ্ধান্ত গ্রহণের জন্য সঠিক ব্যবহারকারীর কেস বিশ্লেষণ করা প্রয়োজন।