Hazelcast便携式序列化

时间:2019-02-18 16:31:29

标签: hazelcast

我想对存储在Portable中的对象使用IMap序列化以实现:

  • 在插入过程中快速索引(不反序列化对象和 反射)
  • 类演化(版本控制)

是否可以在不实现Portable接口的情况下存储我的类?

是否可以存储DateBigDecimal(或具有嵌套结构)的第三方类,它们无法实现Portable接口,但仍可索引?

1 个答案:

答案 0 :(得分:3)

您可以使用Portable来实现快速索引编制,是的。在查询未索引字段时,您还将看到好处,因为不会进行完全反序列化。 VersionedPortable也支持版本控制,但是

  1. 您必须实现Portable接口
  2. 对于可移植设备不支持的类型,您需要将数据转换为受支持的格式,例如,对于“长日期”。而且,您需要为每个属性编码序列化/反序列化并自己处理版本控制。
  3. 便携式仅向后兼容以进行读取。如果您从具有先前版本的应用程序更新数据,那么您将丢失以前由具有更高版本的Portable对象的应用程序完成的新字段更新。

因此,根据您的确切要求,您需要选择正确的序列化格式。

如果版本控制不是那么重要,或者您可以手动处理,但是查询性能很重要,那么“可移植”是有意义的。但是,如果您打算大量使用版本控制,我建议您使用向后/向前兼容的序列化格式,例如Google协议缓冲区。

您可以查看以下示例以了解其概念:https://github.com/gokhanoner/data-versioning-protobuf