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的形式发送的 - 当它们集中存储时,它们只能转换回原型,我可以节省大量的存储空间...