有多少物体是“太多”在Google的DataStore(高级复制)中进行单个事务? [英] How many objects is "too many" for in a single transaction to Google's DataStore (High Replication)?

查看:129
本文介绍了有多少物体是“太多”在Google的DataStore(高级复制)中进行单个事务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  public class HitsStatsTotalDO 
{
@Id
transient private Long targetId;

公共密钥< HitsStatsTotalDO> createKey()
{
return new Key< HitsStatsTotalDO>(HitsStatsTotalDO.class,targetId);


$ / code $ / pre
$ b $所以...我试着做批次使用 HitsStatsTotalDO.createKey()获取10个构造关键字的对象。我试图像这样在事务中获取它们:

  final List< Key< HitsStatsTotalDO>> keys = .... 

//这是在交易中被调用的。
Map< Key< HitsStatsTotalDO>,HitsStatsTotalDO> result = DAOBase.ofy()。get(keys);

引发以下异常:



java.lang.IllegalArgumentException:在单个事务中操作太多的实体组。



请您详细说明多少是太多了,如何解决它?我找不到确切的编号。

问题不在于您要检索的实体的数量,而在于它们在多个实体组中。您可以在交易外进行提取,也可以使用 XG(Cross组)交易

I have following entity (non-relevant fields/methods are removed).

public class HitsStatsTotalDO
{
    @Id
    transient private Long targetId;

    public Key<HitsStatsTotalDO> createKey()
    {
        return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId);
    }
}

So... I'm trying to do batch get for 10 objects for which I construct keys using HitsStatsTotalDO.createKey(). I'm attempting to fetch them in transaction like this:

final List<Key<HitsStatsTotalDO>> keys = ....

// This is being called in transaction..
Map<Key<HitsStatsTotalDO>, HitsStatsTotalDO> result = DAOBase.ofy().get(keys);

which throws following exception:

java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.

Could you please elaborate how many is too many and how to fix it ? I couldn't find exact number in the documentation.

Thanks!

解决方案

The issue is not the number of entities you're retrieving, it's the fact that they're in multiple entity groups. Either do the fetch outside a transaction, or use an XG (Cross Group) transaction.

这篇关于有多少物体是“太多”在Google的DataStore(高级复制)中进行单个事务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