对于Google App Engine数据存储使用JDO 2级缓存是否可行(并且有意义吗?)
首先,为什么Google的网页上没有关于此的文档?它有一些问题吗?我们是否需要设置限制来保护我们的memcache配额?
根据DataNucleus on Stackoverflow,您可以设置以下持久性属性:
datanucleus.cache.level2.type=javax.cache
datanucleus.cache.level2.cacheName={cache name}
这就是全部吗?我们可以选择任何缓存名称吗?
使用不同设置在互联网上报告此外,我们似乎需要下载DataNucleus Cache support plugin。哪个版本合适?我们只是将它放在WEB-INF/lib
中还是需要更多设置来激活它?
答案 0 :(得分:3)
在你弄明白之前,你必须回答一个问题:
您使用的是哪个版本的DataNucleus?
这篇文章的所有内容都与旧版本的插件有关 - v1。直到最近,Google Plugin for Eclipse才支持AppEngine的DataNucleus插件v2(它基本上是AppEngine和DataNucleus Core之间的管道)。
我建议升级到AppEngine的Datanucleus插件的v2 - 如果你正在使用Eclipse,那很容易 - 有一个用户界面允许你选择v1或v2。只需转到您的项目属性并找到App Engine设置并查找“Datanucleus JDO / JPA版本”。
另外,您必须对jdo-config.xml
进行更改。具体而言,您只需更改一个属性:
<property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/>
SO - 一旦升级到v2,就会指定缓存(jdoconfig.xml的补充):
<property name="datanucleus.cache.level2.type" value="jcache"/>
<property name="datanucleus.cache.level2.cacheName" value="NameItWhateverYouWant"/>
此时,每次放置和使用PersistenceManager时都会自动进行缓存。万岁!
答案 1 :(得分:1)
与L2缓存和GAE / J无关的任何已知问题。如果人们有问题,那么也许他们应该向Google报告。将缓存名称设置为您希望的名称。显然,放入内存缓存的任何内容都必须是Serializable,因为这就是memcache所做的事情。是的,您需要datanucleus-cache插件(版本1.x),并将其放在与任何其他DN jar相同的位置。有一天谷歌将更新为使用DN 2.x
答案 2 :(得分:0)
似乎有问题:我尝试过(使用JPA)并且我收到了其他人已经报告过的错误:http://code.google.com/p/datanucleus-appengine/issues/detail?id=163