FlatBuffers Schema হল একটি ডেটা মডেল যা FlatBuffers ডেটা সিরিয়ালাইজেশন ফরম্যাটে ডেটার কাঠামো সংজ্ঞায়িত করে। এটি ডেটার বিভিন্ন অংশ এবং তাদের মধ্যে সম্পর্ক কিভাবে হবে তা নির্ধারণ করে। FlatBuffers ব্যবহার করার সময়, স্কিমা ডিফাইন করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেটা সংরক্ষণ এবং স্থানান্তর করার প্রক্রিয়াকে সহজ করে।
FlatBuffers Schema এর মৌলিক ধারণা
Namespace: স্কিমার নামকরণের জন্য একটি নামস্থান উল্লেখ করা হয়। এটি স্কিমা এবং ডেটার মধ্যে সংঘর্ষ এড়াতে সাহায্য করে।
Table: এটি FlatBuffers এর মূল ডেটা কাঠামো। একটি টেবিল একাধিক ফিল্ড ধারণ করতে পারে, যেখানে প্রতিটি ফিল্ডের নাম এবং টাইপ উল্লেখ করা হয়।
Vector: এটি একাধিক আইটেম ধারণ করার জন্য ব্যবহৃত হয়, যেমন একটি সংখ্যা বা স্ট্রিংয়ের তালিকা।
Root Type: এটি নির্দেশ করে যে কোন টেবিল ডেটার মূল (root) প্রকার হবে।
উদাহরণ: FlatBuffers Schema তৈরি
নিচে একটি উদাহরণ FlatBuffers স্কিমা দেখানো হলো যা বিভিন্ন ডেটা ফিল্ড সহ একটি "Monster" টেবিল সংজ্ঞায়িত করে:
namespace Game;
// Monster টেবিলের সংজ্ঞা
table Monster {
name: string; // মনস্টারের নাম
hp: int; // স্বাস্থ্য পয়েন্ট
mana: int; // ম্যানা পয়েন্ট
inventory: [string]; // মনস্টারের ইনভেন্টরি (আইটেমের তালিকা)
}
// Root Type নির্ধারণ
root_type Monster;
FlatBuffers Schema এর মূল উপাদান
Namespace:
- এটি ব্যবহার করে স্কিমার নামস্থান নির্ধারণ করতে পারেন। এটি আপনাকে একাধিক স্কিমা নিয়ে কাজ করতে সাহায্য করে।
Table Definition:
- প্রতিটি টেবিলের মধ্যে বিভিন্ন ফিল্ড থাকতে পারে। আপনি ফিল্ডের নাম এবং টাইপ উল্লেখ করেন।
Field Types:
- FlatBuffers বিভিন্ন ডেটা টাইপ সমর্থন করে, যেমন:
string: পাঠ্য ডেটাint,float: সংখ্যাbool: বুলিয়ান মান (সত্য/মিথ্যা)vector: তালিকা বা অ্যারের জন্যtable: অন্যান্য টেবিলের জন্য
ডেটা সংরক্ষণ এবং তৈরি করা
একবার স্কিমা তৈরি হলে, আপনি FlatBuffer Builder ব্যবহার করে ডেটা তৈরি করতে পারেন। নিচে C++ এ একটি উদাহরণ দেওয়া হলো যেখানে FlatBuffers স্কিমা ব্যবহার করে একটি মনস্টার তৈরি করা হয়েছে।
C++ কোড উদাহরণ
#include "monster_generated.h" // FlatBuffers জেনারেটেড ফাইল
#include <iostream>
#include <fstream>
int main() {
// FlatBufferBuilder তৈরি করা
flatbuffers::FlatBufferBuilder builder;
// ইনভেন্টরি তৈরি করা
auto inventory = builder.CreateVector(
builder.CreateString("Sword"),
builder.CreateString("Shield"),
builder.CreateString("Potion")
);
// Monster তৈরি করা
Game::MonsterBuilder monster_builder(builder);
monster_builder.add_name(builder.CreateString("Orc"));
monster_builder.add_hp(100);
monster_builder.add_mana(50);
monster_builder.add_inventory(inventory);
auto monster = monster_builder.Finish();
// স্কিমা অনুযায়ী ডেটা সেভ করা
builder.Finish(monster);
// ডেটা ফাইল লেখার জন্য
std::ofstream output("monster.bin", std::ios::binary);
output.write(reinterpret_cast<const char*>(builder.GetBufferPointer()), builder.GetSize());
output.close();
std::cout << "Monster data saved!" << std::endl;
return 0;
}
উপসংহার
FlatBuffers Schema ডেটা সংরক্ষণ এবং স্থানান্তরের জন্য একটি শক্তিশালী উপায় প্রদান করে। এটি ডেটার কাঠামো সঠিকভাবে সংজ্ঞায়িত করতে সহায়ক এবং বিভিন্ন প্রোগ্রামিং ভাষায় ব্যবহৃত হতে পারে। স্কিমা ডেফিনিশন এবং ডেটা তৈরির প্রক্রিয়া সহজ এবং কার্যকরী, যা FlatBuffers কে আধুনিক সফটওয়্যার অ্যাপ্লিকেশনে একটি জনপ্রিয় পছন্দ করে তোলে।
FlatBuffers Schema কী এবং কিভাবে কাজ করে
FlatBuffers Schema হল একটি নির্দিষ্ট কাঠামো যা FlatBuffers ডেটা সিরিয়ালাইজেশনের জন্য ডেটার ফর্ম্যাট এবং কাঠামো সংজ্ঞায়িত করে। এটি একটি .fbs এক্সটেনশনে লেখা হয় এবং এতে ডেটার বিভিন্ন ফিল্ড, টাইপ, এবং সম্পর্কের তথ্য অন্তর্ভুক্ত থাকে। FlatBuffers Schema এর মূল উদ্দেশ্য হল ডেটা সংরক্ষণ এবং ডেটা অ্যাক্সেসের প্রক্রিয়াকে সহজতর করা।
FlatBuffers Schema-এর উপাদান
FlatBuffers Schema-এর প্রধান উপাদানগুলো নিম্নলিখিত:
Namespace:
- এটি একটি নাম প্রাঙ্গণ তৈরি করে, যা একই নামের বিভিন্ন উপাদানের মধ্যে সংঘর্ষ প্রতিরোধ করে।
Tables:
- টেবিলগুলি মূল ডেটা কাঠামো যা বিভিন্ন ফিল্ড ধারণ করে। প্রতিটি টেবিল একটি অবজেক্টের মতো কাজ করে এবং এর মধ্যে বিভিন্ন ধরনের ডেটা থাকতে পারে।
Structs:
- Structs হল ছোট ডেটা ইউনিট যা একাধিক ফিল্ড ধারণ করে, কিন্তু টেবিলের মতো সম্বোধন করা হয় না। Structs সাধারণত স্থানীয় ডেটার প্রতিনিধিত্ব করে।
Enums:
- Enum হল একটি নির্দিষ্ট সেট মানের তালিকা যা বিভিন্ন অবস্থান চিহ্নিত করার জন্য ব্যবহৃত হয়।
Vectors:
- Vectors হল ডেটার একটি সংগ্রহ যা একাধিক ফিল্ড ধারণ করে। এটি একটি ডেটা টাইপের তালিকা।
Root Type:
- Schema-র শেষে মূল ধরনের (root type) সংজ্ঞায়িত করা হয়, যা প্রাথমিক ডেটা ধারণ করে।
FlatBuffers Schema কিভাবে কাজ করে
FlatBuffers Schema কাজ করার প্রক্রিয়াটি নিম্নলিখিত ধাপগুলো অন্তর্ভুক্ত করে:
স্কিমা সংজ্ঞায়িত করা:
- ডেটার কাঠামো, টাইপ এবং সম্পর্ক স্কিমা ফাইলের মাধ্যমে নির্ধারণ করা হয়।
ডেটা সিরিয়ালাইজ করা:
- FlatBuffers কম্পাইলার (
flatc) ব্যবহার করে স্কিমা ফাইলটি কম্পাইল করা হয়, যা বাইনারি ডেটা তৈরি করে। এই ডেটা দ্রুত পঠনযোগ্য এবং কম মেমোরি ব্যবহার করে।
ডেটা অ্যাক্সেস করা:
- FlatBuffers লাইব্রেরি ব্যবহার করে উৎপন্ন বাইনারি ডেটা অ্যাক্সেস করা হয়। এই সময় কোন মধ্যবর্তী অবজেক্ট তৈরি করার প্রয়োজন হয় না, ফলে Zero-Copy অ্যাক্সেস সম্ভব হয়।
ডেটা সংরক্ষণ ও পুনরুদ্ধার:
- ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়া খুব দ্রুত হয় এবং এটি সহজে বিভিন্ন প্ল্যাটফর্মে স্থানান্তরিত করা যায়।
উদাহরণ Schema
protobuf
Copy code
// MyGame.fbs
namespace MyGame.Sample;
table Monster {
id: int;
name: string;
health: float;
inventory: [string];
position: Vector3;
weapon: WeaponType;
}
struct Vector3 {
x: float;
y: float;
z: float;
}
enum WeaponType {
None = 0,
Sword = 1,
Bow = 2,
Axe = 3
}
root_type Monster;
সারসংক্ষেপ
- FlatBuffers Schema: ডেটার কাঠামো এবং টাইপ সংজ্ঞায়িত করে।
- উপাদান: Namespace, Tables, Structs, Enums, Vectors, এবং Root Type।
- কর্মপ্রণালী: স্কিমা সংজ্ঞায়িত করা, ডেটা সিরিয়ালাইজ করা, এবং ডেটা অ্যাক্সেস করা।
FlatBuffers Schema একটি কার্যকরী ডেটা বিন্যাস তৈরি করতে সহায়ক, যা গেম ডেভেলপমেন্ট এবং উচ্চ কার্যক্ষমতা সম্পন্ন অ্যাপ্লিকেশনগুলিতে দ্রুত এবং কার্যকরী ডেটা প্রক্রিয়াকরণের জন্য অপরিহার্য।
FlatBuffers ডেটা মডেলিংয়ের জন্য বিভিন্ন ধরনের ডেটা স্ট্রাকচার সমর্থন করে, যেমন Scalars, Tables, Structs, এবং Enums। প্রতিটি উপাদান নিজস্ব উদ্দেশ্য এবং ব্যবহারের ক্ষেত্র রয়েছে। নিচে এই উপাদানগুলোর সংক্ষিপ্ত বর্ণনা এবং উদাহরণ দেওয়া হলো।
১. Scalars
Scalars হলো মৌলিক ডেটা টাইপ, যা সাধারণত একটি একক মান ধারণ করে। FlatBuffers বিভিন্ন স্কেলার টাইপ সমর্থন করে, যেমন:
- int8, int16, int32, int64: বিভিন্ন সাইজের signed integer।
- uint8, uint16, uint32, uint64: বিভিন্ন সাইজের unsigned integer।
- float, double: ভাসমান পয়েন্ট সংখ্যা।
- bool: বুলিয়ান মান (সত্য/মিথ্যা)।
- string: পাঠ্য ডেটা।
উদাহরণ:
table Example {
id: int32; // স্কেলার int32
score: float; // স্কেলার float
isActive: bool; // স্কেলার boolean
}
২. Tables
Tables হলো FlatBuffers এর প্রধান ডেটা কাঠামো। একটি টেবিল একাধিক ফিল্ড ধারণ করতে পারে এবং ফিল্ডগুলি বিভিন্ন ডেটা টাইপের হতে পারে। টেবিলের ফিল্ডগুলি অপশনাল হয়, অর্থাৎ একটি টেবিল তৈরি করতে হলে সব ফিল্ড পূরণ করা বাধ্যতামূলক নয়।
উদাহরণ:
table Monster {
name: string; // মনস্টারের নাম
hp: int; // স্বাস্থ্য পয়েন্ট
mana: int; // ম্যানা পয়েন্ট
inventory: [string]; // মনস্টারের ইনভেন্টরি (স্ট্রিং এর অ্যারে)
}
৩. Structs
Structs হল FlatBuffers এর একটি ডেটা কাঠামো যা একাধিক ফিল্ড ধারণ করে, তবে এটি টেবিলের মতো মেমরি-অপ্টিমাইজড নয়। Structs কে টেবিলের মতো ভেক্টর বা অ্যালের মাধ্যমে ব্যবহার করা যায়। Structs এর ফিল্ডগুলি সবসময় পূর্ণ হতে হবে এবং সেগুলি টেবিলের মতো অপশনাল নয়।
উদাহরণ:
struct Position {
x: float; // X কোঅর্ডিনেট
y: float; // Y কোঅর্ডিনেট
}
table Monster {
name: string;
position: Position; // Position স্ট্রাক্ট
}
৪. Enums
Enums হল একটি ডেটা টাইপ যা একটি নির্দিষ্ট সেটের মধ্যে মান নির্ধারণ করে। Enums ব্যবহারের মাধ্যমে কোডের পড়ার ক্ষমতা এবং বোধগম্যতা বৃদ্ধি পায়।
উদাহরণ:
enum MonsterType: byte {
Goblin = 0,
Orc = 1,
Dragon = 2
}
table Monster {
name: string;
type: MonsterType; // MonsterType Enum
}
সম্পূর্ণ FlatBuffers স্কিমা উদাহরণ
নিচে Scalars, Tables, Structs, এবং Enums ব্যবহার করে একটি সম্পূর্ণ FlatBuffers স্কিমার উদাহরণ দেওয়া হলো:
namespace Game;
// Enum এর সংজ্ঞা
enum MonsterType: byte {
Goblin = 0,
Orc = 1,
Dragon = 2
}
// Struct এর সংজ্ঞা
struct Position {
x: float; // X কোঅর্ডিনেট
y: float; // Y কোঅর্ডিনেট
}
// Table এর সংজ্ঞা
table Monster {
name: string; // মনস্টারের নাম
hp: int; // স্বাস্থ্য পয়েন্ট
mana: int; // ম্যানা পয়েন্ট
position: Position; // অবস্থান স্ট্রাক্ট
type: MonsterType; // মনস্টারের প্রকার (Enum)
}
// Root Type নির্ধারণ
root_type Monster;
উপসংহার
FlatBuffers এ Scalars, Tables, Structs, এবং Enums এই ডেটা মডেলিং এর বিভিন্ন উপাদানগুলোর ভূমিকা নির্ধারণ করে। এগুলোর ব্যবহারের মাধ্যমে আপনি শক্তিশালী এবং কার্যকরী ডেটা কাঠামো তৈরি করতে পারেন, যা আধুনিক সফটওয়্যার অ্যাপ্লিকেশনের জন্য অপরিহার্য। FlatBuffers এর এই বৈশিষ্ট্যগুলি ডেটার কার্যকরী ব্যবহার নিশ্চিত করে এবং ডেটা স্থানান্তর ও সংরক্ষণকে সহজ করে।
FlatBuffers Schema ডিফাইন এবং এর মাধ্যমে ডাটা গঠন
FlatBuffers Schema ডেটার কাঠামো এবং টাইপ সংজ্ঞায়িত করতে ব্যবহৃত হয়। এটি একটি .fbs ফাইল ফরম্যাটে লেখা হয়, যা ডেটার বিভিন্ন ফিল্ড, সম্পর্ক, এবং তাদের টাইপ নির্ধারণ করে। Schema ডিফাইন করা হলে, তা থেকে ডেটার জন্য কোড উৎপন্ন করা যায় যা ডেটাকে কার্যকরভাবে সংরক্ষণ ও অ্যাক্সেস করতে সাহায্য করে।
Schema ডিফাইন করার প্রক্রিয়া
১. Namespace
Namespace একটি নামের প্রাঙ্গণ তৈরি করে, যা নাম সংঘর্ষ প্রতিরোধ করতে সহায়ক। একটি Schema-তে namespace ব্যবহার করা ভাল অভ্যাস।
namespace MyGame.Sample;
২. Tables
Tables হল মূল ডেটা কাঠামো যা বিভিন্ন ফিল্ড ধারণ করে। প্রতিটি টেবিল একটি অবজেক্টের মতো কাজ করে এবং এর মধ্যে বিভিন্ন ধরনের ডেটা থাকতে পারে।
table Monster {
id: int; // সঠিক আইডি
name: string; // মনস্টারের নাম
health: float; // স্বাস্থ্য মান
inventory: [string]; // ইনভেন্টরির আইটেমের তালিকা
}
৩. Structs
Structs হল ছোট ডেটা ইউনিট যা একাধিক ফিল্ড ধারণ করে, কিন্তু টেবিলের মতো সম্বোধন করা হয় না। Structs সাধারণত স্থানীয় ডেটার প্রতিনিধিত্ব করে।
struct Vector3 {
x: float; // X অক্ষের মান
y: float; // Y অক্ষের মান
z: float; // Z অক্ষের মান
}
৪. Enums
Enum হল একটি নির্দিষ্ট সেট মানের তালিকা যা বিভিন্ন অবস্থান চিহ্নিত করার জন্য ব্যবহৃত হয়।
enum WeaponType {
None = 0, // কোন অস্ত্র নেই
Sword = 1, // তরবারি
Bow = 2, // তীর
Axe = 3 // কুঠার
}
৫. Vectors
Vectors হল ডেটার একটি সংগ্রহ যা একাধিক ফিল্ড ধারণ করে। এটি বিভিন্ন টাইপের ডেটার একটি তালিকা হতে পারে।
table Player {
id: int; // প্লেয়ারের আইডি
name: string; // প্লেয়ারের নাম
position: Vector3; // প্লেয়ারের অবস্থান
inventory: [WeaponType]; // অস্ত্রের তালিকা
}
৬. Root Type
Schema-র শেষে মূল ধরনের (root type) সংজ্ঞায়িত করা হয়, যা প্রাথমিক ডেটা ধারণ করে।
root_type Monster; // মূল ধরনের সংজ্ঞা
সম্পূর্ণ Schema উদাহরণ
নিচে একটি FlatBuffers Schema-এর সম্পূর্ণ উদাহরণ দেওয়া হলো:
// MyGame.fbs
namespace MyGame.Sample;
table Monster {
id: int; // মনস্টারের আইডি
name: string; // মনস্টারের নাম
health: float; // মনস্টারের স্বাস্থ্য
inventory: [string]; // মনস্টারের ইনভেন্টরি
position: Vector3; // 3D অবস্থান
weapon: WeaponType; // ব্যবহার করা অস্ত্র
}
struct Vector3 {
x: float; // X অক্ষের মান
y: float; // Y অক্ষের মান
z: float; // Z অক্ষের মান
}
enum WeaponType {
None = 0, // কোন অস্ত্র নেই
Sword = 1, // তরবারি
Bow = 2, // তীর
Axe = 3 // কুঠার
}
// মূল ধরনের সংজ্ঞা
root_type Monster;
Schema থেকে ডেটা গঠন
FlatBuffers কম্পাইলার (flatc) ব্যবহার করে স্কিমা ফাইলটি কম্পাইল করুন:
এই কমান্ডটি C++ কোড উৎপন্ন করবে যা FlatBuffers ডেটা স্ট্রাকচার তৈরি এবং ব্যবহারের জন্য প্রস্তুত থাকে।
flatc --cpp MyGame.fbs
ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করুন:
একটি C++ প্রোগ্রামে উৎপন্ন কোড ব্যবহার করে ডেটা তৈরি এবং পড়ার উদাহরণ:
#include "monster_generated.h" // উৎপন্ন FlatBuffers ফাইল
using namespace MyGame::Sample;
int main() {
flatbuffers::FlatBufferBuilder builder;
// Monster টেবিল তৈরি করা
auto name = builder.CreateString("Orc");
MonsterBuilder monster_builder(builder);
monster_builder.add_id(1);
monster_builder.add_name(name);
monster_builder.add_health(100.0f);
monster_builder.add_position(Vector3(1.0f, 2.0f, 3.0f)); // Vector3 অবজেক্ট তৈরি
monster_builder.add_weapon(WeaponType::Sword);
auto orc = monster_builder.Finish();
builder.Finish(orc);
// বাইনারি ডেটা পঠন
const Monster* monster = GetMonster(builder.GetBufferPointer());
std::cout << "Monster ID: " << monster->id() << ", Name: " << monster->name()->c_str() << ", Health: " << monster->health() << std::endl;
return 0;
}
সারসংক্ষেপ
- FlatBuffers Schema: ডেটার কাঠামো এবং টাইপ সংজ্ঞায়িত করে।
- উপাদান: Namespace, Tables, Structs, Enums, Vectors, এবং Root Type।
- কর্মপ্রণালী: স্কিমা সংজ্ঞায়িত করা, ডেটা সিরিয়ালাইজ করা, এবং ডেটা অ্যাক্সেস করা।
FlatBuffers Schema ব্যবহার করে দ্রুত এবং কার্যকরী ডেটা গঠন সম্ভব, যা গেম ডেভেলপমেন্ট এবং উচ্চ কার্যক্ষমতা সম্পন্ন অ্যাপ্লিকেশনগুলিতে অত্যন্ত উপকারী।
FlatBuffers Schema লেখার প্রক্রিয়া একটি গুরুত্বপূর্ণ পদক্ষেপ, যা ডেটার কাঠামো নির্ধারণ করে এবং এর মাধ্যমে আপনি ডেটাকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারবেন। নিচে FlatBuffers Schema লেখার প্রক্রিয়া এবং একটি উদাহরণ সহ ধাপে ধাপে নির্দেশনা দেওয়া হলো।
Schema লেখার প্রক্রিয়া
Namespace নির্ধারণ: আপনার স্কিমার জন্য একটি নামস্থান নির্ধারণ করুন। এটি অন্যান্য স্কিমা এবং ডেটা স্ট্রাকচারের সাথে সংঘর্ষ এড়াতে সাহায্য করে।
Table তৈরি করা: আপনার ডেটা মডেলিংয়ের জন্য টেবিল তৈরি করুন। প্রতিটি টেবিলের মধ্যে ফিল্ড এবং তাদের ডেটা টাইপ উল্লেখ করুন।
Structs তৈরি করা: প্রয়োজনে আপনার টেবিলের মধ্যে স্ট্রাক্টস সংজ্ঞায়িত করুন। স্ট্রাক্টগুলি ছোট এবং একক উদ্দেশ্যের জন্য ব্যবহৃত হয়।
Enums তৈরি করা: যদি আপনার ডেটাতে নির্দিষ্ট সেটের মধ্যে মান থাকে, তাহলে Enum সংজ্ঞায়িত করুন।
Root Type নির্ধারণ: ফাইলের শেষের দিকে, আপনি যে টেবিলটি মূল (root) টাইপ হিসাবে ব্যবহার করতে চান তা নির্ধারণ করুন।
উদাহরণ: FlatBuffers Schema তৈরি করা
এখন আমরা একটি উদাহরণ স্কিমা তৈরি করবো যেখানে একটি "Monster" টেবিল থাকবে যা বিভিন্ন তথ্য ধারণ করে।
Step 1: Namespace নির্ধারণ
namespace Game;
Step 2: Table তৈরি করা
table Monster {
name: string; // মনস্টারের নাম
hp: int; // স্বাস্থ্য পয়েন্ট
mana: int; // ম্যানা পয়েন্ট
inventory: [string]; // মনস্টারের ইনভেন্টরি (স্ট্রিং এর অ্যারে)
}
Step 3: Structs তৈরি করা (যদি প্রয়োজন হয়)
struct Position {
x: float; // X কোঅর্ডিনেট
y: float; // Y কোঅর্ডিনেট
}
Step 4: Enums তৈরি করা
enum MonsterType: byte {
Goblin = 0,
Orc = 1,
Dragon = 2
}
Step 5: Root Type নির্ধারণ
root_type Monster;
সম্পূর্ণ Schema
এখন আমরা উপরের অংশগুলো একত্রিত করে একটি সম্পূর্ণ FlatBuffers স্কিমা তৈরি করবো:
namespace Game;
// Enum এর সংজ্ঞা
enum MonsterType: byte {
Goblin = 0,
Orc = 1,
Dragon = 2
}
// Struct এর সংজ্ঞা
struct Position {
x: float; // X কোঅর্ডিনেট
y: float; // Y কোঅর্ডিনেট
}
// Table এর সংজ্ঞা
table Monster {
name: string; // মনস্টারের নাম
hp: int; // স্বাস্থ্য পয়েন্ট
mana: int; // ম্যানা পয়েন্ট
inventory: [string]; // মনস্টারের ইনভেন্টরি
position: Position; // অবস্থান স্ট্রাক্ট
type: MonsterType; // মনস্টারের প্রকার
}
// Root Type নির্ধারণ
root_type Monster;
Schema ফাইল সংরক্ষণ
এখন এই স্কিমা ফাইলটি একটি .fbs ফরম্যাটে সংরক্ষণ করুন, যেমন monster.fbs।
Schema ফাইল থেকে কোড জেনারেট করা
FlatBuffers স্কিমা ফাইল থেকে কোড জেনারেট করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
flatc --cpp monster.fbs
এটি C++ কোড জেনারেট করবে যা FlatBuffers এর মাধ্যমে ডেটা পরিচালনা করতে সক্ষম।
উপসংহার
FlatBuffers স্কিমা লেখার প্রক্রিয়া ডেটার কাঠামো তৈরি এবং ডেটা ব্যবস্থাপনার জন্য একটি কার্যকরী উপায় প্রদান করে। উপরের উদাহরণটি আপনাকে FlatBuffers স্কিমা লেখার জন্য একটি পরিষ্কার ধারণা প্রদান করে, যা আপনাকে ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার জন্য প্রস্তুত করবে।
Read more