Large table operations
C++
Java
Here is a sample program which does most of the operations to help you understand the APIs and their usage.
bool flag = true; DBParam dp; dp.setTransactionType(DB_TRANSACTION_NONE); BangDBDatabase * bdb = new BangDBDatabase("mydb", & dp); if (!bdb) { printf("db could not be created, quitting\n"); //return or handle error } // db_param sets the db environment, see the section to know more about it // create a large table TableEnv te; te.setTableType(LARGE_TABLE); // large table must have composite primary key, else db will throw error te.setKeyType(COMPOSITE_KEY); te.setKeySize(64); // set key size keeping ~32 bytes for system to add/consume BangDBTable * large_tbl = bdb -> getTable("my_large_tbl", & te, OPENCREATE); if (!large_tbl) { printf("we could not create the table my_large_tbl\n"); flag = false; // handle error } // let's load large file const char * file_path = "libbangdb.so.2.0"; const char * fkey = "bangdb_2_0_binary"; FDT fk; set_fat( & fk, fkey); if (large_tbl -> putFile( & fk, file_path, INSERT_UNIQUE) < 0) { printf("error in putting large file\n"); flag = false; // handle error } const char * file_name = "linbangdb.so.2.0_new_name"; const char * download_fpath = "/tmp"; if (large_tbl -> getFile( & fk, file_name, download_fpath) < 0) { printf("get file error\n"); flag = false; // handle error } int nslices = large_tbl -> countSliceLarge_data( & fk); printf("num of slices for the file = %d\n", nslices); const char * finfo = large_tbl -> listLargeDataKeys(fkey); printf("the file info = %s\n", finfo); delete[] finfo; delete large_tbl; bdb -> closeDatabase(DEFAULT); delete bdb;
System.loadLibrary("bangdb-java"); System.out.println("load banagdb-java successful"); boolean flag = true; DBParam dbp = new DBParam(); dbp.setTransactionType(TransactionType.DB_MULTIOPS_TRANSACTION_NONE); BangDBDatabase bdb = new BangDBDatabase("mydb", dbp); if (bdb != null) { System.out.println("java - bdb created"); } else flag = false; TableEnv tenv = new TableEnv(); te.setTable_type(TableType.LARGE_TABLE); te.setKey_type(KeyType.COMPOSITE_KEY); te.setKey_sz(48); BangDBTable lt = bdb.getTable("large_table", te, OpenType.OPENCREATE); if (lt.putFile("file1", "./bangdb.config", InsertOptions.INSERT_UNIQUE) < 0) { System.out.println("failed to upload file"); flag = false; } if (lt.getFile("file1", "bangdb.config", "/tmp") < 0) { System.out.println("failed to download file"); flag = false; } byte[] ldata = new byte[0x2000000]; if (lt.putLargeData("largeKey", ldata, InsertOptions.INSERT_UNIQUE) < 0) { System.out.println("failed to put large data"); flag = false; } byte[] lrvd = lt.getLargeData("largeKey"); if (lrvd.length != ldata.length) { System.out.println("failed to get large data"); flag = false; } System.out.println("Slice count = " + lt.countSliceLargeData("largeKey")); System.out.println("list large keys = " + lt.listLargeDataKeys("largeKey", 1)); System.out.println("large count data = " + lt.countLargeData()); if (lt.delLargeData("largeKey") < 0) { System.out.println("failed to del large data"); flag = false; } System.out.println("Slice count = " + lt.countSliceLargeData("largeKey")); System.out.println("list large keys = " + lt.listLargeDataKeys("largeKey", 1)); System.out.println("large count data = " + lt.countLargeData()); bdb.closeDatabase(CloseType.DEFAULT); if (flag) System.out.println("test_table_basic passed"); else System.out.println("test_table_basic failed");