Aws DynamoDB DAX Scan table
Использование конфигурации rowMapper и использование new ClientConfig()
а также AmazonDaxClient
Я столкнулся с проблемой синхронизации кластера dax с моими таблицами. Я знаю, что мне нужно пройти двойной переход, чтобы получить результаты запроса, если они были обновлены в кэш-памяти dax. Чтобы обойти эту проблему, когда у меня уже есть такие большие объемы данных, как я могу синхронизировать их с моим кластером DAX без запроса клиента?
Итак, я подумал о том, чтобы сделать сканирование дросселированной таблицы, подключенное к моей конечной точке Dax. Это только возврат объектов в кеше. Обновления / вставки не отражаются при сканировании таблицы через dax.
Любая помощь?
1 ответ
Какой ваш TTL настроен для Query Cache? Причина, по которой вы можете наблюдать такое поведение, заключается в том, что при сканировании таблицы происходит попадание в кэш, поэтому DAX не будет связываться с DynamoDB. Следовательно, вы получите старые данные. Эти данные будут устаревшими до времени вашего TTL для Query Cache, а затем последующий запрос получит новые данные.
Чтобы узнать больше о кеше элементов и кеше запросов, посетите официальную страницу DAX: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.concepts.html
Как указано в сценариях использования AWS DAX. Dax не идеален для последовательного чтения. Именно по этой причине:
Приложения, которые требуют строго согласованного чтения (или не могут допускать в конечном итоге согласованного чтения).
Обсуждаются с экспертом по решениям AWS. Это действительно было так. При выполнении операции сканирования в DAX. Внешнее приложение могло писать прямо в таблицу DynamoDB. В зависимости от того, что операция SCAN в кэше уже содержит попадание, возвращается результат, и не сообщается о промахах в кэше, и результат возвращается как есть. В идеале это будет в конечном итоге соответствовать LRU при сканировании.
Поскольку DAX напрямую читает из кеша и проверяет только логические попадания или промахи кеша, но не проверяет содержимое. Единственный возможный способ - использовать логику на стороне клиента, как указано на веб-сайте, для обработки того же.