存储运行时填充的巨大 Map 对象以供其他工具重用的最佳方法是什么?
What's the best way to store a huge Map object populated at runtime to be reused by another tool?
我正在编写一个 Scala 工具,可以将 ~300 JSON 模式文件编码为不同格式的文件并将它们保存到磁盘。这些模式我后来重新需要实例化 JSON 数据文件,或者更好的是,我不需要所有模式,但每个模式只需要几个字段。
我当时认为最好的解决方案可能是填充一个只包含我需要的信息的 Map 对象(当该工具对模式进行编码时)。然后重新使用 Map 对象(在工具的另一个 运行 中)作为已经编译和填充的地图。
我有两个问题:
1. 这真的是最高效的解决方案吗?和
2. 如何将在 运行 时创建的 Map 对象作为文件保存在磁盘上,稍后 built/executed我的其余代码?
我已经阅读了一些关于序列化和存储对象的帖子,但我不完全确定这些是否与我需要的相同。另外,我不确定这是最好的解决方案,我想听听比我更有经验的人的意见。
我想要实现的是一个优雅的解决方案,它允许我从另一个工具生成的地图中查找值。
compiling/building/executing 的整个过程有时仍然让我感到困惑,如果问题微不足道,我们深表歉意。
为了回答你的问题,
考虑到文件数量和遍历量,我认为使用嵌入式 KV Store 会更有效。
这是 "How to use RocksJava" 上的一个小型 Wiki。您可以将其视为 KV 存储。 https://github.com/facebook/rocksdb/wiki/RocksJava-Basics
您可以使用以下参考在 Scala 中序列化和 de-serialize 一个对象,并将其作为我在评论中提到的键值对放入 RocksDB 中。
关于如何使用 rocksDB,构建中的以下依赖项就足够了:
"org.rocksdb" % "rocksdbjni" % "5.17.2"
谢谢。
我正在编写一个 Scala 工具,可以将 ~300 JSON 模式文件编码为不同格式的文件并将它们保存到磁盘。这些模式我后来重新需要实例化 JSON 数据文件,或者更好的是,我不需要所有模式,但每个模式只需要几个字段。 我当时认为最好的解决方案可能是填充一个只包含我需要的信息的 Map 对象(当该工具对模式进行编码时)。然后重新使用 Map 对象(在工具的另一个 运行 中)作为已经编译和填充的地图。
我有两个问题:
1. 这真的是最高效的解决方案吗?和
2. 如何将在 运行 时创建的 Map 对象作为文件保存在磁盘上,稍后 built/executed我的其余代码?
我已经阅读了一些关于序列化和存储对象的帖子,但我不完全确定这些是否与我需要的相同。另外,我不确定这是最好的解决方案,我想听听比我更有经验的人的意见。
我想要实现的是一个优雅的解决方案,它允许我从另一个工具生成的地图中查找值。
compiling/building/executing 的整个过程有时仍然让我感到困惑,如果问题微不足道,我们深表歉意。
为了回答你的问题,
考虑到文件数量和遍历量,我认为使用嵌入式 KV Store 会更有效。 这是 "How to use RocksJava" 上的一个小型 Wiki。您可以将其视为 KV 存储。 https://github.com/facebook/rocksdb/wiki/RocksJava-Basics
您可以使用以下参考在 Scala 中序列化和 de-serialize 一个对象,并将其作为我在评论中提到的键值对放入 RocksDB 中。
关于如何使用 rocksDB,构建中的以下依赖项就足够了:
"org.rocksdb" % "rocksdbjni" % "5.17.2"
谢谢。