我对Google App Engine数据存储为什么使用密钥和和ID有个疑问。从关系数据库背景来看,我将实体与行进行比较,为什么在存储实体时它需要一个键(这是一个长自动生成的字符串)和一个ID(可以手动或自动输入)?这似乎是识别记录的空间的巨大浪费。再次,我对这种类型的数据库是新手,所以我可能会错过一些东西。数据存储区为什么使用密钥和ID?
0
A
回答
0
基本上,密钥是从两片的信息来构建:
- 的实体类型(在物化,它是类的对象)
- 的实体的ID /名称
因此,对于给定的实体类型,密钥和id是完全相同的。
如果您自己没有指定ID,则会生成一个随机ID并根据该随机ID创建密钥。
0
关键设计是高效数据存储操作的关键部分。这些键是存储在内置和自定义索引中的,当您查询时,您可以要求只返回键(在Python中:keys_only=True
)。只有键的查询花费的是常规查询的一小部分,无论是在$$还是在较短的时间内,并且具有非常低的反序列化开销。
所以,如果你有存储在您的密钥ID的有用/有趣的事情,你可以进行纯键查询和找回大量有用数据的匆忙和非常便宜。
注意,这延伸到母密钥和命名空间,这是关键,因此更多的地方,你可以在“商店”有用数据的所有部分,并与纯键查询检索所有的它。
这是一个重要的优化理解和我们整体设计的重要组成部分。
相关问题
- 1. 共享内存:密钥和ID有什么区别?
- 2. 为什么GWT不能反序列化本地数据存储区密钥?
- 3. GAE数据存储密钥使用
- 4. Google云数据存储:使用密钥
- 5. Maven Jarsigning使用密钥存储区
- 6. 在ProtoRPC.Message中使用数据存储实体的ID或密钥
- 7. 使用大查询连接数据存储区密钥
- 8. 使用存储在Windows密钥存储区中的密钥作为OpenSSL中的预共享密钥
- 9. 为什么我不能加密/解密数据库存储的HMAC密钥?
- 10. Android密钥存储区存储令牌
- 11. 什么用于加密密钥和存储位置?
- 12. 如何将数据存储区密钥用作通道API客户端ID?
- 13. 使用密钥()ID()在GAE数据存储和。反向地理编码
- 14. 使用IBM默认密钥存储区而不是使用系统属性设置的密钥存储区
- 15. 从应用引擎数据存储中检索密钥/ ID值?
- 16. 为什么使用Core数据存储?
- 17. 什么是RSA“密钥ID”?
- 18. 什么是存储API密钥和加密密钥的最佳方式?
- 19. 为什么服务需要应用程序ID,API密钥和API密钥?
- 20. 如何链接数据存储和文档使用密钥
- 21. APP ID和API密钥有什么区别?
- 22. 存储PBKDF2加密密码时使用什么数据类型?
- 23. 频道和密钥有什么区别
- 24. 使用Java从MacOS X密钥存储区获取私钥
- 25. 如何使用主密钥存储多个ID /密码
- 26. Google App Engine - 数据存储区密钥ID int与字符串性能
- 27. 为什么在应用程序之外存储API密钥?
- 28. Twitter消费者密钥和密钥之间有什么区别?
- 29. 存储密钥
- 30. 存储密钥
该id只是您可以控制的关键的一部分,如果您选择。读一下“https:// developers.google.com/ appengine/docs/python/datastore/entities”,它定义了你的密钥是什么/为什么 – 2013-03-27 01:25:09
为了澄清,你必须拥有两者,因为密钥是依赖的在ID? – user2213892 2013-03-27 01:31:25
是的,对于某些使用情况,您可能需要明确设置密钥中的ID。 – 2013-03-27 01:34:11