#java #kotlin #amazon-dynamodb #dynamodb-queries
#java #kotlin #amazon-dynamodb #dynamodb-запросы
Вопрос:
У меня есть 100 000 документов, успешно сохраненных в таблице. В настоящее время я просто использую первичный ключ (не комбинацию хэш / сортировка). Нет хорошего способа разделить их на полезные разделы для чтения, потому что в первую очередь клиенты будут сначала извлекать всю базу данных, а затем просто извлекать те элементы, которые были обновлены. Кроме того, я хотел бы возвращать результаты в разбивке на страницы, используя метод смещения / предела.
Мне интересно, какой лучший способ сделать это. Пример элемента, который я сохранил в таблице, выглядит следующим образом (id — первичный ключ):
{
"id": 11299,
"name": "plugin1",
"attributes": {
"plugin_version": "1.30",
"exploit_available": false,
"in_the_news": false,
"exploited_by_malware": false,
"exploited_by_nessus": false,
"risk_factor": "Medium",
"plugin_type": "remote",
"exploitability_ease": "No known exploits are available",
"plugin_publication_date": "2003-03-01T00:00:00Z",
"plugin_modification_date": "2018-07-16T00:00:00Z",
"vuln_publication_date": "2003-01-23T00:00:00Z"
"cvss_temporal_vector": {
"raw": "E:U/RL:OF/RC:C",
"ReportConfidence": "Confirmed",
"Exploitability": "Unproven",
"RemediationLevel": "Official-fix"
}
}
}
Мне также нужно включить фильтрацию plugin_modification_date
, поэтому не уверен, было бы полезно сделать это ключом сортировки. Что расстраивало при исследовании этого до сих пор, так это то, что все, похоже, каким-то образом полагается на использование ключа раздела, где это в принципе бесполезно, когда у вас есть отдельный первичный ключ, который уникален для всех элементов.
Комментарии:
1. DynamoDB не очень подходит для разбивки на страницы со смещением / лимитом, потому что либо вам нужно присвоить элементам уникальные порядковые номера (и сохранять номера по мере добавления и удаления элементов), либо вам нужно прочитать элементы 0 .. N-1, просто чтобы узнать, какой элемент является N-м элементом. Кроме того, не гарантируется согласованность порядка сканирования между вызовами.