如何在Azure表存储中建模键/值属性?

时间:2016-12-08 23:56:22

标签: azure-table-storage

我很欣赏有关如何在Azure表存储中实现此功能的一些信息。我已经阅读了几次设计指南,但这种情况似乎没有被涵盖。

通用用例是将0 ... n个键/值对附加到系统中的对象,其中所有可能的值都是预定义的。

假设我们的申请被许多学校用来向学生展示他们在本学期可以选择的所有课程。在学期开始之前,管理员登录系统以创建新类并为其附加属性,以便学生可以根据他们的偏好过滤类列表。管理员管理所有有效属性和有效属性值。

新学期增加的第一堂课是“Arts& Crafts”,管理员发现他们需要添加一个新属性来表明参加此课程需要额外费用。他们进入属性管理页面并添加“附加成本”作为具有三个可能属性值的属性:“无额外成本”,“低于20美元”和“超过20美元”。然后,他们将“附加费用”属性附加到新的“艺术与手工艺”课程中,并指定“超过20美元”的价值。

2 个答案:

答案 0 :(得分:1)

您在插入实体时似乎想动态定义和添加属性,请参阅this sample

此外,您可以在列表中存储这三个可能的属性值(“无额外成本”,“低于20美元”和“超过20美元”),并将列表序列化为JSON字符串并将其存储为实体的属性值。

   var recfinal =  recs.map
      {
        e=>
 //  println(e)
      var dname(d) = e
   //    println(d)
      var rec2= pt2.findAllIn(e)

        var rec5 =rec2.map { k =>
    //   println(k)
                var emprec(ename,est,edob) = k
     //     println(ename,est,edob)
                var rec3 = prrec.findAllIn(k) 

               var rec4 =  rec3.map { j =>
                            var prrec(prjname,doj,dol) = j
                            var reclist = (d,ename,est,edob,prjname,doj,dol)
                             reclist
                           }
                .toList
                rec4
                  }
       .toList
       rec5

      }
    .flatMap(identity)
   .flatMap(identity)
  val rec9= recfinal.toSeq.toDF("dname","en","st","db","prj","dj","dl")
  rec9.show

答案 1 :(得分:0)

您可以使用Storage SDK中的Merge方法向现有实体添加其他属性,在这种情况下,“Additional Cost”属性将附加到“Arts& Crafts”实体。

在客户端,您可以使用DynamicTableEntity作为最灵活的选项,它是具有分区和行键的键/值字典。