2015-04-10

今天终于完成了数据库部分,这个数据库是完全自己设计的,纯Lua实现。

不通过网络而是直接文件读取,当文件有修改时也能直接立即的更新。

整个数据库打开后占用内存10M,2000个商品10年1分钟级的价格数据106G磁盘空间(随机填充的)。 所有商品算一遍任一个时间点的MA100,也就是以时间为索引,纯磁盘获取2300*100条数据,单核耗时0.6秒,完全超乎要求了。

目前返回结构化数据用了10%时间,磁盘读取用了23%时间,磁盘数据解析10%,内存申请15%,其他GC相关用了30%左右时间。 另外第一版代码耗时是1.8-2.5秒,原因是因为内建的LRU,本来想LRU来提高速度,结果发现对于这种大量的小数据来说,LRU去掉更快。

做到这个速度意味着我可以无视内存了。

root@ubuntu:~# ./luajitrun.sh testma100.lua
0.55863 sec
0.5293  sec
0.634713        sec

这个数据库做的最累的就是索引,和索引的实时更新了。整个索引不用全部读入内存,直接动态的红黑树只读需要的单项。

占用内存做的那么小还是考虑到灵活性,因为现在各家云便宜的cpu不少,但内存则相对较贵。 少量的内存意味着我可以在需要时开一堆低配的服务器进行计算,价格也能达到最低。

下面开始做数据统计测试的界面了。


回主页