gpt4 book ai didi

go - Aurora 与 DynamoDB 延迟不符合预期

转载 作者:IT王子 更新时间:2023-10-29 02:35:25 25 4
gpt4 key购买 nike

我想得到一些数字来证明我的阅读,即与关系数据库(MySQL、PostgreSQL、Aurora)相比,DynamoDB 键值存储具有更好的读取性能。所以我决定比较 DynamoDB 和 AWS-Aurora 的读取延迟(这是 AWS 网站的 a/c -“比标准 MySQL 数据库快五倍,比标准 PostgreSQL 数据库快三倍”)

第 1 步:使用以下架构在 Aurora 中创建一个表,并向该表添加 102 万条记录。

Table gift_log (
gift_uuid BINARY(16) NOT NULL,
user_uuid BINARY(16) NOT NULL,
parent_uuid BINARY(16),
operation_time TIMESTAMP,
operation VARCHAR(20) NOT NULL,
gift_type VARCHAR(20) NOT NULL,
parent_type VARCHAR(20),
relation_type VARCHAR(20),
PRIMARY KEY (gift_uuid)
);

使用Golang Client,使用MySQL driver for database/sql package来查询表。

第二步;使用以下属性创建 DynamoDB 表。向表中添加了 100 万个项目。 没有使用任何排序键。所有查询都使用分区键。


Table: GiftLog {
gift_uuid Binary (Partition Key)
user_uuid Binary
operation_time Number,
operation String,
gift_type String,
parent_type String
}

使用使用 AWS Go-SDK 的 Golang 客户端查询 DynamoDB 表。

极光

startTime := time.Now().UnixNano()

rows, err := db.Query("SELECT * FROM gift_log WHERE gift_uuid=?", giftIDsToRead[i])

endTimt := time.Now().UnixNano()

动态数据库

queryInput := &dynamodb.QueryInput{
TableName: aws.String(tableName),
KeyConditions: map[string]*dynamodb.Condition{
"GiftUUID": {
ComparisonOperator: aws.String("EQ"),
AttributeValueList: []*dynamodb.AttributeValue{
{
B: giftIDsToRead[i],
},
},
},
},
}

startTime := time.Now().UnixNano()

resp, err := svc.Query(queryInput)

endTime := time.Now().UnixNano()

Aurora 延迟:543.89 DynamoDB 延迟:2934.96 usec

这些数字似乎不对。我不是在比较苹果吗?

最佳答案

您没有显示计时结果...但我会说您是在比较苹果和橘子。如果您知道 DynamoDB 项目的主键,您应该使用 GetItem()不是 Query()。

使用 GetItem(),您应该有“个位数毫秒”的响应时间; 排除网络/HTTP 延迟

最后一点很重要,但希望与对 Aurora 的请求类似。

关于go - Aurora 与 DynamoDB 延迟不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55581207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com