Avro এর জন্য Schema কী?

Avro এর মৌলিক ধারণা - অ্যাপাচি অভ্র (Avro) - Big Data and Analytics

340

Avro হল একটি ডেটা সিরিয়ালাইজেশন ফরম্যাট, যা বিশেষভাবে বড় ডেটাসেটের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। এটি Apache Avro প্রকল্পের একটি অংশ এবং সাধারণত ডিস্ট্রিবিউটেড সিস্টেম এবং big data ecosystems (যেমন Apache Kafka, Apache Hadoop) এর সাথে ব্যবহৃত হয়।

Avro এর প্রধান সুবিধাগুলোর মধ্যে একটি হল এর Schema, যা ডেটার গঠন বা স্ট্রাকচার বর্ণনা করে। Avro Schema হলো একটি JSON ফরম্যাটে লিখিত স্কিমা যা ডেটা ফরম্যাটের ধরন এবং স্ট্রাকচার নির্ধারণ করে।

Avro স্কিমার দুটি প্রধান ধরন থাকতে পারে: Primitive Types এবং Complex Types


Avro Schema এর ধরন

১. Primitive Types (প্রাইমিটিভ টাইপ)

Avro স্কিমায় Primitive Types বা মৌলিক ধরনের ডেটা হল সরল ডেটার ধরন যা স্কিমাতে সরাসরি ব্যবহার করা হয়। এগুলো সাধারণত সাধারণ ডেটা ধরনের মত যেমন ইন্টিজার, স্ট্রিং, বুলিয়ান ইত্যাদি।

Avro-তে যে প্রাইমিটিভ টাইপগুলো ব্যবহার করা যায় তা হলো:

  • null: এটির মান কিছুই হতে পারে না। এটি কেবল নির্দিষ্ট মানের উপস্থিতি বোঝানোর জন্য ব্যবহৃত হয়।
  • boolean: true বা false এর মান নিতে পারে।
  • int: 32-বিট সইযুক্ত পূর্ণসংখ্যা।
  • long: 64-বিট সইযুক্ত পূর্ণসংখ্যা।
  • float: 32-বিট ভাসমান দশমিক মান।
  • double: 64-বিট ভাসমান দশমিক মান।
  • bytes: যেকোনো বাইনারি ডেটা (যেমন: ইমেজ, অডিও, ভিডিও) রাখার জন্য ব্যবহার করা হয়।
  • string: পাঠ্য বা টেক্সট ডেটা সংরক্ষণের জন্য।

উদাহরণ:

{
  "type": "record",
  "name": "User",
  "fields": [
    {
      "name": "id",
      "type": "int"
    },
    {
      "name": "name",
      "type": "string"
    }
  ]
}

এখানে "id" হল একটি int প্রাইমিটিভ টাইপ এবং "name" হল একটি string প্রাইমিটিভ টাইপ।


২. Complex Types (কমপ্লেক্স টাইপ)

Complex Types হল আরও উন্নত এবং কাঠামোবদ্ধ ডেটা টাইপ যা একাধিক প্রাইমিটিভ টাইপ বা অন্যান্য কমপ্লেক্স টাইপের সমন্বয়ে গঠিত। Avro-তে কয়েকটি প্রধান কমপ্লেক্স টাইপ রয়েছে:

  • Record: এটি একটি অবজেক্টের মতো কাজ করে যেখানে একাধিক ফিল্ড থাকে এবং প্রতিটি ফিল্ড একটি নির্দিষ্ট নাম এবং ডেটা টাইপ ধারণ করে। এটি Structs বা Classes এর মতো কাজ করে।
  • Enum: এটি একটি ডেটা টাইপ যা কিছু পূর্বনির্ধারিত মানের মধ্যে সীমাবদ্ধ। মানগুলো নির্বাচিত করার জন্য ব্যবহার করা হয়।
  • Array: এটি এক ধরনের তালিকা যা এক ধরনের ডেটার কয়েকটি মান ধারণ করতে পারে (যেমন সব string বা সব int হতে পারে)।
  • Map: এটি একটি কী-ব্যালু ডেটা স্ট্রাকচার যা যেকোনো ধরনের কী (যেমন string বা int) এবং মান (যেমন int বা string) ধারণ করতে পারে।

উদাহরণ:

  1. Record Type:
{
  "type": "record",
  "name": "Person",
  "fields": [
    {
      "name": "name",
      "type": "string"
    },
    {
      "name": "age",
      "type": "int"
    }
  ]
}
  1. Enum Type:
{
  "type": "enum",
  "name": "Color",
  "symbols": ["RED", "GREEN", "BLUE"]
}

এখানে Enum টেমপ্লেটটি একটি Color নামক ডেটা টাইপ তৈরি করেছে, যা শুধু "RED", "GREEN", বা "BLUE" মান ধারণ করতে পারে।

  1. Array Type:
{
  "type": "array",
  "items": "string"
}

এটি একটি অ্যারে (তালিকা) তৈরি করবে যার মধ্যে সবগুলো উপাদান হবে string টাইপ।

  1. Map Type:
{
  "type": "map",
  "values": "string"
}

এখানে Map টেমপ্লেটটি একটি মানচিত্র তৈরি করে, যেখানে string টাইপের কী এবং মান থাকবে।


সারাংশ

Avro Schema ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়াকে সহজ এবং কার্যকরী করে তোলে। Primitive Types সহজ ডেটা টাইপ যেমন int, string, এবং boolean ব্যবহার করে এবং Complex Types উন্নত কাঠামো যেমন records, arrays, enums, এবং maps দ্বারা গঠিত। এই ধরনের ডেটা কাঠামো Avro-এর শক্তি এবং নমনীয়তা বৃদ্ধির জন্য গুরুত্বপূর্ণ, যা বড় ডেটাসেটের সাথে কার্যকরভাবে কাজ করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...