我正在創建一個數據庫,我有以下層次結構:主題 - >主題 - >頁面。我知道只會有兩個主題。藝術和科學可以說。是否可以創建一個主題,將父鍵設置爲字符串「Arts」,這樣我就不必創建只有兩個值的db.model Subject了?另外,如果我確實需要創建一個從db.Model繼承的Subject類,那麼是否有一種方法可以避免放入任何參數,因爲key.name將是該主題的名稱?可能創建密鑰作爲祖先而不使用db.model類?
0
A
回答
0
只要指定一個祖先密鑰就夠了,祖先本身就不必存在。
您不必在模型中提供任何屬性。
class MyModel(db.Model):
pass
而且最後我猜想你是剛剛起步,所以我會建議您切換到ndb
你去遠了。
0
蒂姆的回答是正確的。我只是想補充一點,那就是讓你的所有實體都在兩個祖先之下是一個糟糕的設計。
先祖存在於您需要確保事務完整性的情況下。對你來說可能是這樣,在這種情況下,忽略這一點。
使用祖先限制了該祖先樹內所有實體的寫入性能。如果你真的不需要鎖定所有這些實體,你可能實際上不使用祖先,而只是一個普通的屬性。
相關問題
- 1. 帶祖先密鑰的PersistenceManager.getObjectById
- 2. 通過id/key獲取實體而不指定祖先密鑰
- 3. 我可以對同一個實體類型使用簡單密鑰和祖先密鑰嗎?
- 4. 更新數據存儲實體 - 更改祖先而不更改實體密鑰
- 5. 是否有可能爲每個密鑰提供多個值而不必首先查找密鑰?
- 6. 使用RSA私鑰創建密鑰庫
- 7. 的Python:使用可變作爲密鑰
- 8. Sass祖先類
- 9. 使用pkcs11Interop創建3DES密鑰並輸出密鑰值或創建密鑰值用於創建
- 10. 爲緩存創建密鑰
- 11. 使用SSH密鑰創建用戶,不使用密碼
- 12. 如果我使用祖先關係創建密鑰,則Google應用引擎數據存儲失敗
- 13. Ansible provisioning錯誤!使用SSH密碼而不是密鑰是不可能的
- 14. 是否有可能創建/創建我丟失的密鑰庫?
- 15. 如何爲筆記文檔創建人類可讀的密鑰
- 16. 使用「userData.uid」作爲密鑰
- 17. 使用membrerepression創建字典作爲密鑰
- 18. 爲什麼git使用GPG密鑰而不是使用SSH密鑰簽名?
- 19. Ruby從預先存在的密鑰字符串中創建密碼密鑰
- 20. 想要爲AES加密創建密鑰
- 21. 選擇祖先的屬性; 「../ ..」的作品,‘祖先:: <tagname>’不
- 22. 當密鑰有父密鑰,祖先查詢時,是否通過密鑰獲取特定的App Engine實體?
- 23. 從祖先矩陣創建二叉樹
- 24. 不能在mysql中創建表,因爲foriegn密鑰約束
- 25. DatastoreInputReader使用實體種類與祖先
- 26. 在Google App Engine中從祖先路徑生成密鑰
- 27. 有沒有辦法更新密鑰,以包括祖先
- 28. 使用主密鑰和僞密鑰創建表
- 29. 創建ecdsa密鑰
- 30. 將SSH設置爲僅使用密鑰,而不是密碼
謝謝我會牢記這一點,但它如何確保交易完整性? – Alxander
我同意。如果您可能在許多共享祖先的實體中進行大量併發寫入操作,那麼您很可能會爭用它們。 –
在這裏解釋有點太長了。如果您真的好奇,請閱讀Google的BigTable白皮書。根據我的理解,這可能不是100%準確的,同一祖先下的實體存儲在同一臺服務器上,因此它們可以被鎖定以進行交易。但是這也意味着你失去了數據存儲的正常分佈式性能。 – dragonx