DEV Community

Md.Shariful Islam
Md.Shariful Islam

Posted on

ডাটাবেজে Collation কেন প্রয়োজন ?

কোলেশন হলো 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-এ ডেটার সাজানো, তুলনা এবং সার্চিংকে প্রভাবিত করে। অ্যাপ্লিকেশনের ভাষা, কেস সেনসিটিভিটি এবং পারফরম্যান্সের ভিত্তিতে সঠিক কোলেশন বেছে নিন!

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more