AerospikeException-错误代码1500:即使已启用ldt,将lmap.put()的名称空间上未启用LDT

时间:2018-08-02 14:05:55

标签: java aerospike

我们有Aerospike服务器版本3.8.3(支持LDT)

我们收到以下异常-

Key key = new Key(aeroconf.getHistoryNamespace(), setName, owner);
        LargeMap lmap = client.getLargeMap(null, key, binName, null);
        //Some processing here..
        lmap.put(Value.get(mapKey), Value.get(monthlyScoreHistory));

在此行lmap.put()-

ldt-enabled true

即使在Aerospike.conf中将SELECT ORD_CODE, ORL_EVENT, ACT_ACT FROM R5ORDERS inner join R5ORDERLINES on ORD_CODE = ORL_ORDER inner join R5ACTIVITIES on ACT_ORDER = ORL_ORDER WHERE ORL_EVENT = '144933' GROUP BY ORD_CODE, ORL_EVENT, ACT_ACT ORDER BY ACT_ACT 设置为名称空间级别,上述情况仍在发生。

1 个答案:

答案 0 :(得分:1)

LMap在server release 3.5.2中被声明为已弃用,而到了3.8.3,您只剩下LList。

您应该改为使用非LDT Map API。使用Aerospike database 4.2时,您还有8MB write-block-size的限制,这应该绰绰有余,尽管您将需要在每个节点上有足够的内存来处理此类块的缓冲并加载可能非常大的记录。从性能的角度来看,拥有多MB记录也不是一个好主意,但是绝对比LMap情况要好,因此这不应成为迁移的障碍。