Database 在我的笔记本电脑中存储一组较大的键值对?

Database 在我的笔记本电脑中存储一组较大的键值对?,database,key-value-store,Database,Key Value Store,我手上有大约4400万个键值对需要存储在笔记本电脑中。键和值都是短文本,并且键都是唯一的。它们的总大小约为几GB 我试图将它们存储在GDBM数据库中。问题是,每当我插入一条新记录时,GDBM都会检查密钥的存在,并且随着数据库的增长,它会变得越来越慢。我的存储程序运行了2个小时,没有很快完成的迹象,所以我放弃了 所以现在我正在寻找一个键值数据库系统 添加记录时速度相当快,最好与数据库大小无关 最好是简单和小,这样我就不必在我的笔记本电脑上运行大量的守护程序(最好是根本没有守护程序)。我不需要经常

我手上有大约4400万个键值对需要存储在笔记本电脑中。键和值都是短文本,并且键都是唯一的。它们的总大小约为几GB

我试图将它们存储在GDBM数据库中。问题是,每当我插入一条新记录时,GDBM都会检查密钥的存在,并且随着数据库的增长,它会变得越来越慢。我的存储程序运行了2个小时,没有很快完成的迹象,所以我放弃了

所以现在我正在寻找一个键值数据库系统

  • 添加记录时速度相当快,最好与数据库大小无关
  • 最好是简单和小,这样我就不必在我的笔记本电脑上运行大量的守护程序(最好是根本没有守护程序)。我不需要经常访问这个数据库
  • 易于快速访问。至少我不需要在内存中加载整个数据库。我曾经考虑过将它们存储在一个大的XML/JSON文件中,但是加载它并访问条目将是一件痛苦的事情(…对吗?)
  • 理想情况下,将所有内容存储在单个文件中
  • 理想情况下,它具有Python接口。虽然我不介意写C/C++
我不需要经常访问数据库(可能每周或每月,这种频率)。它只供我个人使用,所以不需要使用主从/并发/负载平衡的魔法。我可能需要不时地查找一些条目,或者有时在整个集合上迭代一两次以获取一些统计信息。一旦数据最初存储,我通常不会(也许永远不会)更改它

如果有帮助的话,我正在使用带OSX的2011 Macbook Pro(无SSD)

我应该使用什么数据库


更新:我一直在测试一些重要的数据库,包括谷歌的leveldb


然后我将我的OS X 10.10公测版(我一直在使用它)升级到发行版,问题消失了……实际上DBMs现在都很快。

也许你可以试试koyoto cabinet。

试用redis。然而,您并没有深入地告诉我们您是如何访问数据的,无论是手动访问、脚本访问、软件访问还是其他访问方式,所以其他解决方案可能会更好。此外,您可以仅在需要访问数据时启动redis deamon,而无需一直运行它(您使用的是windows吗?)。嘿@faboolous,谢谢您的评论。我正在为我的问题添加更多信息。我知道Redis。我只是觉得对于这样一个简单的问题来说有点过分了。但也许最后我会用它。它支持将数据存储在单个文件中吗?redis擅长于作为键值存储——这正是您所需要的……但实际上,它可能会满足您的需求。似乎有一个只附加文件选项,但我不确定这是你想要的need@faboolous,似乎只附加文件的功能是防止突然终止导致的数据丢失…所以对我来说可能没有用处…Chronicle Map可以做你想做的事情,它可以在Macbook(带SSD)上每秒进行多达1000万次更新/插入/删除,没有守护进程,它只将您需要的加载到内存中,使用一个文件,但它仅用于JVM。你能考虑一下Jython吗?谢谢,我会试试看。事实上,它是DBM的一个实现,这是令人鼓舞的XD