2012-08-09 44 views
3

我正在將AppEngine用於HR數據存儲,而我的對象的ID爲Long(使用Java)。我不會自己設置ID,但讓數據存儲選擇一個新的唯一ID。到目前爲止,我只看到了正面的ID。AppEngine HR數據存儲區是否自動分配負號?

不AppEngine上也曾經分配的ID負? (假設我沒有要求2^63以上的ID;))

回答

1

答案似乎是:MAYBE。

在我的測試中,我只看到積極的自動生成的ID,但我能夠存儲負的ID(如果手動分配)。除非有人能夠指出我們提供的其他規範或至少一些來自AppEngine團隊的Google員工發言,否則我們必須假設他們至少保留隨時產生否定ID的權利。因此,我們的代碼不能假定生成的ID始終是肯定的。

1

allocate_id_range(預先分配ID的Python方法)如果傳遞負值,會引發異常。所以我想,一個負面的ID鍵是不正確的。

+1

我能夠存儲使用Java負ID的對象,所以AppEngine上數據存儲本身不支持負的ID。但是他們是否生成它們的問題尚未得到解答。 – Daniel

0

不會。只會生成正面的ID。

+1

你知道嗎? – Daniel

+0

我同意丹尼爾的觀點,如果我們要在我們的代碼中假設這一點,我們需要看到一個說明它的規範,所以我們知道我們將來不會感到驚訝。 – Michael

0

在GAE數據存儲對象產生兩個唯一值, 一個是KEY,當你保存(放)操作後,即可製作模型對象,&的實例,它產生,它產生ID(總是會一個正數),並且當然在整個datastrore中都是唯一的。

+0

你說:「永遠是一個正數」。你怎麼知道?這有保證嗎?如果是這樣,請參閱文檔/規格? – Daniel