Database Tutorials Horizontal এবং Vertical Partitioning গাইড ও নোট

363

Partitioning হল একটি ডেটাবেস অপটিমাইজেশন কৌশল যা একটি বড় টেবিল বা ডেটাসেটকে ছোট ছোট ভাগে বিভক্ত করে। এটি ডেটাবেসের পারফরম্যান্স, স্কেলেবিলিটি এবং ম্যানেজমেন্ট সহজ করে তোলে। PostgreSQL এবং অন্যান্য ডেটাবেস সিস্টেমে সাধারণত দুই ধরনের পার্টিশনিং ব্যবহার করা হয়: Horizontal Partitioning এবং Vertical Partitioning। এই দুটি পার্টিশনিংয়ের মধ্যে পার্থক্য রয়েছে কিভাবে ডেটা ভাগ করা হয় এবং তাদের সুবিধা ও ব্যবহার ক্ষেত্রে কি।


1. Horizontal Partitioning (হরিজেন্টাল পার্টিশনিং)

Horizontal Partitioning হল এমন একটি কৌশল যেখানে একটি টেবিলের রেকর্ডগুলোকে আলাদা আলাদা পার্টিশন বা ভাগে ভাগ করা হয়, প্রতিটি পার্টিশন একটি ডেটার সাবসেট ধারণ করে। সাধারণত, এই প্রক্রিয়ায় রেকর্ডগুলো নির্দিষ্ট শর্তের ভিত্তিতে বিভক্ত করা হয়, যেমন ডেটার রেঞ্জ (Range Partitioning), লিস্ট (List Partitioning) বা হ্যাশ (Hash Partitioning)।

কিভাবে কাজ করে:

  • টেবিলের সারিগুলি (rows) বিভিন্ন ভাগে ভাগ করা হয়।
  • প্রতিটি ভাগ একটি আলাদা স্টোরেজ ব্লকে রাখা হয়, যা পৃথক ফাইল বা টেবিলের মতো কার্যকরী হতে পারে।

উদাহরণ:

ধরা যাক, আমাদের একটি orders টেবিল রয়েছে এবং আমরা এই টেবিলের ডেটা হরিজেন্টাল পার্টিশনিং করতে চাই, যেখানে প্রতিটি পার্টিশন একটি নির্দিষ্ট বছর অনুযায়ী হবে।

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    total_amount DECIMAL
) PARTITION BY RANGE (order_date);

এখন, আমরা ২০১৯ এবং ২০২০ সালের অর্ডারগুলির জন্য আলাদা আলাদা পার্টিশন তৈরি করতে পারি:

CREATE TABLE orders_2019 PARTITION OF orders FOR VALUES FROM ('2019-01-01') TO ('2019-12-31');
CREATE TABLE orders_2020 PARTITION OF orders FOR VALUES FROM ('2020-01-01') TO ('2020-12-31');

সুবিধা:

  • পারফরম্যান্স উন্নয়ন: এটি বড় ডেটাসেটের জন্য পারফরম্যান্স উন্নত করে, কারণ শুধুমাত্র প্রয়োজনীয় পার্টিশনে কুয়েরি চালানো হয়।
  • ম্যানেজমেন্ট সহজতা: বিশেষ সময় বা শর্ত অনুযায়ী ডেটা প্রক্রিয়া করা বা আর্কাইভ করা সহজ হয়।
  • কুয়েরি অপটিমাইজেশন: বিশেষ কিছু কুয়েরির জন্য নির্দিষ্ট পার্টিশনে কাজ করলে দ্রুত ফলাফল পাওয়া যায়।

সীমাবদ্ধতা:

  • পার্টিশনিং প্রক্রিয়া সঠিকভাবে ডিজাইন না হলে এটি পারফরম্যান্সের জন্য খারাপ হতে পারে।
  • খুব বেশি পার্টিশন তৈরি করলে কুয়েরি অপটিমাইজেশন জটিল হতে পারে।

2. Vertical Partitioning (ভার্টিকাল পার্টিশনিং)

Vertical Partitioning হল এমন একটি কৌশল যেখানে একটি টেবিলের কলামগুলোকে আলাদা আলাদা ভাগে ভাগ করা হয়। এটি সাধারণত ডেটাবেসের নির্দিষ্ট কলামগুলির জন্য ব্যবহৃত হয় যা খুব বেশি অ্যাক্সেস হয় বা খুব কম অ্যাক্সেস হয়। কলামগুলোকে ভাগ করে স্টোর করা হয়, যাতে ডেটার আকার ছোট থাকে এবং দ্রুত অ্যাক্সেস করা যায়।

কিভাবে কাজ করে:

  • একটি টেবিলের কলামগুলিকে দুটি বা তার বেশি ভাগে ভাগ করা হয়।
  • প্রতিটি ভাগে কিছু নির্দিষ্ট কলাম সংরক্ষিত হয়।

