Прямой ответ
Насколько мне известно, в конкретном случае, который вы описываете, scan
будет немного медленнее (особенно в первом ответе). Это когда предполагается, что вы не выполняете никакой фильтрации (т.е. FilterExpression
пусто).
Дальнейшие мысли
DynamoDB потенциально может хранить огромные объемы данных. Под «огромным» я подразумеваю «больше, чем может поместиться в ОЗУ любой машины». Если вам нужно «вернуть все элементы таблицы», вы должны спросить себя: что произойдет, если эта таблица вырастет так, что все элементы больше не будут помещаться в памяти? вам не нужно заниматься этим прямо сейчас (я считаю, что на данный момент таблица довольно мала), но вам нужно помнить о возможности вернуться к этому коду и исправить его, чтобы он разрешил эту проблему.
вопросы, которые я бы задал себе, если бы был на вашем месте:
(1) могу ли я каким-то образом установить ограничение на количество элементов, которые мне нужно прочитать (скажем, читать только первые 1000 элементов)?
(2) как используется эта информация (список позиций)? отправляется ли он обратно в приложение JS, работающее внутри браузера, которое отображает его пользователю? если да, то что пользователь будет делать с огромным списком предметов?
(3) можете ли вы работать над элементами по одному (или 10 или 100 за раз)? если да, то вам нужно сохранить в памяти только один (или 10 или 100) элементов, но не весь список элементов.
В общем, в DDB scan
операции используются, как описано в (3): читать один элемент (или несколько элементов) за раз, выполнять некоторую обработку и затем переходить к следующему элементу.
person
Itay Maman
schedule
06.09.2019