2013-04-12 63 views
0

我使用Python作爲開發腳本和NDB。限制AppEngine(python)NDB只生成32位密鑰

什麼是自動生成數字ID(鍵)默認的算法?如果該應用程序中的記錄總數低於32位範圍,假設應用程序中的鍵值永遠不會超過該值是否安全?

我實際的問題是,我的客戶端應用程序不支持64位整數,如果AppEngine上會生成一個數字鍵比32位整數大,我的客戶端應用程序將表現異常。一種解決方案是使用字符串鍵。但是,大部分客戶端已經編寫完成,並且改變客戶端代碼將會是巨大的重新考慮因素。

是可以限制應用服務引擎,以產生下面大於32位的值的數字鍵?由於

+0

鑰匙和ID兩個GAE不同的東西...... – Lipis

+0

您是否嘗試過SDK 1.7.7?這可能是固定的。 – dragonx

回答

0

號所有的文件說的是,ID是系統生成:https://developers.google.com/appengine/docs/python/ndb/entities#numeric_keys

但是,您可能能夠使用allocate_ids讓系統產生一些IDS給你,你可以決定是否使用這些ID。只要allocate_ids最終返回一個足夠小的值,這將工作,但這也不能保證。

幫助(但不保證)的一種方法是避免使用實體組:每個實體組都有自己的一組數字ID。這是不是一個偉大的使用實體組的,但因爲寫速度的實體組是有限的(1寫入/秒是經驗法則)

真正的解決辦法是硬着頭皮,讓你的客戶端應用程序能夠處理大整數ID。