2016-05-09 21 views
0

我有一個數據存儲實體的種類MyEntity,我想有時使用StringID密鑰和其他時間使用IntIDAllocateIDs生成的密鑰。Google App Engine字符串和整數數據存儲區密鑰可能會發生衝突嗎?

我可以安全地混合字符串和整數ID,而不用擔心字符串ID可能會偷偷覆蓋由AllocateIDs生成的整數ID,反之亦然?

我問的原因是因爲我假設字符串和整數ID使用相同的索引。是否有可能意外地將表示字符串ID的字節序列與表示同一索引上的整數ID的字節序列相同?或者是以某種方式命名空間的字符串和整數ID以防止衝突?

+0

鍵和索引是完全不同的東西。 (關於這一點,字符串和整數也是如此)。 –

+0

這一切都是真的,但最終組成數據存儲區密鑰的字符串和整數在索引中表示爲字節序列,以便有效地檢索它們。 – Dan

回答

1

是的,你可以安全地混合字符串&同一種類的Int ID - 只是相同的密鑰(實體)不能同時使用兩者。沒有重疊的危險。我猜測他們使用類似protocol buffers的序列化密鑰到[]byte

我在生產中使用它,沒有任何問題。

雖然它可能不是最好的設計,但它確實取決於你的情況。

+0

數據存儲本身不會發生覆蓋,但是當您將這些ID傳遞給客戶端並返回時,必須小心,假設您允許僅由整數組成的字符串名稱。 –

相關問題