【问题标题】:Can chronicle-map handle data larger than memory?编年史地图可以处理大于内存的数据吗?
【发布时间】:2016-12-31 12:27:57
【问题描述】:

我对堆外内存的工作方式有点困惑。我有一台具有 32GB 内存的服务器和一个大小约为 1TB 的键值映射数据集。我正在寻找一个简单快速的嵌入式 Java 数据库,它允许我根据这个 1TB 数据集将键映射到一个值,该数据集大部分必须从磁盘读取。该数据集中的每个条目都很小(

我想为此使用编年史地图。我读到堆外内存使用可能超过内存大小,并且它以某种方式与文件系统交互,但同时,Chronicle Map 被描述为内存数据库。 Chronicle Map 可以为我的服务器处理 1TB 数据集,还是我只能使用 32GB 或更少的数据集?

【问题讨论】:

    标签: chronicle chronicle-map


    【解决方案1】:

    答案是取决于您的操作系统。在 Windows 上,Chronicle Map 必须适合主内存,但是在 Linux 和 MacOSX 上,它在主内存中没有修复(不同之处在于内存映射在这些操作系统上的实现方式)注意:Linux 甚至允许您映射大于你的磁盘空间(MacOSX 和 Windows 没有)

    因此,在 Linux 上,您可以将 1 TB 甚至 100 TB 映射到具有 32 GB 内存的机器上。请务必记住,您的访问模式和您选择的驱动器对性能至关重要。如果您通常大部分时间都访问相同的数据并且您拥有 SSD,那么这将表现良好。如果您有旋转磁盘和随机访问模式,您将受到驱动器速度的限制。

    注意:我们已经对 25 亿个条目进行了 Chronicle Map 测试,它使用 64 位散列键表现良好。

    【讨论】:

    • ChronicleMap.size() 为包含 25 亿个条目的地图返回什么?它是否在最大 int 值约 21.5 亿处截止?
    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多