当前位置: 首页 > 面试题库 >

键值存储建议

轩辕风华
2023-03-14
问题内容

我需要一个用于Java的非常基本的键值存储。我从HashMap开始,但似乎HashMap的空间效率有些低下(我正在存储约2000万条记录,并且似乎需要约6GB
RAM)。

映射为Map<Integer,String>,因此我考虑使用GNU Trove
TIntObjectHashMap<byte[]>,并将映射值存储为ascii字节数组而不是String。

作为替代方案,是否存在仅需要添加jar文件,不立即将整个映射保存在RAM中并且仍然相当快的键值存储?


问题答案:

使用 Berkeley
DB

Berkeley DB将对象图,集合中的对象或 简单的二进制键/值数据直接存储在磁盘上的btree中
。这种简单,高效的方法消除了ORM解决方案中所有不必要的开销。Java开发人员使用直接持久层(DPL),使用存储信息来注释类,就像JPA一样。这种方法是熟悉,高效且快速的。DPL在不牺牲速度的同时降低了数据存储的复杂性。

这肯定会给您带来巨大的内存和速度收益,同时又不会增加应用程序的复杂性。请享用!



 类似资料:
  • 更新时间:2019-07-18 09:59:25 节点简介 键值对存储节点封装了KV存储服务API,开发者可以通过该节点进行键值对形式的数据写入、获取、删除操作。 使用场景 如果您需要在您开发的服务中以键值对形式进行数据的写入、获取、删除操作,那么您就需要使用到键值对存储节点作为服务的中间逻辑节点。 配置项 1、键值对存储节点的默认节点名称为键值对存储,支持用户自定义节点名称 2、选择操作类型,有

  • 问题内容: 我存储了1.11亿个键值对(一个键可以有多个值-最多2/3),它们的键是50位整数,值是32位(最大)整数。现在,我的要求是: 快速插入(键,值)对[允许重复] 基于键快速检索一个或多个值。 这里基于MultiMap给出了一个很好的解决方案。但是,我想在主内存中存储更多键/值对,而不会降低性能。我从网络文章中研究到B +树,R+树,B树,紧凑多图等可以是一个很好的解决方案。有谁能够帮我

  • 问题内容: 我想存储值并从Java HashMap中检索它们。 这是我到目前为止所拥有的: 我想从HashMap中检索所有键和值作为Java集合或实用程序集(例如)。 我知道只要知道密钥就可以获取值,例如: 有没有办法检索键值作为列表? 问题答案: Java Hashmap键值示例:

  • 我想存储值并从Java HashMap中检索它们。 这是我目前所拥有的: 我想从HashMap中检索所有键和值,作为Java集合或实用程序集(例如,LinkedList)。 我知道如果我知道键,我可以得到值,如下所示: 有没有办法以列表的形式检索键值?

  • KeyValueStore is an alternative OSD backend compared to FileStore. Currently, it uses LevelDB as backend. KeyValueStore doesn’t need journal device. Each operation will flush into the backend directly

  • 我有一个Spring boot应用程序,可以连接到AWS上的Redis集群。我正在尝试莴苣,想创建一个,用于将键存储为字符串,而将值存储为字节数组。我尝试使用内置的,但它将键和值都作为字节数组。 我刚接触莴苣,所以我不确定是否需要编写自定义编解码器。如果是,我该怎么写?是否会出现性能问题?还是我走错了路?