App Engine应用程序将其数据保存为一个或多个数据存储区实体(entity)。实体拥有一个或多个属性(property),每个属性都有一个名字和一个值,这个值可以是任何一种基本值类型。每个实体都有一个命名类别(kind),它用于在查询中对实体进行分类。乍一看上去,这跟关系型数据库没什么不同:同一类别的实体就像是表中的行,而属性就像是列(字段)。实际上,实体和行之间有两个显著的区别:第一,同类别的两个实体无须拥有相同的属性;第二,两个实体的同名属性可以拥有不同类型的值。这样,数据存储区实体就成“无架构”的了。你很快就会看到,这种设计既提供了强大的灵活性,同时也带来了一些维护上的问题。
实体跟表行之间的另一个区别在于:实体中的某个属性可以拥有多个值。这个功能有点诡异,不过当你弄明白之后就会发现它的作用其实非常大。每个数据存储区实体都有一个唯一键,它既可以由应用程序提供,也可以由App Engine 生成(随你高兴)。跟关系型数据库不同,这个键不是“字段”也不是属性,而是实体的一个独立元素。如果知道实体的键,就能够快速地将其取出来,还可以执行基于键值的查询。
实体的键在其创建之后就不能修改了,其类别也一样。App Engine通过实体的类别和键去判断它究竟存储在一大堆服务器中的什么位置(不过,键和类别都不能保证某两个实体会存储在同一台服务器上)。
《GAE 数据存储实体和属性》留言数:0