updated_columns = [None, None, None, None, None] for i in range(1, grades_table.num_columns): value = randint(0, 20) updated_columns[i] = value original = records[key].copy() records[key][i] = value query.update(key, *updated_columns) record = query.select(key, [1, 1, 1, 1, 1])[0] error = False for j, column in enumerate(record.columns): if column != records[key][j]: error = True if error: print('update error on', original, 'and', updated_columns, ':', record, ', correct:', records[key]) else: print('update on', original, 'and', updated_columns, ':', record) updated_columns[i] = None keys = sorted(list(records.keys())) for c in range(0, grades_table.num_columns): for i in range(0, 20): r = sorted(sample(range(0, len(keys)), 2)) column_sum = sum(map(lambda key: records[key][c], keys[r[0]:r[1] + 1])) result = query.sum(keys[r[0]], keys[r[1]], c) if column_sum != result: print('sum error on [', keys[r[0]], ',', keys[r[1]], ']: ', result, ', correct: ', column_sum) else: print('sum on [', keys[r[0]], ',', keys[r[1]], ']: ', column_sum)
[None, None, None, randrange(0, 100), None], [None, None, None, None, randrange(0, 100)], ] update_time_0 = process_time() for i in range(0, 10000): query.update(choice(keys), *(choice(update_cols))) update_time_1 = process_time() print("Updating 10k records took: \t\t\t", update_time_1 - update_time_0) # Measuring Select Performance select_time_0 = process_time() for i in range(0, 10000): query.select(choice(keys), [1, 1, 1, 1, 1]) select_time_1 = process_time() print("Selecting 10k records took: \t\t\t", select_time_1 - select_time_0) # Measuring Aggregate Performance agg_time_0 = process_time() for i in range(0, 10000, 100): query.sum(i, 100, randrange(0, 5)) agg_time_1 = process_time() print("Aggregate 10k of 100 record batch took:\t", agg_time_1 - agg_time_0) # Measuring Delete Performance delete_time_0 = process_time() for i in range(0, 10000): query.delete(906659671 + i) delete_time_1 = process_time() print("Deleting 10k records took: \t\t\t", delete_time_1 - delete_time_0)
key = keys[k * 5 + j] q = Query(grades_table) transaction.add_query(q.select, key, 0, [1, 1, 1, 1, 1]) q = Query(grades_table) transaction.add_query(q.increment, key, 1) transaction_workers[i % num_threads].add_transaction(transaction) threads = [] for transaction_worker in transaction_workers: threads.append(threading.Thread(target=transaction_worker.run, args=())) for i, thread in enumerate(threads): print('Thread', i, 'started') thread.start() for i, thread in enumerate(threads): thread.join() print('Thread', i, 'finished') num_committed_transactions = sum(t.result for t in transaction_workers) print(num_committed_transactions, 'transaction committed.') query = Query(grades_table) s = query.sum(keys[0], keys[-1], 1) if s != num_committed_transactions * 5: print('Expected sum:', num_committed_transactions * 5, ', actual:', s, '. Failed.') else: print('Pass.')