Avro Schema ডেটা স্টোরেজ এবং সিরিয়ালাইজেশনের জন্য ব্যবহৃত একটি গুরুত্বপূর্ণ উপাদান। এটি primitive types এবং complex types নামে দুটি প্রধান শ্রেণিতে ভাগ করা যায়। প্রতিটি ধরনের বিভিন্ন বৈশিষ্ট্য ও ব্যবহারের ক্ষেত্র থাকে, এবং এগুলোর মাধ্যমে Avro ডেটা কাঠামো এবং তার প্রসেসিং সক্ষমতা নির্ধারণ করা হয়।
Primitive Types
Primitive Types হল সাধারণ ডেটা টাইপস, যা সরাসরি একটি মান ধারণ করতে সক্ষম। এই টাইপগুলি সাধারণত ইন্টিজার, স্ট্রিং, বুলিয়ান, ফ্লোট, ডাবল, বাইটস, ইউনিয়ন ইত্যাদি প্রকারে ব্যবহৃত হয়। এই ধরনের ডেটা সাধারণত ছোট এবং একক মান ধারণ করে।
১. String (স্ট্রিং)
- এটি একটি সাধারণ পাঠ্য ডেটা টাইপ, যা Unicode চরিত্র ধারণ করতে সক্ষম।
- ব্যবহৃত হয় টেক্সট ভিত্তিক ডেটা সংরক্ষণের জন্য।
{
"type": "string"
}
২. Int (ইন্ট)
- এটি একটি পূর্ণসংখ্যা (integer) টাইপ, যা 32-বিট সাইজ ধারণ করতে পারে।
- সাধারণত ছোট পূর্ণসংখ্যা ধারণের জন্য ব্যবহৃত হয়।
{
"type": "int"
}
৩. Long (লং)
- এটি 64-বিট সাইজের পূর্ণসংখ্যা (integer) টাইপ।
- বড় পরিমাণের পূর্ণসংখ্যা সংরক্ষণের জন্য ব্যবহৃত হয়।
{
"type": "long"
}
৪. Float (ফ্লোট)
- এটি একটি 32-বিট ফ্লোটিং পয়েন্ট মান ধারণ করে।
- সাধারণত দশমিক সংখ্যার জন্য ব্যবহৃত হয়।
{
"type": "float"
}
৫. Double (ডাবল)
- এটি 64-বিট ফ্লোটিং পয়েন্ট মান ধারণ করে।
- বড় বা অত্যন্ত সঠিক দশমিক মানের জন্য ব্যবহৃত হয়।
{
"type": "double"
}
৬. Boolean (বুলিয়ান)
- এটি শুধুমাত্র দুটি মান ধারণ করতে পারে:
trueবাfalse। - সাধারণভাবে লজিক্যাল (যেমন, সত্য বা মিথ্যা) মানের জন্য ব্যবহৃত হয়।
{
"type": "boolean"
}
৭. Bytes (বাইটস)
- এটি একটি বাইনারি ডেটা টাইপ, যা বাইটের সিকোয়েন্স ধারণ করে।
- সাধারণত ফাইল বা বাইনারি ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়।
{
"type": "bytes"
}
৮. Null (নাল)
- এটি একটি বিশেষ টাইপ, যা কিছু না থাকার (অর্থাৎ
nullমান) অবস্থাকে নির্দেশ করে। - যখন একটি ফিল্ডের মানের প্রয়োজন নেই বা একটি খালি মান থাকতে পারে, তখন এটি ব্যবহৃত হয়।
{
"type": "null"
}
Complex Types
Complex Types হল ঐ ডেটা টাইপস যেগুলি একাধিক ফিল্ড বা উপাদান ধারণ করতে সক্ষম। সাধারণত এগুলি আরও জটিল ডেটা কাঠামো গঠন করতে ব্যবহৃত হয়, যেমন রেকর্ড, তালিকা বা ম্যাপ। Avro-তে মূল complex types হলো Records, Arrays, এবং Maps।
১. Record (রেকর্ড)
- Record হল একটি কাস্টম ডেটা টাইপ, যা একাধিক ফিল্ড ধারণ করতে পারে। প্রতিটি ফিল্ডের একটি নাম এবং টাইপ থাকে।
- এটি মূলত একটি ডেটা সঞ্চয় পদ্ধতি যা একাধিক ডেটা ফিল্ডকে একত্রে একটি যৌথ কাঠামোয় ধারণ করতে সক্ষম।
{
"type": "record",
"name": "Employee",
"fields": [
{"name": "id", "type": "int"},
{"name": "name", "type": "string"},
{"name": "department", "type": "string"}
]
}
এই উদাহরণে, Employee রেকর্ডে তিনটি ফিল্ড রয়েছে: id, name, এবং department।
২. Array (অ্যারেই)
- Array একটি অর্ডারড কোলেকশন যা একধরনের উপাদান ধারণ করে। Avro-তে অ্যারে সাধারণত একটি একক ডেটা টাইপের উপাদান ধারণ করে, এবং এগুলি অনেকগুলো হতে পারে।
{
"type": "array",
"items": "string"
}
এখানে, অ্যারে শুধু স্ট্রিং টাইপের উপাদান ধারণ করতে পারে।
৩. Map (ম্যাপ)
- Map হল একটি ডেটা কোলেকশন যেখানে প্রতিটি উপাদান একটি কী-ভ্যালু জোড়া। এটি একটি নির্দিষ্ট টাইপের কী এবং অন্য একটি টাইপের ভ্যালু ধারণ করে।
{
"type": "map",
"values": "string"
}
এখানে, ম্যাপের কীগুলি হবে string এবং ভ্যালুগুলি হবে string টাইপের।
Union Types
Avro তে একটি বিশেষ ধরনের টাইপ রয়েছে যাকে Union বলা হয়। এটি একাধিক ধরনের মান ধারণ করতে সক্ষম। একটি Union টাইপ আসলে একটি তালিকা (array) হয়, যেখানে একাধিক প্রকারের ডেটা থাকতে পারে।
উদাহরণ: Union
{
"type": "union",
"types": ["string", "int"]
}
এখানে, ডেটা ফিল্ডটি string বা int যে কোনো টাইপ ধারণ করতে পারে।
সারাংশ
Avro Schema দুটি প্রধান টাইপে বিভক্ত: Primitive Types এবং Complex Types।
- Primitive Types সাধারণ একক মান ধারণ করে, যেমন
int,string,boolean,float, ইত্যাদি। - Complex Types আরও জটিল কাঠামো তৈরি করে, যেমন
record,array,map, ইত্যাদি। - Union Types একাধিক টাইপের মান ধারণ করতে সক্ষম, যা ডেটার flexibility এবং adaptability বৃদ্ধি করে।
Avro Schema-এর এই ধরনগুলি বড় ডেটা সিস্টেমে ডেটা সঞ্চয়, প্রক্রিয়াকরণ এবং ট্রান্সফারকে সহজ করে তোলে।
Read more