1.98.4 • Published 7 years ago

hypertable-driver v1.98.4

Weekly downloads
4
License
GPL-3.0
Repository
github
Last release
7 years ago

hypertable-driver

hypertable-driver

attention

node -v >=6.9.1 Use for hytable 0.9.8

use

npm install hypertable-driver

#website www.hypertable.com

#api http://www.hypertable.com/documentation/reference_manual/thrift_api

instructions & example

##hyperTableClient

var HyperTableDriver = require('hypertable-driver');
var htConfig = {
	host:'121.43.190.15',
	port:15867,
	timeout:3000 //option
};
var hyperTableClient = new HyperTableDriver.HyperTableClient(htConfig);
var client = hyperTableClient.getClient();

##HyperTableNameSpace

var hyperTableNameSpace = new HyperTableDriver.HyperTableNameSpace(client);

hyperTableNameSpace.namespace_exists('test').then((result) => {
 console.log(result);
});

hyperTableNameSpace.namespace_create('test').then((result) => {
	//this is async,attention!
	console.log(result);
});

var namespace = null;
hyperTableNameSpace.namespace_open('/')
.then((result) => {
	namespace = result;
	return hyperTableNameSpace.namespace_get_listing(namespace);
})
.then((list)=>{
	console.log(list);
	return hyperTableNameSpace.namespace_close(namespace);
})
.then((result)=>{
	console.log(result);
});

##HyperTableTable

var namespace = null;
var hyperTableTable = null;
var hyperTableNameSpace = new HyperTableDriver.HyperTableNameSpace(client);

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	var accessGroupOptions = new HyperTableDriver.pojso.AccessGroupOptions();
	var columnFamilyOptions = new HyperTableDriver.pojso.ColumnFamilyOptions();
	var accessGroupSpec = new HyperTableDriver.pojso.AccessGroupSpec();
	var columnFamilySpec = new HyperTableDriver.pojso.ColumnFamilySpec();

	var defaultAccessGroupOptions = accessGroupOptions.setBlocksize(65536)
	.getAccessGroupOptions();
	var defaultColumnFamilyOptions = columnFamilyOptions.setMaxVersions(3)
	.getColumnFamilyOptions();
	var accessGroups ={};
	var columnFamilies ={};

	var ag_normal = accessGroupSpec.setName('ag_normal')
	.setDefaults(defaultColumnFamilyOptions)
	.getAccessGroupSpec();
	accessGroups.ag_normal = ag_normal;


	var fastAccessGroupOptions = accessGroupOptions
	.setInMemory(true)
	.getAccessGroupOptions();

	var ag_fast = accessGroupSpec.setName('ag_fast')
	.setOptions(fastAccessGroupOptions)
	.getAccessGroupSpec();
	accessGroups.ag_fast = ag_fast;

	var secureAccessGroupOptions = accessGroupOptions
	.deleteByName('in_memory')
	.setReplication(5)
	.getAccessGroupOptions();

	var ag_secure = accessGroupSpec.setName('ag_secure')
	.setOptions(secureAccessGroupOptions)
	.getAccessGroupSpec();
	accessGroups.ag_secure = ag_secure;

	var name = columnFamilySpec.setName('name')
	.setAccessGroup('ag_normal')
	.setOptions(defaultColumnFamilyOptions)
	.getColumnFamilySpec();
	var age = columnFamilySpec.setName('age')
	.setAccessGroup('ag_fast')
	.getColumnFamilySpec();
	var sex = columnFamilySpec.setName('sex')
	.setAccessGroup('ag_secure')
	.getColumnFamilySpec();
	columnFamilies.name = name;
	columnFamilies.age = age;
	columnFamilies.sex = sex;

	var schema = new HyperTableDriver.pojso.Schema();
	var schemaObj = schema
	.setAccessGroups(accessGroups)
	.setColumnFamilies(columnFamilies)
	.setAccessGroupDefaults(defaultAccessGroupOptions)
	.setColumnFamilyDefaults(defaultColumnFamilyOptions)
	.getSchema();
	// console.log(schema);return;
	hyperTableTable = new HyperTableDriver.HyperTableTable(client,namespace);
	return hyperTableTable.table_create('testTable2',schemaObj);
})
.then((result)=>{
	console.log(result);
});

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableTable = new HyperTableDriver.HyperTableTable(client,namespace);
	return hyperTableTable.get_schema('testTable2');
})
.then((schemaObj)=>{
	//modify 'age' to 'birthday'
	var cfSpec = schemaObj.column_families['age'];
    delete schemaObj.column_families['age'];
    cfSpec.name = 'birthday';
    schemaObj.column_families['birthday'] = cfSpec;

    //add 'city'
    var columnFamilySpec = new HyperTableDriver.pojso.ColumnFamilySpec();
    cfSpec = columnFamilySpec.setName('city')
    .setAccessGroup('ag_normal')
    .getColumnFamilySpec();
    schemaObj.column_families['city'] = cfSpec;

	return hyperTableTable.table_alter('testTable2',schemaObj);
})
.then((result)=>{
	console.log(result);
})
.catch((err) => {
  console.log(err);
});


hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableTable = new HyperTableDriver.HyperTableTable(client,namespace);
	//or hyperTableTable.table_drop('testTable2',ifExists=true);
	return hyperTableTable.table_drop('testTable2');
})
.then((result)=>{
	console.log(result);
})

##HyperTableCell

var namespace = null;
var hyperTableCell = null;
var hyperTableNameSpace = new HyperTableDriver.HyperTableNameSpace(client);

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	var key = new HyperTableDriver.pojso.Key();
	var cell = new HyperTableDriver.pojso.Cell();
	var keyObj1 = key.setRow('user3').setColumnFamily('name').setColumnQualifier('column_qualifier1').getKey();
	var keyObj2 = key.setRow('user2').setColumnFamily('name').setColumnQualifier('column_qualifier2').getKey();
	var cells = [];
	var cellObj1 = cell.setKey(keyObj1).setValue('test1').getCell();
	var cellObj2 = cell.setKey(keyObj2).setValue('test2').getCell();
	cells.push(cellObj1);
	cells.push(cellObj2);
	return hyperTableCell.set_cells('user',cells);
})
.then((result)=>{
	console.log(result);
});

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	var scanSpec = new HyperTableDriver.pojso.ScanSpec();
	var scanSpecObj = scanSpec.setColumns(['name','age']).getScanSpec();
	return hyperTableCell.get_cells('user',scanSpecObj);
})
.then((result)=>{
	console.log(result);
});


hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	var scanSpec = new HyperTableDriver.pojso.ScanSpec();
	var scanSpecObj = scanSpec.setColumns(['name','age']).getScanSpec();
	return hyperTableCell.get_cells('user',scanSpecObj);
})
.then((result)=>{
	console.log(result);
});


hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	cells_as_arrays = [];
	cell_as_array = ['user4', 'name', 'column_qualifier3', 'zl'];
	cells_as_arrays.push(cell_as_array);
	cell_as_array = ['user4', 'age', '', '16'];
	cells_as_arrays.push(cell_as_array);
	return hyperTableCell.set_cells_as_arrays('user',cells_as_arrays);
})
.then((result)=>{
	console.log(result);
});

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	var scanSpec = new HyperTableDriver.pojso.ScanSpec();
	var scanSpecObj = scanSpec.setColumns(['name','age']).getScanSpec();
	return hyperTableCell.get_cells_as_arrays('user',scanSpecObj);
})
.then((result)=>{
	console.log(result);
});

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	var writer = new HyperTableDriver.pojso.Writer(1024);
	var timestamp = new HyperTableDriver.pojso.Timestamp();
	writer.add('user0', 'name', 'column_qualifier4',timestamp.setTime(1483758549000).getTimestamp(), 'zl');
	writer.add('user5', 'age', 'column_qualifier5', null, '24');

	var buffer = writer.getBuffer();
	return hyperTableCell.set_cells_serialized('user',buffer);
})
.then((result)=>{
	console.log(result);
})
.catch((err) => {
  console.log(err);
});

hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableCell = new HyperTableDriver.HyperTableCell(client,namespace);
	var scanSpec = new HyperTableDriver.pojso.ScanSpec();
	var scanSpecObj = scanSpec.setColumns(['name','age']).getScanSpec();
	return hyperTableCell.get_cells_serialized('user',scanSpecObj);
})
.then((result)=>{
	var reader = new HyperTableDriver.pojso.Reader(result);
	reader.next()
    while (reader.next())
        console.log(reader.getCell().toString());
});

##hyperTableMutator

var namespace = null;
var hyperTableMutator = null;
var mutator = null;
var hyperTableNameSpace = new HyperTableDriver.HyperTableNameSpace(client);
hyperTableNameSpace.namespace_open('test')
.then((result)=>{
	namespace = result;
	hyperTableMutator = new HyperTableDriver.HyperTableMutator(client,namespace);
	var flags =0;
	var flush_interval = 0;
	return hyperTableMutator.mutator_open('user',flags,flush_interval);
})
.then((result)=>{
	mutator = result;
	var key = new HyperTableDriver.pojso.Key();
	var cell = new HyperTableDriver.pojso.Cell();
	var keyObj1 = key.setRow('user2').setColumnFamily('name')
	.setColumnQualifier('column_qualifier4')
	.getKey();
	var keyObj2 = key.setRow('user3').setColumnFamily('name')
	.deleteByName('timestamp')
	.setColumnQualifier('column_qualifier5')
	.getKey();
	var cells = [];
	var cellObj1 = cell.setKey(keyObj1).setValue('test1').getCell();
	var cellObj2 = cell.setKey(keyObj2).setValue('test2').getCell();
	cells.push(cellObj1);
	cells.push(cellObj2);
	return hyperTableMutator.mutator_set_cells(mutator,cells);
})
.then((result)=>{
	var key = new HyperTableDriver.pojso.Key();
	var cell = new HyperTableDriver.pojso.Cell();
	var keyObj1 = key.setRow('user2')
	.setFlag(HyperTableDriver.pojso.KeyFlag.DELETE_ROW)
	.getKey();
	var keyObj2 = key.setRow('user3').getKey();
	var cells = [];
	var cellObj1 = cell.setKey(keyObj1).getCell();
	var cellObj2 = cell.setKey(keyObj2).getCell();
	cells.push(cellObj1);
	cells.push(cellObj2);
	return hyperTableMutator.mutator_set_cells(mutator,cells);
})
.then((result)=>{
	console.log(result);
	return hyperTableMutator.mutator_flush(mutator);
})
.then((result)=>{
	console.log(result);
	return hyperTableMutator.mutator_close(mutator);
})
.then((result)=>{
	console.log(result);
})
.catch((err) => {
  console.log(err);
});

