Допустим, у меня есть приложение, в котором users
может сделать posts
.Я храню их в одной таблице DynamoDB, используя следующую конструкцию:
+--------+--------+---------------------------+
| PK | SK | (Attributes) |
+-----------------+---------------------------+
| UserId | UserId | username, profile, etc... | <-- user item
| UserId | PostId | body, timestamp, etc... | <-- post item
+--------+--------+---------------------------+
Когда user
составляет post
, моя функция Lambda получает следующие данные:
{
"userId": <UserId>",
"body": <Body>,
etc...
}
Мой вопрос заключается в том, должен ли я сначала проверить, существует ли user
, прежде чем добавлять post
в таблицу, используя dynamodb.get({PK: userId, SK: userId)
?Это обеспечит отсутствие каких-либо осиротевших posts
, но функция также потребует и чтения, и записи.
Одна из идей, которые у меня есть, - просто написать post
, потенциально оставляя сиротами posts
.Тогда у меня могла бы быть другая лямбда-функция, которая периодически запускается для поиска и удаления любых сирот.
Это, очевидно, простой случай, но представьте себе более сложную систему, в которой объекты имеют множественные отношения.Похоже, что в этих случаях проверка наличия отношений может быть очень дорогой.