2009/6/15 Kouga <ncw...@gmail.com>:
SPHiveDB 的目标和 Kouga 的需求有部分符合的地方,比如可以把 sqlite 数据库作为一个数据块保存。
但是不符合的地方比较多,
1)SPHiveDB 预计每个用户单独的数据库大小最好在 1M 一下,最好不超过 4M,由于使用了 tokyo
cabinet,SPHiveDB
在读写的时候是整个数据块全读全写的。这个以后可以进行改进,只写有更新的部分。作为用户的地址本这一类的数据,1M 的大小是足够的。
2)SPHiveDB 把多个用户的数据库合并到一个大文件中(通过 tokyo
cabinet),目的是为了应付互联网上所谓的"长尾",通常作为一个互联网应用,注册用户数和实际使用的用户数是相差很大的。而用户的一些个人数据,在注册之后就需要保存下来,这个时候把多个用户的数据合并到一个大文件,就可以大量的减少文件数量,提高系统的性能。
3)Kouga 的需求,如果只是需要一个 server 来中转数据,如果 sqlite 数据库的数目不是特别多的话,用一个 ftp
这样的服务器应该就足够了。不需要把多个 sqlite 合并到一个大文件中。
2009/6/16 辉郎 <smart....@gmail.com>:
> 如果你只用来收集数据的话,用这个设计就有点重了,甚至有点累赘----杀鸡得用鸡刀(开个玩笑)。剪裁一下应该没有问题~~
> 2009/6/15 Kouga <ncw...@gmail.com>
>>
>>
>> 突然想到,偶现在正在做的一个项目,采集端随车满天跑,偶就让它自己生成了一个Sqlite数据库,用于记录采集到的一些日志和数据,该数据库非常小(压缩后一张软盘都能带走~),随着时间也不过是线性增长(一年数据不超过13MB),各个采集端是互相独立的,但是需要将数据交给就近的服务器----如果服务器用这个项目来保存中转的数据----会不会很好玩?(喂~严肃点~)
>>
>> 好,以上砖头一块~大家慢慢砸~
>>
>> --
>> 签名是什么东西??
>>
>>
>
>
> >
>
这个帖子说的 sphivedb 的目的和 oracle lite 还是不同的。
2009/6/29 Hailong Shu <shuha...@gmail.com>:
Platform: Linux 2.6.16.54 kernel, EXT3 file system , Intel Xeon quad
core 2.0GHz CPU, 2GB RAM, RAID1 Disk
Compilation: gcc 4.1.2
64 个线程,读写 1:1 ,每个线程读 2000 次,写 2000 次,330 次写/秒,327 次读/秒
$bash# ./teststress -c 64 -r 2000 -w 2000
Total Used Time: 389065 (ms), Write 128537 (330.37), Read 127463
(327.61), Fail 0
64个线程,只读,每个线程读 2000 次,1421次读/秒
$bash# ./teststress -c 64 -w 0 -r 2000
Total Used Time: 90071 (ms), Write 0 (0.00), Read 128000 (1421.10), Fail 0
64个线程,只写
$bash# ./teststress -c 64 -r 0 -w 2000
Total Used Time: 234167 (ms), Write 128000 (546.62), Read 0 (0.00), Fail 92
配置为使用 1000 个 TokyoCabinet 文件,测试结束之后,实际产生了 1000 个文件。