DynamoDB中Set与List的区别及Set类型对应的属性标识是什么?
DynamoDB List与Set类型差异及使用说明
一、Set类型与List类型的核心差异
- 数据规则不同:List是有序、允许元素重复的集合;Set是无序、强制元素唯一的集合,写入重复值时DynamoDB会自动去重,不会抛出错误。
- 存储结构不同:List支持混合存储不同类型的元素,因此每个元素都需要单独声明数据类型(就是你现有结构里每个值外面包的
"S"标识);Set要求所有元素必须为同一类型,不需要为单个元素标注类型,存储结构更简洁。 - 操作能力不同:Set支持原子级增删操作,调用API时用
ADD、DELETE指令可以直接对单个元素进行新增、移除,不需要先读取整个集合再修改回写;List没有这类原子操作,要修改元素必须全量读写整个列表。
二、Set类型的属性标识
你当前存储的位置都是字符串类型,对应Set的类型标识为SS(String Set的缩写),除此之外还有数字Set标识NS、二进制Set标识BS,用来替代List的L标识。
三、修改后的Put Item请求JSON示例
{ "Sensor" : { "S": "Sensor1" }, "SensorDescription": { "S" : "Sensor to meassure water temperature" }, "ImageFile" : { "S" : "/Sensors/images/acoustic-elementarray.jpg" }, "SampleRate":{ "N" : "2048" }, "Locations" : { "SS": [ "Culpeper VA", "Colorado Springs Co" ] } }
补充说明:如果你的业务需要保留多个位置的排序顺序、或者允许存储重复的位置记录,继续使用List类型更符合需求;如果需要对位置集合做频繁的单个元素增删、需要保证位置不重复,改用String Set更合适。
内容的提问来源于stack exchange,提问作者Sergey V.
相关产品推荐
相关产品推荐

