Erlang-এ ETS Table Creation এবং Data Management
Erlang-এ ETS (Erlang Term Storage) টেবিল হল একটি ইন-মেমরি ডেটাবেস, যা ডেটা দ্রুত সঞ্চয় এবং অ্যাক্সেস করতে ব্যবহৃত হয়। ETS টেবিলগুলো অনেকটাই hash tables বা associative arrays এর মতো কাজ করে এবং এগুলি Erlang প্রোগ্রামিং ভাষার একটি গুরুত্বপূর্ণ অংশ। এটি মূলত দ্রুত ডেটা অ্যাক্সেসের জন্য ব্যবহৃত হয় এবং এতে একাধিক ধরনের অপারেশন করতে সক্ষম, যেমন ইনসার্ট, ডিলিট, আপডেট, এবং অনুসন্ধান।
Erlang-এ ETS tables সাধারণত processes এর মধ্যে শেয়ার করা হয় এবং এটি ডিস্ট্রিবিউটেড সিস্টেমে process communication এবং data management এর জন্য একটি শক্তিশালী টুল।
1. ETS Table Creation (ETS টেবিল তৈরি করা)
Erlang-এ একটি ETS table তৈরি করতে ets:new/2 ফাংশন ব্যবহার করা হয়। এটি একটি নতুন ETS টেবিল তৈরি করে এবং টেবিলের নাম ও টাইপ নির্ধারণ করে।
ফাংশনের সিগনেচার:
ets:new(TableName, Options)- TableName: টেবিলের নাম যা আপনি দিতে চান।
- Options: টেবিলের বিভিন্ন বৈশিষ্ট্য নির্ধারণ করে। কিছু সাধারণ অপশন:
set: ডুপ্লিকেট এন্ট্রি অনুমোদিত টেবিল।ordered_set: ডুপ্লিকেট এন্ট্রি নিষিদ্ধ এবং এন্ট্রিগুলি সজ্জিত থাকে।bag: ডুপ্লিকেট এন্ট্রি অনুমোদিত কিন্তু এন্ট্রিগুলি সজ্জিত থাকে না।duplicate_bag: ডুপ্লিকেট এন্ট্রি অনুমোদিত এবং এন্ট্রিগুলি সজ্জিত থাকে না।
উদাহরণ: ETS Table তৈরি
1> Table = ets:new(my_table, [set, public, named_table]).
my_tableএখানে, my_table নামক একটি set টাইপের public এবং named_table আর্জুমেন্ট সহ একটি ETS টেবিল তৈরি করা হয়েছে।
set: ডুপ্লিকেট এন্ট্রি অনুমোদিত।public: এই টেবিলটি অন্য প্রক্রিয়া থেকেও অ্যাক্সেস করা যেতে পারে।named_table: টেবিলটি একটি নির্দিষ্ট নামের সাথে পরিচিত থাকে।
2. Data Insertion (ডেটা সন্নিবেশ করা)
Erlang-এ ETS টেবিলে ডেটা সন্নিবেশ করতে ets:insert/2 ফাংশন ব্যবহার করা হয়। ডেটা সন্নিবেশের সময় একটি টুপল আকারে ডেটা প্রদান করা হয়।
ফাংশনের সিগনেচার:
ets:insert(TableName, Tuple)- TableName: টেবিলের নাম।
- Tuple: ডেটা টুপল আকারে দিতে হয়, যেমন
{key, value}।
উদাহরণ: ডেটা সন্নিবেশ
1> ets:insert(my_table, {name, "Alice"}).
true
2> ets:insert(my_table, {age, 30}).
trueএখানে, {name, "Alice"} এবং {age, 30} টুপল দুটি my_table টেবিলে সন্নিবেশ করা হয়েছে।
3. Data Retrieval (ডেটা পুনরুদ্ধার)
Erlang-এ ETS টেবিল থেকে ডেটা পুনরুদ্ধার করতে ets:lookup/2 বা ets:match/2 ফাংশন ব্যবহার করা হয়।
3.1 ets:lookup/2 (একটি কী অনুসারে ডেটা পাওয়া)
এই ফাংশনটি নির্দিষ্ট কী দিয়ে ডেটা খুঁজে বের করতে ব্যবহৃত হয়।
ets:lookup(TableName, Key)- TableName: টেবিলের নাম।
- Key: যে কী দিয়ে আপনি ডেটা খুঁজবেন।
উদাহরণ:
1> ets:lookup(my_table, name).
[{name, "Alice"}]
2> ets:lookup(my_table, age).
[{age, 30}]এখানে, name এবং age কী দিয়ে my_table টেবিল থেকে ডেটা পুনরুদ্ধার করা হয়েছে।
3.2 ets:match/2 (ম্যাচিং কন্ডিশন ব্যবহার করে ডেটা পাওয়া)
ets:match/2 ফাংশনটি নির্দিষ্ট প্যাটার্নের মাধ্যমে ডেটা খুঁজে বের করতে ব্যবহৃত হয়। এটি অনেক শক্তিশালী এবং আপনি আরও জটিল প্যাটার্ন ব্যবহার করতে পারেন।
ets:match(TableName, Pattern)- TableName: টেবিলের নাম।
- Pattern: যে প্যাটার্ন দিয়ে আপনি ডেটা খুঁজবেন (এটি একটি মাচিং প্যাটার্ন হতে পারে, যেমন
{Key, Value})।
উদাহরণ:
1> ets:match(my_table, {'_', 'Alice'}).
[{name, "Alice"}]
2> ets:match(my_table, {age, '_'}).
[{age, 30}]এখানে, {name, "Alice"} এবং {age, 30} প্যাটার্ন ব্যবহার করে ডেটা খুঁজে বের করা হয়েছে।
4. Data Deletion (ডেটা মুছে ফেলা)
Erlang-এ ETS টেবিল থেকে ডেটা মুছে ফেলতে ets:delete/2 ফাংশন ব্যবহার করা হয়।
ফাংশনের সিগনেচার:
ets:delete(TableName, Key)- TableName: টেবিলের নাম।
- Key: যে কীটি মুছে ফেলতে চান।
উদাহরণ:
1> ets:delete(my_table, name).
true
2> ets:lookup(my_table, name).
[]এখানে, name কীটি মুছে ফেলা হয়েছে এবং পরবর্তী সময়ে ets:lookup/2 ব্যবহার করে দেখা গেছে যে এটি আর টেবিলের মধ্যে নেই।
5. Table Deletion (টেবিল মুছে ফেলা)
যদি একটি ETS টেবিল পুরোপুরি মুছে ফেলতে চান, তবে ets:delete/1 ফাংশন ব্যবহার করা হয়।
উদাহরণ:
1> ets:delete(my_table).
trueএখানে, my_table পুরোপুরি মুছে ফেলা হয়েছে।
6. Table Attributes (টেবিলের বৈশিষ্ট্য)
Erlang-এ ETS টেবিলের কিছু অতিরিক্ত বৈশিষ্ট্য থাকতে পারে, যেমন:
- named_table: টেবিলের নাম ব্যবহার করে অ্যাক্সেস করা যেতে পারে।
- public/private: টেবিলটি পাবলিক বা প্রাইভেট হতে পারে, অর্থাৎ, অন্য প্রক্রিয়া থেকে টেবিলটি অ্যাক্সেসযোগ্য হবে কি না।
এটি টেবিল তৈরির সময় নির্ধারণ করা হয় এবং টেবিলের ডেটা শেয়ার করা যায় বা অন্য প্রক্রিয়ার জন্য সীমিত করা যায়।
উপসংহার
ETS (Erlang Term Storage) হল Erlang-এ একটি শক্তিশালী ইন-মেমরি ডেটাবেস সিস্টেম যা ডেটা দ্রুত সঞ্চয় এবং অ্যাক্সেস করতে ব্যবহৃত হয়। এর সাহায্যে ডেটা ইনসার্ট, রিট্রিভ, ডিলিট এবং অন্যান্য অপারেশন খুব সহজে করা যায়। ETS টেবিলের মাধ্যমে আপনি দ্রুত এবং দক্ষভাবে ডেটা ম্যানেজমেন্ট করতে পারেন, যা বিশেষত কনকারেন্ট সিস্টেম এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরির জন্য গুরুত্বপূর্ণ।
Read more