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