2011-03-21 32 views
0

假設我們有一個使用未編碼字符串的JDO實體作爲PrimaryKey。這個未編碼字符串的大小是否有實際的限制?具體來說,我想知道我是否可以使用極其大的String大小超過500 KB。App Engine未編碼字符串作爲鍵 - 字符串長度是否存在上限?

我瞭解內存中對象大小(1MB)和數據存儲實體大小(32MB)上的應用程序引擎配額,我想知道關鍵字段本身。在你開始爲我設計糟糕的設計並告訴我使用實體關係之前,這是一個理論問題,而且我不打算濫用。

任何幫助表示讚賞,謝謝。

-tjw

+0

如果您希望製作一個長字符串作爲實體的唯一標識符,您可能需要考慮對其進行散列並使用散列作爲鍵。 – 2011-03-22 03:06:00

回答

1

在Python一個鍵名被限制爲500個字符。這個限制在Java中也應該很容易測試。

雖然擁有超長鍵名不是一個好主意。這會導致索引佔用更多空間,並可能增加寫入開銷。

有關更多詳細信息,請參閱How Entities and Indexes are Stored

+0

我很困惑,我沒有看到它在那篇文章中列出了未編碼的關鍵限制。 – 2011-03-21 12:56:35

+0

@Travis它沒有列出硬限制;我不知道在任何地方都列出了硬限制。我建議*測試*,並提供一些關於爲什麼長鍵名不是個好主意的想法,以及關於索引/實體存儲如何工作的文檔。在08年或09年IO講座之一,主講人提到存在實際限制(可能http://sites.google.com/site/io/under-the-covers-of-the-google-app-engine-datastore ) – 2011-03-21 17:24:53