我有4个疑惑,
我的模型类是可外部化的。仍然可以使用它们进行查询 服务器节点上的SQLFieldsQuery没有任何问题吗?
无法从远程客户端节点查询可外部化的项目, 对?有没有办法让它在客户端发生?
使用externalizable是否会以任何方式影响节点之间的聚类数据?
使用外部化或任何性能是否存在任何其他限制 关注?
答案 0 :(得分:2)
AffinityFunction
使用密钥来计算哈希并获得适当的分区。因此,结果取决于writeExternal / readExternal实现,这意味着可以在分区之间更改密钥分发。Externalizable
总是一个坏主意。 首先,Ignite将使用速度较慢的OptimizedMarshaller
并生成比默认使用的BinaryMarshaller
更大的对象。
其次,SQLFieldsQuery
上的Ignite只读取二进制对象表示中的特定字段。在Externalizable
的情况下,它必须反序列化整个对象以读取它的字段。因此,这种选择会对性能产生负面影响。
您可以另外使用Binarylizable界面。在这种情况下,将使用BinaryMarshaller
。