[数据库][讨论] key-value数据库

72 views
Skip to first unread message

cocos2dx开发

unread,
Oct 17, 2011, 9:25:39 AM10/17/11
to game.dev.top
有没有免费的支持多进程多线程访问的嵌入式key-value数据库?推荐一个。。

Alex

unread,
Oct 17, 2011, 9:34:38 AM10/17/11
to game.dev.top
1: tokyo cabinet
http://fallabs.com/kyotocabinet/
tokyo cabinet 作者的最新作品,QDBM的后继者,
速度非常快,在日本很多互联网项目里大规模应用,稳定性也很好。
2: LevelDB
LevelDB是一个嵌入式的key-value数据库。它的键和关联值可以是任意的字节数组,并且按照键值排序,排序机制是可以被重载的。数据存储机
制非常简单,仅仅支持Put,Get和Delete命令,然后还有前向和后向迭代遍历。

数据会自动使用Snappy压缩,这是一个压缩库,Google将其用于BigTable,MapReduce和RPC中,并且在四月份宣布开源。
LevelDB也有一些局限:不支持SQL查询和索引,支持多线程单进程访问,并且可以用于嵌入式设备,这将使某些项目收益,但是也会给其他的项目来带
麻烦。

LevelDB优化了批量写操作。它将多个修改请求有序缓存在内存中,在累计到配置文件预设置的阈值之后再写入到磁盘中。对于顺序和随机写操作,以及顺
序读操作来说,它的性能非常优秀,根据Google的性能基准测试,它能在某些测试项目中得分领先SQLite两个数量级。SQLite在随机读操作中
比LevelDB稍好,而在写入较大数据的时候速度两倍快于LevelDB。LevelDB同样也表现得比Kyoto Cabinet优秀,
Kyoto Cabinet也是一个key-value数据库,不过Google并没有像SQLite那样在所有测试项目中均进行比较。同样,Riak
进行了一些测试对比LevelDB和InnoDB,在一些测试项目中,Google的LevelDB要比InnoDB要优秀或者能达到相同性能。

LevelDB是使用C++编写,一些外部的依赖库已经成功地移植到Windows、Mac OS X、Android和各种Unix上。在实际的应用
中,Chrome的一些实验性版本中已经使用了LevelDB,将其作为IndexDB API的实现。而Riak则将其用于节点级的存储。不仅如此,
一家开发3D地图软件的公司UpNext也使用了这套系统。

On 10月17日, 下午9时25分, cocos2dx开发 <alangam...@gmail.com> wrote:
> 有没有免费的支持多进程多线程访问的嵌入式key-value数据库?推荐一个。。

egmkang wang

unread,
Oct 20, 2011, 3:44:44 AM10/20/11
to game.dev.top
上面说的是嵌入式数据库....都嵌入式了,为啥还要支持多进程,多线程???
如果不要多进程,多线程支持,sqlite也是非常不错的选择,在手持设备上面速度飞快.
虽然是一个sql数据库,你可以把他当做是nosql的....

On Oct 17, 9:25 pm, cocos2dx开发 <alangam...@gmail.com> wrote:
> 有没有免费的支持多进程多线程访问的嵌入式key-value数据库?推荐一个。。

Alex

unread,
Oct 20, 2011, 4:48:09 AM10/20/11
to game.dev.top
嵌入式设备上多线程现在也比较常见了,而且要求是key-value数据库,现在key-value库一般是NoSQL,
sqlite似乎是关系数据库吧。

egmkang wang

unread,
Oct 20, 2011, 11:07:20 PM10/20/11
to game.dev.top
sql可以表示nosql的.
再者,sqlite性能也不错的.我以前在WM上面写过程序,C#+SQLite,一个查询好一点也就50ms左右,CPU对比现在,也算是爆弱了.
程序就用一个connection,需要多线程,自己去做同步.
多线程一般会把问题复杂化.
Reply all
Reply to author
Forward
0 new messages