如何组织大文件,以提高文件的访问速度

lih163 2006-10-16 10:00:24
类似数据库引擎的那种,但不要求象Sql server,Oracl那样的了,轻量极就可以
通用性要好
...全文
252 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lih163 2006-10-23
  • 打赏
  • 举报
回复
Sql Server那样的就不奢望了,我需要的是可户从FTP上下载文件,在本地作为数据源来处理,只要能明显的提高索引文件的速度就可以了,因为数据文件也大,也很多,而且不可预期以后会加那些数据,故把一个文件做一个表处理,个文件之间有部分依赖的关系,类似数据库中的表,但又不想依赖数据库.
具体点是把服务器的关系数据库转化为数据纬度文件,供客户端查询分析
  • 打赏
  • 举报
回复
我在简单地说一下真正的数据库(至少是Access)会包括什么内容:

1. SQL 查询语言,以及查询优化功能。对于每一个SQL查询,不但可以编译出查询步骤代码,而且可以在上百种可能的步骤中挑出理论上最快的一个,然后执行。

2. 支持Transaction。即使在数据库服务器被强行关闭电源的情况下,数据库也不会损坏,而是最多会回滚到出问题之前的那个状态。

3. 支持约束、触发器、任务、视图、分区存储(并行检索)、索引视图等功能。对于SQL Server2005,还支持CLR嵌入编程、Service Blocker、报表服务、移动终端访问api等等服务。

4. 支持对同种或者异种数据库的链接操作。例如可以将很多个数据库链接成一个数据库,对这一个数据库的(虚拟视图)操作自动被转换为对其它数据库的操作。你可以将针对一个SQL Server Express数据库写的程序原封不动地移植到Oracle数据库上,而代码不用改一行,根本不用针对两种数据库去写不同的SQL命令。
  • 打赏
  • 举报
回复
索引文件是个重点。对于已经删除的记录单独维护一个索引文件以便找到需要复用的记录空间,同时用户也可以在接口上使用索引快速找到需要的记录。
  • 打赏
  • 举报
回复
显然只用过数据库没有了解过数据库的构成。好的,就拿“大文件”当作表来说说简单的也可以:

1. 首先你要把文件内容分段,每一段的长度是固定的,对应一条记录。那些不定长的数据或者使用冗余位置(例如不够50个字符的字符串都在后边补'\x0')来转换为定长,或者另外写到其它离散结构的文件中(例如对text类型的每一个数据单独创建一个文件)而仅仅在主文件中保存对应的文件名。

2. 每条记录都有记录号,并且有一个标志标记是否已经“被删除”。被删除的记录的空间可以给下一个插入的记录重复使用。

3. 建立B+树维护程序,负责在主文件数据改变的时候更新索引。由于索引中每一个节点是定长的(索引记录号、索引键值、数据记录号、指向其它关联的索引记录号)。每一个索引也要保存在定长记录顺序文件中。

4. 设计一套操作接口,执行查询、记录增删改等修改功能。
lih163 2006-10-16
  • 打赏
  • 举报
回复
我要以文件作为数据源操作数据,一个文件就是一张表,但在程序里跟读数据库一样的那种
stone_soup 2006-10-16
  • 打赏
  • 举报
回复
加入文件索引服務.
aafshzj 2006-10-16
  • 打赏
  • 举报
回复
问题描述不清楚:
访问是很模糊的词,什么样的访问?
大也是很模糊的词,多大的文件?





欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。

lih163 2006-10-16
  • 打赏
  • 举报
回复
高手呢

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