An object-to-hbase mapper (like ORM is for SQL databases).
Writes (and reads) an object's fields as qualifiers in a given table, using a given column family.
Persistence layer based on node-thrift2-hbase
.
const nodeThriftHbase = require('node-thrift2-hbase')(thriftHBaseConfig);
const ObjectHBaseMapping = require('object-habase-mapping');
const table = 'object_hbase_mapping:example_table';
const columnFamily = 'cf';
const fieldMetaData = [
{modelName: 'm1', hbaseName: 'u1', type: 'string', isKeyProperty: true},
{modelName: 'm2', hbaseName: 'u2', type: 'integer', isKeyProperty: true},
{modelName: 'm3', hbaseName: 'u3', type: 'integer'},
];
const ModelClass = ObjectHBaseMapping(nodeThriftHbase, table, columnFamily, fieldMetadata)
-
hbase
- an instance ofnode-thrift2-hbase
-
table
- the name of the table in which this object is stored -
columnFamily
- the name of the column family in which this object is stored -
fieldMetadata
is a list of objects with the following properties:-
modelName
- name of the field in the object class (i.e.instanceOfMyClass[modelName]
will hold this fields's value). -
hbaseName
- the qualifier name used in HBase to store this property, (i.e. this property will be stored incolumnFamily
in the qualifierhbaseName
). -
type
- the type of the property's value, for serialization/deserialization purposes, as innode-thrift2-hbase
. -
isKeyProperty
- boolean, set to true if this property is part of the row's key.
-
Rowkey construction: The row key is constructed by calling the static method genKeyProperties
with the object data (see static methods below).
All HBase model classes created by this library extend a base class which supplies them with the following methods:
-
genKeyByProperties()
:.join('.')
s the values of properties markedisKeyProperty
by their order of appearance infieldMetadata
to generate an HBase row key.
-
save()
: saves this object to HBase using the generated repository backend. -
load()
: load the object from HBase using this object as a prototype query.