HBase তে ডেটা রিড করার জন্য দুটি প্রধান পদ্ধতি ব্যবহার করা হয়: Get এবং Scan। প্রতিটি পদ্ধতি আলাদা পরিস্থিতিতে ব্যবহৃত হয়, এবং তাদের মধ্যে কিছু পার্থক্য রয়েছে। এখানে আমরা HBase তে Get এবং Scan ব্যবহার করার বিস্তারিত আলোচনা করব।
1. Get কমান্ড
Get কমান্ড ব্যবহার করে HBase থেকে নির্দিষ্ট একটি রো (row) এবং তার নির্দিষ্ট কলাম (column) বা কলাম ফ্যামিলি (column family) এর ডেটা রিড করা হয়। এই পদ্ধতিতে আপনি একটি নির্দিষ্ট রো থেকে নির্দিষ্ট ডেটা অ্যাক্সেস করতে পারেন, যা খুবই কার্যকরী যখন আপনি জানেন কোন রো থেকে ডেটা রিট্রিভ করতে হবে।
Get কমান্ডের সিনট্যাক্স:
Get 'table_name', 'row_key'
এখানে:
table_name: আপনার HBase টেবিলের নাম।row_key: আপনি যে রো এর ডেটা দেখতে চান তার রো কীগুলি।
উদাহরণ:
Get 'my_table', 'row1'
এই কমান্ডটি my_table টেবিলের row1 নামক রো এর সমস্ত কলাম রিটার্ন করবে।
কলাম নির্দিষ্ট করে Get:
আপনি যদি নির্দিষ্ট কলাম বা কলাম ফ্যামিলি রিটার্ন করতে চান, তাহলে আপনি কলামের নাম উল্লেখ করতে পারেন।
Get 'my_table', 'row1', {COLUMN => 'column_family:column_name'}
এখানে, {COLUMN => 'column_family:column_name'} দ্বারা আপনি কলাম বা কলাম ফ্যামিলি উল্লেখ করতে পারেন।
2. Scan কমান্ড
Scan কমান্ডটি HBase টেবিলের মধ্যে ডেটা স্ক্যান করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট রেঞ্জের রো বা সমস্ত রো একসঙ্গে স্ক্যান করতে পারে। যখন আপনি পুরো টেবিলের ডেটা রিড করতে চান অথবা কিছু রো রেঞ্জের মধ্যে ডেটা খুঁজতে চান, তখন Scan উপযোগী হয়।
Scan কমান্ডের সিনট্যাক্স:
Scan 'table_name'
উদাহরণ:
Scan 'my_table'
এই কমান্ডটি my_table টেবিলের সমস্ত রো স্ক্যান করবে এবং ডেটা রিটার্ন করবে।
রেঞ্জ দিয়ে Scan:
আপনি রো রেঞ্জ নির্দিষ্ট করে ডেটা স্ক্যান করতে পারেন।
Scan 'my_table', {STARTROW => 'row1', ENDROW => 'row5'}
এখানে, STARTROW এবং ENDROW দ্বারা আপনি নির্দিষ্ট রো রেঞ্জ উল্লেখ করতে পারেন।
কলাম ফিল্টার দিয়ে Scan:
আপনি যদি নির্দিষ্ট কলাম বা কলাম ফ্যামিলি রিটার্ন করতে চান, তাহলে COLUMN অথবা COLUMNS অপশন ব্যবহার করতে পারেন।
Scan 'my_table', {COLUMNS => ['column_family:column_name']}
এতে শুধুমাত্র উল্লেখিত কলাম ফ্যামিলি বা কলামগুলোর ডেটা রিটার্ন হবে।
টাইমস্ট্যাম্প দিয়ে Scan:
আপনি যদি নির্দিষ্ট টাইমস্ট্যাম্পের মধ্যে ডেটা স্ক্যান করতে চান, তাহলে TIMESTAMP ব্যবহার করতে পারেন।
Scan 'my_table', {TIMESTAMP => 1609459200000} # নির্দিষ্ট টাইমস্ট্যাম্পে ডেটা স্ক্যান
Get এবং Scan এর মধ্যে পার্থক্য
| ফিচার | Get | Scan |
|---|---|---|
| ডেটা অ্যাক্সেস | নির্দিষ্ট একটি রো থেকে ডেটা রিড করা হয় | পুরো টেবিল বা রো রেঞ্জ থেকে ডেটা রিড করা হয় |
| পারফরমেন্স | দ্রুত, কারণ এটি একটি নির্দিষ্ট রো এর ডেটা রিট্রিভ করে | ধীর, কারণ এটি পুরো টেবিল বা রেঞ্জ স্ক্যান করে |
| ব্যবহার | যখন নির্দিষ্ট রো থেকে ডেটা দরকার | যখন পুরো টেবিল বা রো রেঞ্জের ডেটা দরকার |
| ফিল্টারিং | কলাম ফ্যামিলি বা কলাম নির্দিষ্ট করা যায় | কলাম, রো রেঞ্জ, টাইমস্ট্যাম্প ইত্যাদি দিয়ে ফিল্টার করা যায় |
HBase Shell এ Get এবং Scan এর ব্যবহার
HBase Shell ব্যবহার করে Get এবং Scan কমান্ড চালানো সহজ। এখানে একটি উদাহরণ দেয়া হলো:
Get কমান্ড:
hbase shell
Get 'my_table', 'row1'
Scan কমান্ড:
hbase shell
Scan 'my_table', {COLUMNS => ['cf:col1']}
এইভাবে আপনি HBase তে ডেটা রিড করার জন্য Get এবং Scan কমান্ড ব্যবহার করতে পারেন।
HBase তে Get এবং Scan কমান্ড ব্যবহার করে আপনি ডেটার দ্রুত অ্যাক্সেস পেতে পারেন, যেখানে Get নির্দিষ্ট রো থেকে ডেটা রিটার্ন করে এবং Scan পুরো টেবিল বা রো রেঞ্জ স্ক্যান করে। এই কমান্ড দুটি আপনার ডেটা অ্যাক্সেস এবং বিশ্লেষণে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more