0

我正在研究一個將從GAE獲取數據的移動應用程序,並且我試圖在使用Protocol Buffers和JDO之間做出決定。首先,我不確定如何讓PB持久。我知道這只是使用JDO的註釋標記問題。Google App Engine上的協議緩衝區與JDO

我也看到這thread他們警告PB數據不能被索引。不過,我不確定這對我是否有問題。是否有一個快樂的媒介,就像使用JDO進行持久化的方式,但是使用PB進行通信?

感謝

編輯:聽起來就像是最初的考慮是一個壞主意,但我仍然不知道如果我能得到使用的PBS的好處只是將數據發送到客戶端。將JDO對象轉換爲PB對象以傳輸給客戶端的開銷是否超過了PB的好處?實際上,聽起來這就是GAE內部發生的情況,無論如何,這可能意味着它是一個很好的選擇......

+0

是否可以跳過JDO/JPA並直接向DataStore發送PB數據? – 2011-05-14 14:04:59

回答

0

這裏的聚會很晚,但答案是「它要看」。 :-D

  1. 你的主要目標是什麼?你想在更大的圖景中實現什麼?
  2. 你有多少數據?你有多少物品存放?大約有多少字節?
  3. 是否有很多小對象,一些大對象或所有不同的類型?
  4. 您嘗試使用哪些編程語言來使用數據?
  5. 您的主要資源約束是什麼?你是內存綁定,還是CPU綁定,或網絡帶寬綁定?
  6. 您與供應商的關係如何?

JDO的優勢在於它可以與Java無縫地互操作,它直接內置於App Engine中。爲了讓它立即可用,這很難被打敗。

協議緩衝區的優點是非常高效,並且可以用很多語言工作 - 谷歌支持Java,Python,C++,但第三方支持的其他語言有huge list。而且它們是可擴展的並且很容易維護。

正如您所指出的那樣,JDO對象會被App Engine自動編入索引,但很難失去它,儘管您可以很簡單地構建自己的索引。

我坦率地說,這些天使用協議緩衝區語言作爲數據定義語言,但是大部分東西都是以JSON的形式發送的 - 當它們集中存儲時,它們只能轉換回原型,我可以節省大量的存儲空間...