突发其想想用VB做个能解析SQL的数据库程序。
主要有几个问题自己想一想。
一。文件的存储方式
在文件的存储碰到的问题为
1。选择何种存储格式与方式。
众所周知,一般VB写入文件的格式或方式有OUTPUT,Random,binary和FileSystemObject,其中Random和binary都为PUT写入方式,而OUTPUT为Print和write
一个为逗号分隔,一个为TAB符分隔,FileSystemObject与OUTPUT写入文件方式类似,也为字段和字符行写入。
经过我每个方式测试,每个方式写入一百万条记录,每个记录有10个字段,并字段的长短不一随机而定,但不区分类型,都以字符串类型写入。
其中OUTPUT以逗号方式写入和FileSystemObject是最快的速度差不多,用TAB符就要慢点,binary为第二,Random方式是最慢的因为Random方式是定长写入的。
我想基本上数据的写入方式和储存格式,因该就是这样吧,最多格式上应该可以优化和压缩。
二。文件的读取和快速查找内容
这个就比较麻烦了,我仔细的研究了下,比如我要在那个写入一百万条记录的文件里寻找一条记录,其寻找第一条记录和最后条记录的时间是不同的
除Random方式读取文件可指定记录号,其他方式如INPUT,Binary和FileSystemObject都是一行一行读取或是扫描文件,直到找到你要的数据,当然也有牛人把整个文件读入内存,
并用指针的方式,快速查找到,需要的内容。
关于这个我有个最大的问题想问下各位数据库高手,比如说一条记录中我定义了一个主键或是索引字段,我程序启动把这个字段所有数据都读入内存,我用快速查找算法,或是B树算法找到了此值并直到了对应的行号,或是说数据的位置,那我如何快速在文件中找到此行并快速读取出此条记录的所有信息呢,难道只有扫描整个文件从头开始读取,一直读到我要的那行吗,没有办法直接读取指定的那行数据吗?
我知道Random方式读取数据可以指定记录位置读取,可它只能读取定长的数据,我是想问用INPUT,Binary或是FileSystemObject,是否可以快速读取指定行的数据,就像指针快速指到那行数据,并读取整条记录到变量当中,不要再重头开始一行行往下读,直到读到需要数据,这样速度太慢。
我在网上找了很多例子,和也看了些开源数据库他们的源代码。
我现在能想到的也是把整个表读入内存,让程序在内存中查找数据,这样速度可以很快。但问题是这样的话,当文件越大时,对内存的消耗也越大。
网上也有很多这样查找大文件里数据的例子,但我还是希望能直接读到我指定的那行记录数据信息。
请哪位高手达人不吝赐教,能否告知VB中有无快速读取文件中指定行数据的函数。
谢谢

解决方案 »

  1.   

    http://blog.csdn.net/laotou99/article/details/7793201详细项目地址
    我会把开发进度都放在此博客中
      

  2.   

    其实我不是要问数据结构的问题,我要问的是VB文件函数的问题,
    就是有哪个函数可以快速返回一个文本文件中,指定行的那条记录
    或是用INPUT,或是FileSystemObject,方式打开文件时快速的读取到指定那行的数据。