我想获得一些数据来证明我的阅读,即 DynamoDB 键值存储与关系数据库(MySQL、PostgreSQL、Aurora)相比具有更好的读取性能。所以我决定比较 DynamoDB 和 AWS-Aurora 的读取延迟(这是 AWS 网站的一个/c - “比标准 MySQL 数据库快五倍,比标准 PostgreSQL 数据库快三倍”)
Step1 : 在 Aurora 中使用以下 Schema 创建一个表,并向该表添加 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)
);
使用了使用 MySQL 驱动的数据库/sql 包查询表的 Golang 客户端。
步骤2;创建了具有以下属性的 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 查询 DynamoDB 表的 Golang 客户端。
极光
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()
极光延迟:543.89 DynamoDB 延迟:2934.96 微秒
这些数字似乎不对。我不是在比较苹果和苹果吗?