appengine数据存储区中键的用法是什么:我是Appengine的新手,任何关于它的信息都会很棒。
答案 0 :(得分:4)
为了简单起见,我们假设MySQL将表的所有行存储在一个文件中。这样,它可以通过扫描该文件找到所有行。
App Engine的数据存储区(BigTable)没有表格的概念。每个实体(MySQL中的〜行)都是单独存储的。 [它也可以有一个单独的结构(〜列)。] 因为实体没有以任何方式连接,所以没有“默认”方法来完成所有这些。每个实体都需要一个ID,必须编入索引。
密钥包括:
请注意,最接近的是概念相似性。 从技术上讲,这些事情无关。在MySQL中,数据库和表格代表实际的存储结构。在BigTable中,它们只是ID,存储实际上是平的,即每个实体本质上都是一个文件。
换句话说,以身份身份,a key
到an entity
,因为the database + table + primary key
在MySQL表中是a row
。
实体的关键:
为了能够检索所有类型的实体,App Engine会自动构建索引。这意味着App Engine会维护您所有实体的列表。更具体地说,它维护了实体密钥的列表 可以定义复杂索引以在多个属性(〜列)上运行查询。
与MySQL相比,每个BigTable查询都需要一个索引。无论何时运行查询,都会扫描相应的索引以查找满足查询条件的实体,然后按键检索各个实体。
常见的高级用法是识别URL中的实体,因为每个键都可以表示为URL安全字符串。当在URL中传递实体的密钥时,可以明确地检索实体,因为密钥唯一地标识它。
此外,通过其键检索实体是非常一致的,而不是对索引的查询,这意味着当实体被其键检索时,它保证是最新版本。
(我在示例中故意使用MySQL,因为我对它比对任何其他关系数据库更熟悉。)
答案 1 :(得分:0)
请阅读https://developers.google.com/appengine/docs/java/datastore/#Java_Entities ...您可能要删除自己的问题,并在完成本文档部分的研究后再次提问。
(这是为了帮助你,而不是抱怨。)