【发布时间】:2021-04-30 14:35:20
【问题描述】:
我正在使用 DynamoDB 进行存储。我需要将 Java 对象存储在表中的一个属性中。我看到了两种方法:
- 在客户端使用 Jackson 将对象转换为 JSON,然后将 JSON 字符串存储在属性中。
- 另一种方法是使用 DynamoDB 列表/地图类型来存储我的对象。
每种方法的优缺点是什么(在项目大小、Dynamo DB 查询的灵活性方面)?
【问题讨论】:
标签: java amazon-dynamodb
我正在使用 DynamoDB 进行存储。我需要将 Java 对象存储在表中的一个属性中。我看到了两种方法:
每种方法的优缺点是什么(在项目大小、Dynamo DB 查询的灵活性方面)?
【问题讨论】:
标签: java amazon-dynamodb
第一种方法
这里的好处是您可以存储任意数据,不必关心 DynamoDB 是否支持它。您甚至不需要关心这是否是有效的 JSON。如果您要存储 DynamoDB 列表/地图,所有属性都应该是 DynamoDB 支持的类型。
您可以进一步推动这种方法并使用压缩,您的项目将占用更少的空间并在此过程中为您节省一些 RCU/WCU。
第一个缺点是使用这样的代码更难。仅仅因为你需要来回转换数据,这会使你的代码和操作更加复杂。
第二个缺点是,DynamoDB 对您的数据一无所知,也无法访问它。例如,您将无法使用document paths 功能。
第二种方法
我认为这是一种首选方法,除非您有充分的理由坚持使用第一种方法(例如异常数据或大小限制)。
这里的好处是它更易于使用,您可以访问所有 DynamoDB 功能,如果您使用的是DynamoDBMapper,则为really easy to implement。
【讨论】: