nessDB v1.5测试版发布(使用B+ Tree索引结构)

nessDB1.7有了很大的改进,详情见:

http://www.cnblogs.com/overred/archive/2011/10/24/nessDB1_7.html 

 

 

nessDB v1.5已经启用B+ Tree作为索引结构。 

Bencnmark results:

Benchmark(100,0000 entries, 10000 queries)
   =========================================================
    Keys:        20 bytes each
    Values:        100 bytes each
    Entries:    10000000
    IndexSize:    648.5 MB (estimated)
    DataSize:    1030.0 MB (estimated)
    --------------------------------------------------------------------------------------------------------------
    nessDB:        version 1.5(B+ Tree)
    LRU:        closed....
    Date:        Sat Aug 27 14:47:04 2011
    CPU:        2 *  Intel(R) Pentium(R) Dual  CPU  T3200  @ 2.00GHz
    CPUCache:    1024 KB

    +-----------------------+---------------------------+----------------------------------+---------------------+
    |write        (succ:10000000): 0.000016 sec/op; 63728.0 writes/sec(estimated); 10.7 MB/sec; cost:156.917(sec)
    +-----------------------+---------------------------+----------------------------------+---------------------+
    |readseq    (found:10000): 0.000007 sec/op; 133891.6 reads /sec(estimated); 22.5 MB/sec; cost:0.075(sec)
    +-----------------------+---------------------------+----------------------------------+---------------------+
    |readrandom    (found:10000): 0.006636 sec/op; 150.7 reads /sec(estimated); 0.0 MB/sec; cost:66.361(sec)
    +-----------------------+---------------------------+----------------------------------+---------------------+



    Completely Cold-Start(echo 3 > /proc/sys/vm/drop_caches):
    +-----------------------+---------------------------+----------------------------------+---------------------+
    |readseq    (found:10000): 0.000022 sec/op; 44915.5 reads /sec(estimated); 7.5 MB/sec; cost:0.223(sec)
    +-----------------------+---------------------------+----------------------------------+---------------------+
    |readrandom    (found:10000): 0.012902 sec/op; 77.5 reads /sec(estimated); 0.0 MB/sec; cost:129.019(sec)
    +-----------------------+---------------------------+----------------------------------+---------------------+
    |removerandom    (found:10000):    0.006539 sec/op;    152.9 reads /sec(estimated);    0.0 MB/sec 


标签: nessDB
posted @ 2011-08-11 22:28 overred 阅读(231) 评论(3) 编辑 收藏

 回复 引用 查看   
#1楼 2011-10-14 20:07 lgblog      
good a
 回复 引用 查看   
#2楼 2011-10-23 18:16 eaglet      
测试报告能否稍微详细一些?
这个测试报告
没有磁盘的物理读写速度,只有CPU的速度,我觉得读写的速度更大程度是取决于物理磁盘的速度。
键值在插入时是已经排序好的,还是随机的
1030.0 MB/156s = 6.6MB/s 为什么测试报告中是10.7MB /s
冷启动和热启动是怎么定义的?为什么连参数都和梁斌那个一模一样?
另外你这个是不是也和梁斌那个一样,应用场景是一次性写入的?
如果不是,断电时之前已经返回的写入操作是否能确保不丢失?
如果不是,对可变长度的value ,修改时,冗余是怎么考虑的?
比如某个键的value 原来是1K字节,修改后变成10K字节了,那么怎么进行存储分配?

 回复 引用 查看   
#3楼[楼主] 2011-10-24 10:38 overred      
@eaglet
E老大,1.5的测试是基于有序的。
1)ops /sec基本就算反应磁盘操作的
2)10.7MB /s是数据结构自身有大小计算所得。
3)热启动是内存中有部分缓存(系统自身),冷启动是清除缓存。
4)从1.7版本有内存刷磁盘线程,5秒一次(可以调更小)
5)目前对冗余没处理,准备以后增加此功能
6)当value变化后,就是在data文件后aof,前面的冗余。
请关注github最新版(nessDB1.7),功能点:
http://www.cnblogs.com/overred/archive/2011/10/24/nessDB1_7.html