最近在设计一种文件格式,需要有小型数据库的功能(insert,update,delete,select),使用数据库来操作当然可以完成我们需要的功能,但效率上太慢,因为我们的数据很特殊,如果可以充分利用数据的特性来设计一个好的文件格式将操作起来特别快。
建议boss使用Berkeley DB,他说别提那破东西,上次就吃了他的亏,用户一旦把使用进程给kill了,这样数据库就很有可能起不来了,这个使用我们是一点解决办法也没有,说是Berkeley DB也可以使用归档日志情况来解决数据不一致的问题,但那样开销太大了。用户还得出来维护另外一个数据库。所以使用BDB的想法给否定了。
好的文件格式对处理速度上帮助非常大,我们知道Oracle 的ROWID,通过ROWID就可以直接定位到具体的文件中那一个块了,这样读取数据将非常块,通过ROWID来找数据几乎就没有什么查找时间了(省下的就是I/O时间了)。
上次也设计了一个中间交换需要的文件格式,对处理上要求也比较严格。看来设计文件格式真是一门很高深的技术。要做到尽量节省I/O读写,减少查找,快速定位。有时间还得在这方面再好好加强。
学习数据库文件格式设计应该是自己目前最想看的:
http://blog.ednchina.com/exvision/283/message.aspxDataBase File Format:
要是谁知道Oracle, SQL Server, DB2, Sybase的文件格式那将是非常不错了。