উদাহরণ:

ধরা যাক, আমাদের একটি users টেবিল রয়েছে, যেখানে ব্যবহারকারীর তথ্য যেমন name, email, address এবং phone_number রাখা হয়। আমরা চাই যে, ব্যবহারকারীর যোগাযোগের তথ্য এবং ব্যক্তিগত তথ্য আলাদা আলাদা পার্টিশনে রাখা হোক।

CREATE TABLE users_personal (
    user_id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    address TEXT
);

CREATE TABLE users_contact (
    user_id SERIAL PRIMARY KEY,
    email VARCHAR(100),
    phone_number VARCHAR(15)
);

এখন, যদি আপনি একটি কুয়েরি চালান যা শুধু যোগাযোগ তথ্যের প্রয়োজন (যেমন, email এবং phone_number), তাহলে আপনি শুধুমাত্র users_contact টেবিলটি অ্যাক্সেস করবেন, যা দ্রুত হবে।

সুবিধা:

  • পারফরম্যান্স উন্নয়ন: যেহেতু প্রতিটি পার্টিশনে শুধুমাত্র প্রয়োজনীয় কলামগুলি থাকে, তাই দ্রুত অ্যাক্সেস করা সম্ভব।
  • ডেটা সেভিং: কম ব্যবহৃত কলামগুলি আলাদা করা হলে সেগুলি কম জায়গা দখল করবে এবং দ্রুত অ্যাক্সেস করা যাবে।
  • ডেটা ম্যানেজমেন্ট সহজ: বিভিন্ন কলামগুলি একসাথে স্টোর না করায় ম্যানেজমেন্ট অনেক সহজ হয়।

সীমাবদ্ধতা:

  • ভার্টিকাল পার্টিশনিং মাঝে মাঝে join অপারেশনগুলিকে জটিল করতে পারে, কারণ আপনাকে বিভিন্ন পার্টিশনে থেকে তথ্য একত্রিত করতে হতে পারে।
  • এটি ছোট টেবিলের জন্য খুব কার্যকরী নয়, কারণ এতে অতিরিক্ত জটিলতা তৈরি হয়।

3. Comparison: Horizontal vs Vertical Partitioning

বিশয়Horizontal PartitioningVertical Partitioning
কী ভাগ করা হয়?রেকর্ড বা সারি (Rows)কলাম (Columns)
ডেটা ভাগের প্রক্রিয়াডেটা বিভিন্ন শর্ত অনুযায়ী ভাগ করা হয় (যেমন, রেঞ্জ, লিস্ট, হ্যাশ)ডেটার কলামগুলিকে আলাদা আলাদা ভাগে ভাগ করা হয়
পারফরম্যান্স উপকারিতাবৃহৎ টেবিলের জন্য পারফরম্যান্স বাড়ায়, প্রয়োজনীয় রেকর্ড দ্রুত পাওয়া যায়নির্বাচিত কলামগুলির জন্য পারফরম্যান্স উন্নত করে
ব্যবহার ক্ষেত্রবড় ডেটাসেটের জন্য, যখন নির্দিষ্ট রেকর্ডগুলোর উপর বেশি কাজ হয়যখন কিছু কলাম বেশি অ্যাক্সেস হয় এবং কিছু কম হয়
বিভাগের ধরনসারি (Rows)কলাম (Columns)
ডেটার স্কেলঅধিক সংখ্যক রেকর্ড সংরক্ষণ করার জন্য উপযুক্তবিশেষ কলামগুলির উপর মনোযোগ কেন্দ্রীকৃত

সারাংশ

  • Horizontal Partitioning: একটি টেবিলের রেকর্ডগুলো বিভিন্ন ভাগে ভাগ করা হয়, সাধারণত কিছু নির্দিষ্ট শর্ত (যেমন, রেঞ্জ বা লিস্ট) অনুযায়ী। এটি বড় ডেটাসেটের জন্য পারফরম্যান্স উন্নত করে এবং দ্রুত কুয়েরি অপটিমাইজেশন নিশ্চিত করে।
  • Vertical Partitioning: একটি টেবিলের কলামগুলোকে ভাগ করা হয়। এটি বড় টেবিলের কলামগুলির অ্যাক্সেসের গতি বাড়ায়, বিশেষ করে যখন কিছু কলাম কম ব্যবহৃত হয়।

যখন আপনি ডেটাবেস পারফরম্যান্স অপটিমাইজেশনের জন্য পার্টিশনিং ব্যবহার করেন, তখন আপনার ডেটার ধরন এবং অ্যাক্সেস প্যাটার্ন বুঝে সঠিক পার্টিশনিং কৌশল নির্বাচন করা উচিত।

Content added By
Promotion

Are you sure to start over?

Loading...