2017-07-03 40 views
0

假設我有一個博客應用程序,包含博客文章和評論。App Engine建模問題 - 將生成的ID存儲爲數字或字符串?

class BlogPost(ndb.Model): 
    title = ndb.StringProperty() 
    description = ndb.TextProperty() 

我有當一個博客帖子用戶評論另一種模式:

class Comment(ndb.Model): 
    username = ndb.StringProperty() 
    blog_id = ndb.StringProperty() 
    created = ndb.DateTimeProperty(auto_now_add=True) 

當我查詢特定博文的所有評論,我做的:

query = Comment.query(Comment.blog_id==blog_id).order(-Comment.created) 

是這好嗎?我的問題是,如果可以將blog_id存儲爲字符串屬性而不是原始整數ID,那麼具體問題是什麼?我這樣做是因爲它是一個iOS應用程序,並且長整型ID在iOS客戶端中導致整數溢出錯誤。

這種類型的查詢規模沒有問題嗎?

+0

實體ID只有16位數字。 iOS應用程序的問題如何? –

+0

不知道,但我記得一些類型的內存/整數溢出錯誤。它會有所作爲嗎?將id作爲字符串存儲會好嗎? – JK140

回答

0

我可以看到發生的唯一問題是Comment.blog_id是一個字符串,blog_id是一個數字,所以你會比較一個字符串與一個int。 如果blog_id是一個字符串,那麼你是安全的。 ndb/Datastore索引的工作方式,您的查詢將與字符串或整數相同(性能明智)。

相關問題