अपाचे एचबेस (Apache HBase) एक स्तम्भ-उन्मुख (Column-oriented) NoSQL डाटाबेस (Database) हो जुन गुगलको ‘बिग टेबल’ (Big Table) शोधपत्रमा आधारित छ। यो हडुप (Hadoop) को माथि चल्छ र यसरी द्रुत भण्डारण (Fast storage) र पुन: प्राप्ति (Retrieval) लाई समर्थन गर्दछ।
अपाचे एचबेस स्कीमा (Apache HBase Schema) एसक्यूएल स्कीमा (SQL Schema) भन्दा फरक हुन्छ जसमा हामीसँग विशिष्ट आकारको डाटा राख्ने धेरै स्तम्भहरू (Columns) हुन्छन्। एचबेसमा सबै डाटा प्रकारहरू बाइट्स (Bytes) मा भण्डारण गरिन्छ र तालिकालाई कोलम फ्यामिली (Column Family - स्तम्भ परिवार) मा विभाजित गरिन्छ जसमा धेरै संख्यामा स्तम्भहरू हुन सक्छन्। स्कीमा यसरी परिभाषित गरिनुपर्छ कि कोलम फ्यामिलीका डाटाहरू सँगै पहुँच (Access) गरियोस्। यो डिजाइनले एचबेसलाई एउटै कोलम फ्यामिलीको डाटा सँगै पहुँच गर्न सक्षम बनाउँछ जसले गर्दा डाटा छिटो पुन: प्राप्त (Retrieve) गर्न सकिन्छ।
अपाचे एचबेस एक NoSQL डाटाबेस भएकोले यसमा बिस्तारै परिवर्तन हुने आयाम (Slowly changing dimension) को विशेषता हुन्छ। अर्थात्, हामीले प्रत्येक पटक डाटा घुसाउँदा (Insert) स्तम्भको नाम तोक्न सक्छौँ, त्यसैले प्रयोगकर्ताले एचबेसमा डाटा घुसाउँदा स्तम्भहरू बढ्न सक्छन्। एचबेसले डाटा नतोकिएको स्तम्भको लागि शून्य मान (Null value) भण्डारण गर्दैन जसले गर्दा ठाउँ (Space) बचत हुन्छ।
एचबेसमा संस्करणहरू (Versions) को एउटा चाखलाग्दो विशेषता हुन्छ। अर्थात्, एचबेसमा प्रत्येक स्तम्भ डाटा थपिएको समयको टाइमस्ट्याम्प (Timestamp) सँग भण्डारण गरिन्छ।
एचबेस शेल (HBase Shell) मा निम्न महत्त्वपूर्ण कमाण्डहरू (Commands) छन्:
१. सिर्जना गर्ने (create) Link to heading
create '<t_n>', <c_f1>, <c_f2>, ....
माथिको सिन्ट्याक्स (Syntax) को सबैभन्दा महत्त्वपूर्ण तथ्य यो हो कि तालिकाको नाम एकल उद्धरण चिन्ह (Single quote) भित्र समावेश हुनुपर्छ र तालिका सिर्जना गर्दा केवल कोलम फ्यामिली (Column Family) तोकिएको हुनुपर्छ।
२. राख्ने (put) Link to heading
put '<t_n>', <row-id>, <c_f>:<col_n>, value
यो कमाण्ड एचबेसमा डाटा घुसाउन प्रयोग गरिन्छ। हामी सजिलैसँग यसको एसक्यूएल डाटाबेस (SQL Database) भन्दा फरक देख्न सक्छौँ जहाँ एउटा स्तम्भ प्राथमिक कुञ्जी (Primary Key) हुन्छ र सबै स्तम्भका मानहरू एकै पटक घुसाइन्छ, तर एचबेसमा प्राथमिक कुञ्जीको कार्य row-id ले गर्दछ र हामी एक पटकमा एउटा स्तम्भको मान घुसाउँछौँ।
३. प्राप्त गर्ने (get) Link to heading
get '<t_n>', 'row-id'
यो कमाण्ड कुनै विशिष्ट row-id को पङ्क्ति (Row) प्राप्त गर्न प्रयोग गरिन्छ।
४. स्क्यान गर्ने (scan) Link to heading
scan '<t_n>', { COLUMNS => [<cf_1>,<cf_2>,...], FILTER => }
यसले विशिष्ट फिल्टर (Filter) पार गर्ने आफ्ना स्तम्भहरू सहितका सबै रेकर्ड (Record) हरू फिर्ता गर्छ।
५. परिमार्जन गर्ने (alter) Link to heading
alter '<t_n>', prop
६. मेटाउने (delete) Link to heading
delete '<t_n>', <row-id>, <cf_1>:<col_n>