2014-01-18 72 views
0
class Author (db.Model) 
    name = db.StringProperty() 

class Book (db.Model) 
    author = db.ReferenceProperty (collection_name="books", indexed=True) 
    name = db.StringProperty() 

author = Author.get (author_key) 
q = Book.all() 
q.filter ("author =", author.key()) 
q.filter ("name =", "BOOK_NAME") 
book = q.fetch(1)[0] 

book.author.name 

最後一條語句(book.author.name)是否會導致另一次讀取數據存儲?如果已經獲取數據存儲,數據存儲會提取引用實體嗎?

回答

2

如果你是剛剛起步,可以考慮使用NDB,其內置了獲得請求的cacheing。

+0

不過即使是從NDB緩存提供一個額外的查詢將被考慮。 – Sandeep

+0

是的,這種訪問模式正確。 ndb只有緩存不會被查詢。 –

+0

我不一定建議ndb會解決具體的問題,但它確實引入了一些高效的內置緩存。 –