Spring数据dynamoDB没有使用Page对象从dynamoDB获取结果。 Spring数据将数据加载到内存中,然后处理其中的页面并提供所需的页面结果。
这里是未解决的问题: https://github.com/derjust/spring-data-dynamodb/issues/232
DynamoDB不支持访问随机页面结果。它只能提供顺序访问。
尽管我需要分页,但由于上述原因,我无法使用Spring数据,因为我不知道Spring从dynamoDB加载到内存中的数据量(KB / MB数)。一次加载的数据越多,dynamoDB将使用更多的RCU。
我需要有关 Spring将多少数据读入内存的信息?这样一来,我想重新评估是否要使用Spring数据。
谢谢。
答案 0 :(得分:0)
这实际上取决于DynamoDB映射器配置。据我所知,对查询或扫描的所有DynamoDBMapper结果进行了分页。请参见以下摘录:
“ DynamoDBMapperConfig.PaginationLoadingStrategy枚举值-控制映射器实例如何处理数据的分页列表,例如查询或扫描的结果:
LAZY_LOADING-映射器实例在可能的情况下加载数据,并将所有加载的结果保存在内存中。
EAGER_LOADING-列表初始化后,映射器实例就会加载数据。
ITERATION_ONLY-您只能使用Iterator从列表中读取。在迭代过程中,该列表将清除所有先前的结果,然后再加载下一页,以便该列表将已加载结果的最多一页保留在内存中。这也意味着该列表只能被迭代一次。建议在处理大型项目时使用此策略,以减少内存开销。
如果您未为映射器实例指定分页加载策略,则默认值为LAZY_LOADING。“
在此处查看完整的文档:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptionalConfig.html
答案 1 :(得分:0)
我已经探索了有关DynamoDB和Spring数据的更多细节。
当请求分页以获取Spring-data-dynamoBD时(假设您的策略是以下策略之一:LAZY_LOADING,ITERATION_ONLY):
知道Spring数据加载了1 MB数据有助于我前进。