Да, если вы используете userId из запросов от Alexa, они предоставят отличный первичный ключ для вашей базы данных DynamoDB.
"user": {
"userId": "amzn1.ask.account.[unique-value-here]",
Просто сохраните акции в виде объекта JSON для каждого пользователя.
{
"stocks": [
{
"stockAmount": 45,
"stockName": "AMZN"
}
]
}
Хранение объекта
DynamoDB dynamo = new DynamoDB(new AmazonDynamoDBClient(...));
Table stocks = dynamo.getTable("stocks");
String json = {"stocks": [{"stockAmount": 45,"stockName": "AMZN"}]}
Item item =
new Item()
.withPrimaryKey("alexa_id", 1)
.withJSON("document", json);
table.putItem(item);
и как вернуть обратно
DynamoDB dynamo = new DynamoDB(new AmazonDynamoDBClient(...));
Table table = dynamo.getTable("stocks");
Item documentItem =
table.getItem(new GetItemSpec()
.withPrimaryKey("alexa_id", 1)
.withAttributesToGet("document"));
System.out.println(documentItem.getJSONPretty("document"));
Поскольку ваши пользователи добавляют или удаляют акции, вам необходимо добавить их в массив акций для пользователя. На вас будет распространяться ограничение в 400 КБ для каждого из ваших элементов DynamoDB. Размер данного элемента включает имя атрибута (в UTF-8) и значение атрибута.