Apache Ignite 中的内存消耗 - BinaryObject 与具体 class 与 SQL

Memory consumption in Apache Ignite - BinaryObject vs concrete class vs SQL

我想知道如何在 Ignite 中保存数据。据我了解,共有三种方法:

  1. 使用以 BinaryObject 作为值的数据网格 - 主要优点是对象可以是动态的。
  2. 使用具有具体 class(例如员工)作为值的数据网格。
  3. 使用 SQL 界面,并使用预定义的架构。

您知道这些方法在内存消耗方面是否存在差异吗?我怀疑至少在使用 BinaryObject 时,系统必须保存密钥(一些序列化表示),因此它可能比其他方法占用更多内存。

最划算的方法是什么?

谢谢! 加尔

这些方法在占用方面没有区别space。上述任何一种方法都可用于访问相同的数据,因为它们都以 BinaryObject 格式运行。但它们在其他方面有所不同。

当使用 POJO 类 时,序列化和反序列化为二进制格式发生在每次数据访问或修改时。此方法会导致更高的 CPU 使用率和堆内存消耗。请注意,存储的内存保持不变,但占用空间会增加。

BinaryObject 方法在性能方面更有效,因为它不需要序列化。 BinaryObject 接口直接与序列化表示一起工作。

SQL 也可以在不反序列化的情况下对 BinaryObjects 进行操作,因此方法 1 和方法 3 之间没有太大区别。SQL 有几点需要考虑。参见 https://apacheignite-sql.readme.io/docs/performance-and-debugging