Schema Evolution এবং Versioning

Avro Schema Design এবং Data Types - অ্যাপাচি অভ্র (Avro) - Big Data and Analytics

444

Schema Evolution এবং Versioning Avro-এর অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য। এই দুটি ধারণা মূলত ডেটা স্কিমাতে পরিবর্তন আনার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন ডিস্ট্রিবিউটেড সিস্টেমে ডেটা প্রক্রিয়া করা হয়। Avro-এর মাধ্যমে স্কিমা ইভোলিউশন সম্ভব হয়, অর্থাৎ স্কিমাতে পরিবর্তন করা হলেও পুরানো ডেটা সঠিকভাবে ডেসিরিয়ালাইজ করা যেতে পারে।

এই গুণটি বিশেষভাবে গুরুত্বপূর্ণ যখন একটি সিস্টেমে নিয়মিতভাবে নতুন ফিচার এবং পরিবর্তন আনা হয় এবং পুরানো ডেটা রেখে নতুন স্কিমা অনুযায়ী কাজ চালিয়ে যেতে হয়।


Schema Evolution কী?

Schema Evolution এমন একটি প্রক্রিয়া যার মাধ্যমে একটি ডেটার স্কিমাতে পরিবর্তন আনা হয়, কিন্তু পুরানো ডেটা তার পূর্ণতা বজায় রেখে নতুন স্কিমার সাথে সামঞ্জস্যপূর্ণ থাকে। Avro এটি সমর্থন করে এবং ব্যবহারকারীদের তাদের ডেটার কাঠামো পরিবর্তন করার সুযোগ প্রদান করে, এক্ষেত্রে পুরানো ডেটা সম্পূর্ণভাবে অক্ষুন্ন থাকে।

Avro-তে স্কিমা ইভোলিউশন সাপোর্টের ফলে পূর্ববর্তী স্কিমা এবং নতুন স্কিমা উভয়কেই একসাথে ব্যবহার করা সম্ভব হয়।


Schema Evolution এর জন্য Avro কীভাবে কাজ করে?

Avro-তে স্কিমা ইভোলিউশনের সুবিধা পাওয়ার জন্য একটি স্কিমা রেজিস্ট্রি ব্যবহৃত হয়, যা পুরানো এবং নতুন স্কিমার মধ্যে তুলনা করে এবং কোন কোন পরিবর্তন অনুমোদিত তা নির্ধারণ করে। যখন কোনো স্কিমা পরিবর্তন করা হয়, তখন তা স্কিমা রেজিস্ট্রিতে সঞ্চিত হয় এবং ডেটা প্রসেসিংয়ের সময় প্রয়োজনীয় স্কিমা নির্বাচন করা হয়।

কিছু সাধারণ পরিবর্তন যা Avro সমর্থন করে:

  1. ফিল্ড যুক্ত বা অপসারণ করা: নতুন ফিল্ড যোগ করা বা পুরানো ফিল্ড অপসারণ করা।
  2. ফিল্ডের ডেটা টাইপ পরিবর্তন: ফিল্ডের ডেটা টাইপ পরিবর্তন করা (যেমন, একটি ফিল্ডকে string থেকে int এ পরিবর্তন করা)।
  3. ডিফল্ট মান যোগ করা: নতুন ফিল্ডের জন্য ডিফল্ট মান নির্ধারণ করা, যাতে পুরানো ডেটা সঠিকভাবে ডেসিরিয়ালাইজ করা যায়।

Avro Schema Evolution এর উদাহরণ

ধরা যাক, আপনার একটি স্কিমা ছিল যেটি শুধুমাত্র id এবং name ফিল্ড ধারণ করত। এখন, আপনি একটি নতুন ফিল্ড, age যোগ করতে চান। এটি করা সম্ভব, এবং পুরানো ডেটা ঠিকঠাক কাজ করবে, যেহেতু নতুন ফিল্ডের জন্য একটি ডিফল্ট মান দেওয়া হবে।

পুরানো স্কিমা (Version 1)

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

নতুন স্কিমা (Version 2)

{
  "type": "record",
  "name": "Employee",
  "fields": [
    {"name": "id", "type": "int"},
    {"name": "name", "type": "string"},
    {"name": "age", "type": "int", "default": 30}
  ]
}

এখানে, age ফিল্ডটি নতুনভাবে যোগ করা হয়েছে এবং এর জন্য একটি ডিফল্ট মান (30) নির্ধারণ করা হয়েছে। এর ফলে পুরানো স্কিমার ডেটাও সঠিকভাবে প্রসেস হতে থাকবে।


