Avro Schema Evolution এর ধারণা

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

413

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


Avro Schema Evolution কী?

Schema Evolution হল সেই প্রক্রিয়া যেখানে একটি ডেটার স্কিমার কাঠামো পরিবর্তিত হয়, কিন্তু পুরনো ডেটা অপরিবর্তিত থাকে এবং নতুন স্কিমার সাথে পুরো সিস্টেমে সঠিকভাবে কাজ করে। Avro স্কিমা ইভোলিউশনের মাধ্যমে ডেটার গঠন (structure) পরিবর্তন করলেও, পুরনো ডেটাকে এখনও ব্যবহারযোগ্য রাখা যায়।

Avro-তে Schema Evolution তিনটি গুরুত্বপূর্ণ ধারণার মাধ্যমে কাজ করে:

  1. Backward Compatibility (পেছনে সঙ্গতিপূর্ণতা): নতুন স্কিমা পুরনো স্কিমার ডেটার সাথে সঙ্গতিপূর্ণ থাকে।
  2. Forward Compatibility (সামনে সঙ্গতিপূর্ণতা): পুরনো স্কিমা নতুন ডেটার সাথে সঙ্গতিপূর্ণ থাকে।
  3. Full Compatibility (সম্পূর্ণ সঙ্গতিপূর্ণতা): নতুন এবং পুরনো স্কিমা একে অপরের সাথে সঙ্গতিপূর্ণ থাকে।

Avro Schema Evolution এবং Compatibility

Avro স্কিমার ইভোলিউশনের মাধ্যমে, কিছু ক্ষেত্র পরিবর্তন করা, নতুন ক্ষেত্র যোগ করা, পুরনো ক্ষেত্র অপসারণ করা ইত্যাদি সম্ভব হয়। তবে, এটি করার সময় আপনাকে কিছু মূল compatibility নিয়ম মেনে চলতে হয় যাতে ডেটা সঠিকভাবে প্রক্রিয়া করা যায় এবং কোনো অসঙ্গতি না হয়।

১. Backward Compatibility (পেছনে সঙ্গতিপূর্ণতা)

  • যখন নতুন স্কিমা পুরনো স্কিমার ডেটার সাথে সঙ্গতিপূর্ণ থাকে, তখন তাকে backward compatible বলা হয়।
  • পুরনো ডেটা নতুন স্কিমা অনুযায়ী ডেসিরিয়ালাইজ করা সম্ভব হবে।

উদাহরণ: একটি ফিল্ডের ডিফল্ট মান পরিবর্তন বা একটি নতুন ফিল্ড যোগ করা backward compatibility এ পড়বে, যদি পুরনো ডেটা নতুন স্কিমায় সঠিকভাবে রূপান্তরিত হতে পারে।

২. Forward Compatibility (সামনে সঙ্গতিপূর্ণতা)

  • যখন পুরনো স্কিমা নতুন ডেটার সাথে সঙ্গতিপূর্ণ থাকে, তাকে forward compatible বলা হয়।
  • নতুন ফিল্ডের মান উপস্থিত না থাকলেও পুরনো ডেটা সঠিকভাবে প্রক্রিয়া করা যাবে।

উদাহরণ: যদি নতুন স্কিমায় একটি নতুন ফিল্ড যোগ করা হয়, তবে পুরনো ডেটা সেই ফিল্ডটি নিয়ে কোনো সমস্যা ছাড়াই ডেসিরিয়ালাইজ হবে, কারণ স্কিমায় এই নতুন ফিল্ডটির জন্য null বা ডিফল্ট মান থাকতে পারে।

৩. Full Compatibility (সম্পূর্ণ সঙ্গতিপূর্ণতা)

  • Full compatibility মানে নতুন এবং পুরনো স্কিমা একে অপরের সঙ্গে পুরোপুরি সঙ্গতিপূর্ণ থাকে, অর্থাৎ পুরনো ডেটা নতুন স্কিমায় এবং নতুন ডেটা পুরনো স্কিমায় কোনো সমস্যা ছাড়াই কাজ করবে।

Avro Schema Evolution এর জন্য নিয়ম

Avro স্কিমার ইভোলিউশনের জন্য কিছু সাধারণ নিয়ম রয়েছে, যা মেনে চললে ডেটা সঠিকভাবে ইভোলভ হতে পারে এবং বিভিন্ন স্কিমার মধ্যে compatibility বজায় থাকে।

