首页 > 解决方案 > Aerospike - Python 客户端 - NoSQL 基准测试

问题描述

我正在为客户端执行 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]

标签: pythonperformancenosqlaerospike

解决方案


您的 Python 应用程序是作为单进程运行,还是多进程方法,例如 fastCGI?

如果您尝试进行基准测试,请确保它模拟您的应用程序的运行方式。要写入大量行,然后读取大量行,全部来自单个进程,通常不会模拟任何实际情况。也许在您的情况下确实如此,但如果不是,请使您的示例代码与实际访问模式匹配。

此外,您应该以与应用程序类似的方式部署基准测试。不要在与服务器节点相同的机器上运行基准测试,如果生产环境不是这样的话。


推荐阅读