基于Java客户端的键值数据库
我基本上想在磁盘上存储一个哈希表,以便以后查询它。我的程序是用Java编写的。 哈希表从字符串映射到列表 有很多关键价值商店,但在做了大量的研究/阅读后,我不清楚哪一个对我来说是最好的。以下是一些对我很重要的事情基于Java客户端的键值数据库,java,mongodb,redis,database,nosql,Java,Mongodb,Redis,Database,Nosql,我基本上想在磁盘上存储一个哈希表,以便以后查询它。我的程序是用Java编写的。 哈希表从字符串映射到列表 有很多关键价值商店,但在做了大量的研究/阅读后,我不清楚哪一个对我来说是最好的。以下是一些对我很重要的事情 简单的键值存储,允许您使用单个键检索值 良好的Java客户机,有很好的文档记录 数据集很小,不需要高级功能。同样,我希望它是简单的 我调查过Redis和MongoDB。两者看起来都很有希望,但对我来说并不理想。 如果您的数据集很小,并且希望它简单,请提供任何信息。。为什么不将hashm
如果您的数据集很小,并且希望它简单,请提供任何信息。。为什么不将hashmap序列化为文件或rdbms并将其加载到应用程序中 你怎么不去“查询”你的hashmap呢?关键近似?“相似性”价值观?我不知道,仅仅为了维护一个keyvalue存储对我来说似乎有些过分。查看JDBM2-
我在JDBM 1代码库工作,在jdbm2中看到的东西给我留下了深刻的印象,您正在寻找的是一个支持JDBM 1的库。这些库设计得简单而快速,提供了类似API的集合。下面是一些这样的库,它们允许您使用集合,但在幕后使用磁盘存储
在给出任何答案之前,我首先要问自己,为什么我需要将这个哈希表存储在磁盘上,因为根据您的描述,数据集很小,所以我认为它可以放入内存中。如果只是为了能够在重新启动应用程序后重用此结构,那么您可能可以使用任何格式来持久化它 其次,您没有提供Redis或MongoDB不理想的任何理由。基于您的(简短的)3个要求,我会说Redis可能是您最好的选择:
- 优秀的Java客户端
- 不仅能够存储列表,还支持对列表值的操作(因此数据不不透明)
chronicmap-map=chronicmap
.of(String.class,(class)(class)List.class)
.averageKey(“范围”)
.averageValue(asList(of(0,0),of(1,1)))
.参赛作品(万份)
.createPersistedTo(myDatabaseFile);
然后,您可以像处理简单的
HashMap
一样处理创建的编年史映射
对象,而不必处理键和值序列化 为什么它们不适合您的目的?Space4j还提供透明的群集和索引。
ChronicleMap<String, List<Point>> map = ChronicleMap
.of(String.class, (Class<List<Point>>) (Class) List.class)
.averageKey("range")
.averageValue(asList(of(0, 0), of(1, 1)))
.entries(10_000)
.createPersistedTo(myDatabaseFile);