我正在寻找一款轻量级、可靠且快速的键值数据库,用于存储二进制数据。它需要简单易用,无需服务器。大多数流行的键值数据库(如CDB和BerkeleyDB)都不支持原生存储BLOB。我错过了哪个最好的选择?
目前我选择使用SQLite,但对于我的简单用途来说它过于先进。
目前我选择使用SQLite,但对于我的简单用途来说它过于先进。
正如之前所指出的,BerkeleyDB确实支持不透明值和键,但我建议更好的选择是LevelDB。
LevelDB:
谷歌是你的朋友 :), 他们甚至为你提供了一个嵌入式数据库:由Google提供的快速且轻量级的键/值数据库库。
特点:
money = 122.45;
key.data = &money;
key.size = sizeof(float);
...
ret = my_database->put(my_database, NULL, &key, &data, DB_NOOVERWRITE);
使用sqlite现在变得非常简单,因为自2014-06以来,新的readfile(X)和writefile(X,Y)函数已经可用。例如,从文件中保存blob到数据库中并再次提取它
CREATE TABLE images(name TEXT, type TEXT, img BLOB);
INSERT INTO images(name,type,img) VALUES('icon','jpeg',readfile('icon.jpg'));
SELECT writefile('icon-copy2.jpg',img) FROM images WHERE name='icon';
查看https://www.sqlite.org/cli.html中的"文件I/O函数"