我正在开发一个应用程序,它需要存储与音乐文件相关的元数据(艺术家,标题,播放计数等),以及整数集(特别是SHA-1哈希)。
我选择的解决方案需要:
fork
另一个进程的情况下进行操作,或至少提供一个简单的界面(如libmysqld)。我考虑过的解决方案包括:
我认为完美的假设解决方案就像Redis,但它将数据保存到磁盘,并且只将一部分数据存储在内存中以便快速检索。 Redis本身可能不是一个好选择因为1)我需要手动fork
,2)它的Windows端口看起来不那么坚固,3)存储所有我的数据在RAM中将不太理想。
对于此类问题是否有其他解决方案,或者我已经列出的解决方案之一远远优于其他解决方案?
答案 0 :(得分:4)
最后,我决定将SQlite用于元数据。它似乎速度快但不快于例如libmysqld,它有一个非常简单的干净C接口。根据基准测试,它应该足够快,以满足我的需求。
对于较大的数据结构,我打算将它们存储在单独的二进制文件中(SQlite网站说它可以存储二进制数据,但如果你的数据大小超过一定数量,那么将它存储在平面文件中会更快相反 - 见this page)。
答案 1 :(得分:3)
除非您需要大象数据库,否则不要将二进制文件BLOBS存储在SQLite中。只需在文件系统上存储带有路径文件名的字符串。 SQLite的唯一缺点是它不允许远程(Web)访问,但您可以将其嵌入到小型TCP / HTTP服务器中。