Aerospike - Python 客户端 - NoSQL 基准测试
Aerospike - Python Client - NoSQL benchmark
我正在为客户执行 NoSQL 性能基准测试。我想知道我的 Aerospike Python 代码是否最优?我正在尝试记录查询时间和加载时间。数据有 500,000 行和 8 列。我的代码如下。
def test_db():
config = {
'hosts': [ ('127.0.0.1', 3000) ]
}
client = aerospike.client(config).connect()
t0 = time.time()
global rec
rec = {}
with open('skunkworks.csv', 'r') as f:
reader = csv.reader(f)
rownum = 0
for row in reader:
# Save First Row with headers
if rownum == 0:
header = row
else:
colnum = 0
for col in row:
rec[header[colnum]] = col
colnum += 1
rownum += 1
if rec:
client.put(('test', 'demo', str(rownum)), rec)
rec = {}
t1 = time.time()
load_time = t1 - t0
t2 = time.time()
for i in range(2,500002):
(key, metadata, record) = client.get(('test', 'demo', str(i)))
# print(record)
t3 = time.time()
read_time = t3 - t2
return [load_time , read_time]
您的 Python 应用程序是 运行 作为单个进程,还是采用多进程方法,例如 fastCGI?
如果您尝试进行基准测试,请确保它模拟您的应用程序 运行。要写入大量行,然后读取大量行,所有这些都来自一个进程,通常不会模拟任何现实情况。也许在您的情况下是这样,但如果不是,请使您的示例代码与实际访问模式相匹配。
此外,您应该以与应用程序类似的方式部署基准测试。不要 运行 在与服务器节点相同的机器上进行基准测试,如果这不是它在生产中的方式。
我正在为客户执行 NoSQL 性能基准测试。我想知道我的 Aerospike Python 代码是否最优?我正在尝试记录查询时间和加载时间。数据有 500,000 行和 8 列。我的代码如下。
def test_db():
config = {
'hosts': [ ('127.0.0.1', 3000) ]
}
client = aerospike.client(config).connect()
t0 = time.time()
global rec
rec = {}
with open('skunkworks.csv', 'r') as f:
reader = csv.reader(f)
rownum = 0
for row in reader:
# Save First Row with headers
if rownum == 0:
header = row
else:
colnum = 0
for col in row:
rec[header[colnum]] = col
colnum += 1
rownum += 1
if rec:
client.put(('test', 'demo', str(rownum)), rec)
rec = {}
t1 = time.time()
load_time = t1 - t0
t2 = time.time()
for i in range(2,500002):
(key, metadata, record) = client.get(('test', 'demo', str(i)))
# print(record)
t3 = time.time()
read_time = t3 - t2
return [load_time , read_time]
您的 Python 应用程序是 运行 作为单个进程,还是采用多进程方法,例如 fastCGI?
如果您尝试进行基准测试,请确保它模拟您的应用程序 运行。要写入大量行,然后读取大量行,所有这些都来自一个进程,通常不会模拟任何现实情况。也许在您的情况下是这样,但如果不是,请使您的示例代码与实际访问模式相匹配。
此外,您应该以与应用程序类似的方式部署基准测试。不要 运行 在与服务器节点相同的机器上进行基准测试,如果这不是它在生产中的方式。