将 JSON 存储为 DynamoDB 中的字符串与列表/地图类型
2022-09-01 23:13:23
我正在使用 DynamoDB 进行存储。我需要将Java对象存储在表的一个属性中。我看到两种方法:
- 一个在客户端使用 Jackson 将对象转换为 JSON,然后将 JSON 字符串存储在属性中。
- 另一种方法是使用 DynamoDB 列表/地图类型来存储我的对象。
每种方法的优缺点是什么(就项目大小而言,Dynamo DB 查询的灵活性)?
我正在使用 DynamoDB 进行存储。我需要将Java对象存储在表的一个属性中。我看到两种方法:
每种方法的优缺点是什么(就项目大小而言,Dynamo DB 查询的灵活性)?
第一种方法
这样做的好处是,您可以存储任意数据,而不必担心 DynamoDB 是否支持它。您甚至不需要关心这是否是有效的JSON。如果您要存储 DynamoDB 列表/地图,则所有属性都应属于 DynamoDB 支持的类型。
您可以进一步推动这种方法并使用压缩,您的项目将占用更少的空间,并在此过程中为您节省一些RCU / WCU。
第一个缺点是使用这样的代码更难。仅仅因为您需要来回转换数据,这将使您的代码和操作更加复杂。
第二个缺点是,DynamoDB 对您的数据一无所知,也无法访问这些数据。例如,您将无法使用文档路径功能。
第二种方法
我认为这是一种首选方法,除非您有充分的理由坚持第一种方法(例如,不寻常的数据或大小限制)。
这里的好处是它更易于使用,您可以访问所有 DynamoDB 功能,如果您使用的是 DynamoDBMapper,则它非常容易实现。