##HyperTableScanner

var namespace = null;
var hyperTableScanner = null;
var scanner = null;
var hyperTableNameSpace = new HyperTableDriver.HyperTableNameSpace(client);
hyperTableNameSpace.namespace_open('zytest')
.then((result)=>{
	namespace = result;
	hyperTableScanner = new HyperTableDriver.HyperTableScanner(client,namespace);
	var scanSpec = new HyperTableDriver.pojso.ScanSpec();
	var scanSpecObj = scanSpec.setColumns(['name','age']).getScanSpec();
	return hyperTableScanner.scanner_open('user',scanSpecObj);
})
.then((result)=>{
	scanner = result;
	return hyperTableScanner.scanner_get_cells(scanner);
})
.then((result)=>{
	console.log(result);
	return hyperTableScanner.scanner_close(scanner);
})
.then((result)=>{
	console.log(result);
});

##HyperTableHql

var namespace = null;
var hyperTableHql = null;
var hyperTableMutator = null;
var mutator = null;
var hyperTableScanner = null;
var scanner = null;
var hyperTableNameSpace = new HyperTableDriver.HyperTableNameSpace(client);
hyperTableNameSpace.namespace_open('zytest')
.then((result)=>{
	namespace = result;
	hyperTableHql = new HyperTableDriver.HyperTableHql(client,namespace);
	var hql = "GET LISTING";
	return hyperTableHql.hql_query(hql);
})
.then((result)=>{
	console.log(result);
	var hql = "SELECT * from user WHERE ROW = 'user1'";
	return hyperTableHql.hql_query(hql);
})
.then((result)=>{
	console.log(result);
	var hql = "INSERT INTO user VALUES('user1','age','21'),('user2','age','22')";
	return hyperTableHql.hql_exec(hql);
})
// hql_exec(mutator)
.then((result)=>{
	console.log(result);
	var hql = "INSERT INTO user VALUES('user3','age','21'),('user4','age','22')";
	return hyperTableHql.hql_exec(hql,true);
})
.then((result)=>{
	console.log(result);
	mutator = result.mutator;
	hyperTableMutator = new HyperTableDriver.HyperTableMutator(client,namespace);
	var key = new HyperTableDriver.pojso.Key();
	var cell = new HyperTableDriver.pojso.Cell();
	var keyObj1 = key.setRow('user2').setColumnFamily('name')
	.setColumnQualifier('column_qualifier4')
	.getKey();
	var keyObj2 = key.setRow('user3').setColumnFamily('name')
	.deleteByName('timestamp')
	.setColumnQualifier('column_qualifier5')
	.getKey();
	var cells = [];
	var cellObj1 = cell.setKey(keyObj1).setValue('test1').getCell();
	var cellObj2 = cell.setKey(keyObj2).setValue('test2').getCell();
	cells.push(cellObj1);
	cells.push(cellObj2);
	return hyperTableMutator.mutator_set_cells(mutator,cells);
})
.then((result)=>{
	console.log(result);	
	return hyperTableMutator.mutator_flush(mutator);
})
.then((result)=>{
	console.log(result);	
	return hyperTableMutator.mutator_close(mutator);
})
// hql_exec(scanner)
.then((result)=>{
	console.log(result);	
	var hql = "SELECT * from user WHERE ROW = 'user3'";
	return hyperTableHql.hql_exec(hql,false,true);
})
.then((result)=>{
	console.log(result);
	scanner = result.scanner;
	hyperTableScanner = new HyperTableDriver.HyperTableScanner(client,namespace);
	return hyperTableScanner.scanner_get_cells(scanner);
})
.then((result)=>{
	console.log(result);
	return hyperTableScanner.scanner_close(scanner);
})
.then((result)=>{
	console.log(result);
	return hyperTableScanner.scanner_close(scanner);
})