我有一个使用Roaring64NavigableMap作为neo4j插件的代码,该插件是使用来自Neo4J API的getId()的节点的长值。
我想使用纪事图。我看到这个例子:
ChronicleSet<UUID> uuids =
ChronicleSet.of(Long.class)
.name("ids")
.entries(1_000_000)
.create();.entries(1_000_000)是否限制了缓存或企业的DB数?Chronicle-Map发布于 2019-06-06 17:25:34
如果我不知道该预测多少值呢?.entries(1_000_000)是否限制缓存或DB条目数?
来自entries()方法的Javadoc:
配置要插入到此构建器创建的散列容器中的条目的目标数目。如果
ChronicleHashBuilder.maxBloatFactor(double)被配置为1.0 (这是默认的),那么这个条目的数量也是最大的。如果尝试插入比配置的maxBloatFactor更多的条目,乘以给定的条目数,可能会引发IllegalStateException。 此配置应表示在异常突发期间处于稳定状态的预期最大条目数maxBloatFactor --最大膨胀系数。 更准确地说--尝试配置条目,这样创建的哈希容器将提供大约99%的请求,其大小小于或等于这个数目。 您不应该在实际的目标条目数量之上添加额外的空白。HashMap.HashMap(int)和HashSet.HashSet(int)构造函数推广了这种糟糕的做法,它们接受容量,应该乘以负载因子,以获得实际的最大期望条目数。ChronicleMap和ChronicleSet没有负载因子的概念。
因此,这是条目的最大数量,除非您指定了maxBloatFactor(2.0) (或10.0等)。目前,纪事地图不支持“我真的不知道我会有多少个条目;可能有10亿个;但我想创建一个地图,它将有机地增长到所需的大小”。这是已知的限制。
是否有办法处理十亿个条目的大量数据?
是的,如果你有足够的内存。尽管内存映射,但当数据量明显大于内存时,记事地图并不能有效地工作。在这种情况下使用LMDB或RocksDB或类似的东西。
https://stackoverflow.com/questions/56466187
复制相似问题