কোলেশন হলো MySQL-এ একটি নিয়মের সেট যা নির্ধারণ করে কিভাবে ডেটা সাজানো (sort) এবং তুলনা (compare) করা হবে। এটি মূলত ক্যারেক্টার এনকোডিং (character encoding) এবং স্ট্রিং অপারেশনের জন্য নিয়ম তৈরি করে, যেমন:
কেস সেনসিটিভিটি (বড় হাতের অক্ষর vs ছোট হাতের অক্ষর, যেমন: A vs a)
অ্যাকসেন্ট সেনসিটিভিটি (যেমন: é vs e)
ভাষাভিত্তিক সাজানোর নিয়ম (যেমন: জার্মান ভাষায় ä কে a-এর কাছাকাছি সাজানো হয়, কিন্তু সুইডিশ ভাষায় z-এর পরে)।
এটি ক্যারেক্টার সেট (character set)-এর সাথে যুক্ত, যা ডাটাবেসে স্টোর করা যায় এমন ক্যারেক্টার (অক্ষর) নির্ধারণ করে।
কোলেশন কেন প্রয়োজন?
১. ডেটা সাজানো (Sorting):
কোলেশন নির্ধারণ করে ডেটা কোন অর্ডারে দেখানো হবে। যেমন: utf8mb4_general_ci কোলেশনে Apple এবং apple একই মনে করা হয় (কেস-ইনসেনসিটিভ), কিন্তু utf8mb4_bin-এ এরা ভিন্ন।
২. স্ট্রিং তুলনা (Comparison):
WHERE ক্লজ বা JOIN-এ স্ট্রিং তুলনার সময় কোলেশন নিয়ম প্রয়োগ হয়। যেমন: 'café' = 'cafe' সত্যি হবে কি না তা কোলেশন উপর নির্ভর করে।
৩. সার্চিংয়ের সঠিকতা:
কোলেশন অনুযায়ী সার্চ রেজাল্ট পরিবর্তিত হয়। যেমন: LIKE '%cat%' কুয়েরিতে Cat বা CAT পাওয়া যাবে কি না তা কোলেশন ঠিক করে।
৪. ভাষা সমর্থন:
বিভিন্ন ভাষার ক্যারেক্টার সঠিকভাবে সাজাতে বা তুলনায় কোলেশন ব্যবহৃত হয়। যেমন: স্প্যানিশ ñ বা জার্মান ß-এর জন্য আলাদা নিয়ম।
৫. ডেটা সামঞ্জস্যতা:
সব অপারেশনে (সাজানো, তুলনা, সার্চ) একই নিয়ম প্রয়োগ করে ডেটার ধারাবাহিকতা বজায় রাখে।
কোলেশনের উদাহরণ
utf8mb4_general_ci:
কেস-ইনসেনসিটিভ, সাধারণ ইউনিকোড সাপোর্ট।
A = a, É = E হিসেব করা হয়।
utf8mb4_bin:
বাইনারি তুলনা (কেস-সেনসিটিভ)।
A ≠ a, É ≠ E।
utf8mb4_unicode_ci:
ইউনিকোডের সম্পূর্ণ সাপোর্ট, বহুভাষার জন্য উপযুক্ত।
কোলেশন কিভাবে সেট করবেন?
১. ডাটাবেস লেভেলে:
sql
Copy
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
২. টেবিল লেভেলে:
sql
Copy
CREATE TABLE mytable (
id INT,
name VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
৩. কোলাম লেভেলে:
sql
Copy
CREATE TABLE mytable (
id INT,
name VARCHAR(255) COLLATE utf8mb4_bin
);
কোন কোলেশন বেছে নেবেন?
কেস সেনসিটিভিটি: _ci (কেস-ইনসেনসিটিভ) বা _bin (কেস-সেনসিটিভ) নির্বাচন করুন।
ভাষার প্রয়োজন: বহুভাষার ডেটার জন্য utf8mb4_unicode_ci ভালো।
পারফরম্যান্স: utf8mb4_general_ci দ্রুত, কিন্তু unicode_ci বেশি অ্যাকুরেট।
সতর্কতা
কোলেশন মিসম্যাচ: টেবিল জয়েন বা তুলনায় ভুল এড়াতে সব টেবিল/কোলামে একই কোলেশন ব্যবহার করুন।
ইনডেক্সিং: কোলেশন পরিবর্তন করলে ইনডেক্স পুনরায় বিল্ড করতে হতে পারে।
সংক্ষেপে
কোলেশন MySQL-এ ডেটার সাজানো, তুলনা এবং সার্চিংকে প্রভাবিত করে। অ্যাপ্লিকেশনের ভাষা, কেস সেনসিটিভিটি এবং পারফরম্যান্সের ভিত্তিতে সঠিক কোলেশন বেছে নিন!
Top comments (0)