১. স্কিমা ফিল্ডের নাম পরিবর্তন করা

ফিল্ডের নাম পরিবর্তন করা সাধারণত backward compatibility লঙ্ঘন করতে পারে। তাই এটি এড়িয়ে চলা উচিত বা নাম পরিবর্তন হলে নতুন স্কিমায় পুরনো নামের জন্য ডিফল্ট মান ব্যবহার করতে হবে।

২. নতুন ফিল্ড যোগ করা

নতুন ফিল্ড যোগ করার সময়, আপনি যদি null টাইপের ডিফল্ট মান ব্যবহার করেন, তবে এটি backward compatibility এর জন্য সুবিধাজনক। পুরনো স্কিমায় এমন ফিল্ডটি উপস্থিত না থাকলেও নতুন ডেটা সঠিকভাবে প্রক্রিয়া হবে।

{
   "name": "age",
   "type": ["null", "int"],
   "default": null
}

এখানে, age ফিল্ডটি নতুন স্কিমায় যোগ করা হয়েছে, তবে এটি optional (null) এবং পুরনো ডেটায় এটি অনুপস্থিত থাকতে পারে।

৩. ফিল্ড মুছে ফেলা

ফিল্ড মুছে ফেললে এটি backward compatibility লঙ্ঘন করতে পারে, কারণ পুরনো ডেটা মুছে ফেলা ফিল্ডটি ধারণ করতে পারে। যদি একটি ফিল্ড মুছে ফেলতে হয়, তবে তার ডিফল্ট মান রাখতে হবে, অথবা ফিল্ডটিকে null টাইপ হিসেবে চিহ্নিত করতে হবে।

৪. ডেটা টাইপ পরিবর্তন করা

ডেটা টাইপ পরিবর্তন করা সাধারণত backward compatibility এবং forward compatibility উভয়ের জন্য ঝুঁকি সৃষ্টি করতে পারে। তাই টাইপ পরিবর্তন করার ক্ষেত্রে সতর্ক থাকতে হবে।

৫. স্কিমার সংযোজন এবং পরিবর্তন

যখন আপনি স্কিমা পরিবর্তন করেন, তবে সর্বদা স্কিমার ইভোলিউশন নিশ্চিত করতে default values ব্যবহার করুন এবং compatibility checks করার জন্য একটি স্কিমা রেজিস্ট্রি (Schema Registry) ব্যবহার করুন।


Avro Schema Evolution উদাহরণ

ধরা যাক, আপনার একটি স্কিমা রয়েছে যা ব্যবহারকারীর নাম এবং বয়স ধারণ করে:

প্রথম স্কিমা (Old Schema)

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

এখন আপনি এই স্কিমায় একটি নতুন ফিল্ড, email যোগ করতে চান:

নতুন স্কিমা (New Schema)

{
   "type": "record",
   "name": "User",
   "fields": [
      {
         "name": "name",
         "type": "string"
      },
      {
         "name": "age",
         "type": "int"
      },
      {
         "name": "email",
         "type": ["null", "string"],
         "default": null
      }
   ]
}

এখানে, email ফিল্ডটি নতুন স্কিমায় যোগ করা হয়েছে এবং null ডিফল্ট মান দেয়া হয়েছে, যার ফলে পুরনো স্কিমার ডেটা নতুন স্কিমায় সঠিকভাবে ডেসিরিয়ালাইজ হতে পারবে।


সারাংশ

Avro Schema Evolution একটি অত্যন্ত গুরুত্বপূর্ণ ফিচার, যা স্কিমার পরিবর্তনের মাধ্যমে ডেটার কাঠামো ইভোলভ করতে সক্ষম হয়। এটি ডেটার গঠন পরিবর্তনের সময়ে পূর্ববর্তী ডেটা এবং নতুন স্কিমার মধ্যে compatibility নিশ্চিত করে। Backward, Forward, এবং Full Compatibility এর মাধ্যমে Avro স্কিমা ইভোলিউশনে সহায়ক হয়ে থাকে, এবং এটি ডেটা হ্যান্ডলিং, ম্যানেজমেন্ট এবং ইভোলিউশনে অত্যন্ত কার্যকরী হয়ে ওঠে।

Content added By
Promotion

Are you sure to start over?

Loading...