У меня есть динамо-таблица БД.
+---------------------------------------------------+
| Customer ID (Primary Key)|Gamestats (JSON entry) |
+---------------------------------------------------+
JSON
{
"Gamestats": [
{
"ID": "QuickShootingMode",
"status": 1
},
{
"ID": "FastReloadMode", // Just want to update this and not update the entire JSON
"status": 0
}
],
"CustomerID": "xyz"
}
Я хочу обновить только части JSON, как лучше всего это сделать?Например, обновите QuickShootingMode
, чтобы быть ложным.
Одним из способов является вызов и выборка JSON, а затем итерация JSON, обновление значения и помещение нового JSON обратно в базу данных Dynamo.Это означает, что для получения данных потребуется 2 вызова
A) и
B) для помещения данных в БД.
Есть ли лучший способ, с помощью которого я мог бы напрямую обновлять данные и избегать дополнительных сетевых вызовов?Я мог бы преобразовать каждый ключ JSON в столбец в динамическом BD, но если количество ключей возрастет, у меня будет много столбцов (что может быть плохим дизайном), поэтому я думаю, что JSON будет сохранен в одномколонка «Статистика игры» будет иметь больше смысла.
Map<String, AttributeValue> key = new HashMap<>();
AmazonDynamoDB dynamoDB = dynamoDBClient.getDynamoDB();
key.put(USER_ID_KEY, new AttributeValue().withS("xyz"));
key.put("Gamedata", new AttributeValue().withS("some JSON"));
PutItemRequest request = new PutItemRequest()
.withTableName(table)
.withItem(key);
PutItemResult result = dynamoDB.putItem(request);
Есть ли лучший способ добиться того, чего я хочу?
Спасибо