Schema Versioning কী?

Schema Versioning হল একটি কৌশল যার মাধ্যমে একটি নির্দিষ্ট ডেটা স্কিমার বিভিন্ন সংস্করণ সংরক্ষণ করা হয়, যাতে ডেটা প্রসেসিংয়ে স্কিমার পূর্ববর্তী সংস্করণগুলোকে সমর্থন করা যায়। যখন স্কিমায় পরিবর্তন আনা হয়, তখন তার একটি নতুন সংস্করণ তৈরি হয়, যাতে স্কিমার প্রতিটি সংস্করণের রেকর্ড রাখা যায় এবং ব্যবহার করা যায়।

Avro-তে Versioning এর ভূমিকা:

  1. স্কিমার রিভিশন ট্র্যাকিং: যখন স্কিমা পরিবর্তন করা হয়, প্রতিটি সংস্করণের জন্য একটি নতুন স্কিমা রিভিশন তৈরি হয়। স্কিমা রেজিস্ট্রিতে প্রতিটি সংস্করণের হালনাগাদ তথ্য সংরক্ষিত থাকে।
  2. স্কিমা রিভিশন: যখন স্কিমার মধ্যে কোনো পরিবর্তন হয়, Avro নতুন সংস্করণের জন্য রিভিশন নম্বর জেনারেট করে। এটি নতুন এবং পুরানো সংস্করণের মধ্যে সঠিক ম্যাচ খুঁজে বের করতে সাহায্য করে।

উদাহরণ: স্কিমা সংস্করণ

ধরা যাক, প্রথম স্কিমা সংস্করণ ছিল এমন:

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

এবং দ্বিতীয় সংস্করণে, একটি নতুন ফিল্ড যোগ করা হয়েছে:

{
  "type": "record",
  "name": "Employee",
  "fields": [
    {"name": "id", "type": "int"},
    {"name": "name", "type": "string"},
    {"name": "age", "type": "int", "default": 30}
  ]
}

Avro একে একটি নতুন সংস্করণ হিসেবে ট্র্যাক করবে এবং পুরানো ডেটাকে নতুন স্কিমা অনুযায়ী প্রসেস করবে।


Schema Evolution এবং Versioning-এ কিছু সাধারণ নিয়ম

  1. নতুন ফিল্ড যোগ করা: নতুন ফিল্ড যোগ করা হলে, তাকে একটি ডিফল্ট মান দিতে হবে। যদি ডিফল্ট মান না দেওয়া হয়, তবে এটি পুরানো ডেটার সাথে সামঞ্জস্যপূর্ণ হবে না।
  2. ফিল্ড মুছে ফেলা: যদি কোনো ফিল্ড মুছে ফেলা হয়, তবে পুরানো স্কিমার ডেটা সেই ফিল্ডটি মিস করবে। এই কারণে, ফিল্ড মুছে ফেলার আগে এটি গুরুত্ব সহকারে বিবেচনা করা উচিত।
  3. ফিল্ড টাইপ পরিবর্তন করা: একটি ফিল্ডের টাইপ পরিবর্তন করা হলে, এই পরিবর্তনটি পুরানো ডেটার সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে। এটি শুধুমাত্র তখনই করা উচিত যখন আপনি নিশ্চিত যে সমস্ত ডেটা নতুন টাইপের সাথে সামঞ্জস্যপূর্ণ।

সারাংশ

Schema Evolution এবং Versioning অ্যাপাচি অ্যাভ্রোর (Apache Avro) গুরুত্বপূর্ণ বৈশিষ্ট্য যা স্কিমাতে পরিবর্তন আনা হলেও পুরানো ডেটা সঠিকভাবে প্রসেস করার ক্ষমতা প্রদান করে। Avro স্কিমা ইভোলিউশনের মাধ্যমে নতুন ফিল্ড যোগ করা, পুরানো ফিল্ড অপসারণ করা এবং ডিফল্ট মান প্রদান করার মতো পরিবর্তন করা সম্ভব, যা স্কিমা সংস্করণের সমর্থন করে। স্কিমা ইভোলিউশনের মাধ্যমে ডেটা সঠিকভাবে প্রসেসিংয়ের সুবিধা মিললেও, কিছু সীমাবদ্ধতা এবং নিয়ম রয়েছে, যা নির্দিষ্টভাবে মেনে চলতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...