2013-07-25 63 views
0

我正在創建一個數據庫,我有以下層次結構:主題 - >主題 - >頁面。我知道只會有兩個主題。藝術和科學可以說。是否可以創建一個主題,將父鍵設置爲字符串「Arts」,這樣我就不必創建只有兩個值的db.model Subject了?另外,如果我確實需要創建一個從db.Model繼承的Subject類,那麼是否有一種方法可以避免放入任何參數,因爲key.name將是該主題的名稱?可能創建密鑰作爲祖先而不使用db.model類?

回答

0

只要指定一個祖先密鑰就夠了,祖先本身就不必存在。

您不必在模型中提供任何屬性。

class MyModel(db.Model): 
    pass 

而且最後我猜想你是剛剛起步,所以我會建議您切換到ndb你去遠了。

0

蒂姆的回答是正確的。我只是想補充一點,那就是讓你的所有實體都在兩個祖先之下是一個糟糕的設計。

先祖存在於您需要確保事務完整性的情況下。對你來說可能是這樣,在這種情況下,忽略這一點。

使用祖先限制了該祖先樹內所有實體的寫入性能。如果你真的不需要鎖定所有這些實體,你可能實際上不使用祖先,而只是一個普通的屬性。

+0

謝謝我會牢記這一點,但它如何確保交易完整性? – Alxander

+0

我同意。如果您可能在許多共享祖先的實體中進行大量併發寫入操作,那麼您很可能會爭用它們。 –

+0

在這裏解釋有點太長了。如果您真的好奇,請閱讀Google的BigTable白皮書。根據我的理解,這可能不是100%準確的,同一祖先下的實體存儲在同一臺服務器上,因此它們可以被鎖定以進行交易。但是這也意味着你失去了數據存儲的正常分佈式性能。 – dragonx

相關問題