From 1cb254c11f68574a76f251604a540be081143bf8 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 5 Jul 2018 17:41:23 -0400 Subject: [PATCH] added baseline3 --- baseline1.py | 4 +- baseline3.py | 66 ++++++++++++++++++++++++++++++++ baseline3sort.py | 71 +++++++++++++++++++++++++++++++++++ benchmark.py | 24 +++--------- benchmark_img/benchmark3.png | Bin 0 -> 109333 bytes config.py | 2 + util.py | 8 +--- 7 files changed, 148 insertions(+), 27 deletions(-) create mode 100644 baseline3.py create mode 100644 baseline3sort.py create mode 100644 benchmark_img/benchmark3.png diff --git a/baseline1.py b/baseline1.py index dafe804..532c73f 100644 --- a/baseline1.py +++ b/baseline1.py @@ -1,5 +1,5 @@ from config import ATTRIBUTE, FILE_SIZE -from util import getData, createStream, validate +from util import getData, createStream, validate, ENCODE_FORMAT STREAM = 'data' DO_VALIDATION = False @@ -11,7 +11,7 @@ def createStreams(api): def insert(api, data): for line in data: - hexstr = line.encode('utf-8').hex() + hexstr = line.encode(ENCODE_FORMAT).hex() attributes = line.split(" ") for i in range(len(ATTRIBUTE)): api.publish(STREAM, ATTRIBUTE[i] + attributes[i], hexstr) diff --git a/baseline3.py b/baseline3.py new file mode 100644 index 0000000..9f6f50d --- /dev/null +++ b/baseline3.py @@ -0,0 +1,66 @@ +from config import ATTRIBUTE, ATTRIBUTE_NAME, FILE_SIZE, NUM_NODE +from util import getData, createStream, validate, ENCODE_FORMAT +from sortedcontainers import SortedList + + +DO_VALIDATION = False + +att_dict = {key: value for key, value in zip(ATTRIBUTE, ATTRIBUTE_NAME)} +att_name_index = {value: counter for counter, + value in enumerate(ATTRIBUTE_NAME)} + + +def createStreams(api): + for att in ATTRIBUTE_NAME: + createStream(api, att) + + +def insert(api, data): + result = api.listunspent(0) + txid = result["result"][0]["txid"] + vout = result["result"][0]["vout"] + address = api.getaddresses()["result"][0] + for line in data: + hexstr = line.encode(ENCODE_FORMAT).hex() + values = line.split(" ") + data = [] + for att, v in zip(ATTRIBUTE_NAME, values): + data.append({"for": att, "key": v, "data": hexstr}) + txid = api.createrawtransaction( + [{'txid': txid, 'vout': vout}], {address: 0}, data, 'send')["result"] + vout = 0 + + +def pointQuery(api, attribute, sort=False, reverse=False): + result = api.liststreamkeyitems( + att_dict[attribute[0]], attribute[1:], False, FILE_SIZE) + if DO_VALIDATION: + validate(getData(result["result"]), attribute[1:]) + + # input(getData(result["result"])) + return getData(result["result"]) + + +def rangeQuery(api, start, end): + result = [] + stream = att_dict['T'] + timestamps = api.liststreamkeys(stream)["result"] + sl = SortedList(list(map(int, [key['key'] for key in timestamps]))) + for timestamp in sl.irange(start, end): + result += getData(api.liststreamkeyitems(stream, + str(timestamp))['result']) + return result + + +def andQuery(api, attributes): + resultSet = [] + for attr in attributes: + resultSet.append(set(pointQuery(api, attr))) + result = resultSet[0] + for i in range(1, len(resultSet)): + result &= resultSet[i] + return list(result) + + +def sortResult(results, attribute, reverse=False): + return results.sort(reverse=reverse, key=lambda line: int(line.split(" ")[att_name_index[attribute]])) diff --git a/baseline3sort.py b/baseline3sort.py new file mode 100644 index 0000000..8cbb008 --- /dev/null +++ b/baseline3sort.py @@ -0,0 +1,71 @@ +from config import ATTRIBUTE, ATTRIBUTE_NAME, FILE_SIZE, NUM_NODE, ATTRIBUTE_TYPE +from util import getData, createStream, validate, ENCODE_FORMAT +from sortedcontainers import SortedList + + +DO_VALIDATION = False + +att_dict = {key: value for key, value in zip(ATTRIBUTE, ATTRIBUTE_NAME)} +att_name_index = {value: counter for counter, + value in enumerate(ATTRIBUTE_NAME)} + + +def createStreams(api): + for att in ATTRIBUTE_NAME: + createStream(api, att) + + +def insert(api, data): + result = api.listunspent(0) + txid = result["result"][0]["txid"] + vout = result["result"][0]["vout"] + address = api.getaddresses()["result"][0] + for line in data: + hexstr = line.encode(ENCODE_FORMAT).hex() + values = line.split(" ") + data = [] + for att, v in zip(ATTRIBUTE_NAME, values): + data.append({"for": att, "key": v, "data": hexstr}) + txid = api.createrawtransaction( + [{'txid': txid, 'vout': vout}], {address: 0}, data, 'send')["result"] + vout = 0 + + +def pointQuery(api, attribute, sort=True, reverse=False): + result = api.liststreamkeyitems( + att_dict[attribute[0]], attribute[1:], False, FILE_SIZE) + if DO_VALIDATION: + validate(getData(result["result"]), attribute[1:]) + result = getData(result["result"]) + att_name = att_dict[attribute[0]] + if type(ATTRIBUTE_TYPE[att_name]) is int and sort: + result = sortResult(result, att_name, reverse) + # print(*result, sep='\n') + # input() + return result + + +def rangeQuery(api, start, end, reverse=False): + result = [] + stream = att_dict['T'] + timestamps = api.liststreamkeys(stream)["result"] + sl = SortedList(list(map(int, [key['key'] for key in timestamps]))) + for timestamp in sl.irange(start, end): + result += getData(api.liststreamkeyitems(stream, + str(timestamp))['result']) + result = sortResult(result, stream, reverse) + return result + + +def andQuery(api, attributes): + resultSet = [] + for attr in attributes: + resultSet.append(set(pointQuery(api, attr, sort=False))) + result = resultSet[0] + for i in range(1, len(resultSet)): + result &= resultSet[i] + return list(result) + + +def sortResult(results, attribute, reverse=False): + return results.sort(reverse=reverse, key=lambda line: int(line.split(" ")[att_name_index[attribute]])) diff --git a/benchmark.py b/benchmark.py index 3a60889..7660523 100644 --- a/benchmark.py +++ b/benchmark.py @@ -132,13 +132,13 @@ def insertionTest(): output_json['insertion'] = total/NUM_NODE -def getAverageNodeRound(func, *args): +def getAverageNodeRound(func, *args, rounds=MAX_ROUND): elapsed = 0 # log.debug(args) - for i in range(MAX_ROUND): + for i in range(rounds): for j in range(NUM_NODE): elapsed += measure(func, nodes[j], *args) - return elapsed / (MAX_ROUND * NUM_NODE) + return elapsed / (rounds * NUM_NODE) def pointQueryTest(): @@ -149,26 +149,15 @@ def pointQueryTest(): elapsed = 0 fields = testcases['pointQuery'][i].split(" ") qtime = getAverageNodeRound(baseline.pointQuery, - ATTRIBUTE[i] + fields[i]) - # for j in range(MAX_ROUND): - # for k in range(NUM_NODE): - # elapsed += measure(baseline.pointQuery, - # (nodes[k], ATTRIBUTE[i] + fields[i])) - # qtime = elapsed / (MAX_ROUND * NUM_NODE) + ATTRIBUTE[i] + fields[i], rounds=50) total += qtime log.info('Q%d[%s]: %f' % (i+1, ATTRIBUTE_NAME[i], qtime)) output_json['point_query'][ATTRIBUTE_NAME[i]] = qtime - # additional test is for querying nonexistent record - elapsed = 0 - for j in range(MAX_ROUND): - for k in range(NUM_NODE): - elapsed += measure(baseline.pointQuery, nodes[k], " ") + qtime = elapsed / (MAX_ROUND * NUM_NODE) total += qtime - log.info('Q%d[Empty]: %f' % (i+2, qtime)) log.info('Average Query Time: %f' % (total / TESTCASE_CONFIG['pointQuery'])) - # output_json['point_query'] = total / (sampleNum * NUM_NODE) def rangeQueryTest(): @@ -180,11 +169,10 @@ def rangeQueryTest(): total = 0 for scale in RANGE_SCALE: qtime = getAverageNodeRound( - baseline.rangeQuery, int(start), int(start) + scale) + baseline.rangeQuery, int(start), int(start) + scale, rounds=1) total += qtime log.info('Range %d: %f' % (scale, qtime)) output_json['range_query'][scale] = qtime - # output_json['rangeQuery'] = total/NUM_NODE def andQueryTest(): diff --git a/benchmark_img/benchmark3.png b/benchmark_img/benchmark3.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7d48219299413fb54f81ee4c8ad445746b6dd1 GIT binary patch literal 109333 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 Bw+R3M literal 0 HcmV?d00001 diff --git a/config.py b/config.py index 6dc8651..2740185 100644 --- a/config.py +++ b/config.py @@ -12,6 +12,8 @@ ATTRIBUTE = ['T', 'N', 'I', 'r', 'U', 'A', 'R'] ATTRIBUTE_NAME = ['Timestamp', 'Node', 'ID', 'Ref-ID', 'User', 'Activity', 'Resource'] +ATTRIBUTE_TYPE = {'Timestamp': int, 'Node': int, 'ID': int, + 'Ref-ID': int, 'User': int, 'Activity': str, 'Resource': str} datadir = './testData/' diff --git a/util.py b/util.py index c1f97c3..b205210 100644 --- a/util.py +++ b/util.py @@ -1,7 +1,7 @@ from Savoir import Savoir from timeit import default_timer as timer from config import NUM_NODE -import matplotlib.pyplot as plt +from sortedcontainers import SortedList ENCODE_FORMAT = 'utf-8' @@ -42,8 +42,6 @@ def getData(result, isHex=False): if result is None: return [] for item in result: - # print("AAAAA", item) - # if item is not None: if isHex: data.append(item['data']) else: @@ -65,7 +63,3 @@ def validate(lines: str, *attributes, verbose=False): if flag: result += line return result - - -def draw(files=None): - pass