加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何将动态数据(未知数量的字段)存储到文件中?

发布时间:2020-12-15 09:49:49 所属栏目:大数据 来源:网络整理
导读:我需要将一些数据存储在一个文件中.每个记录(数据集)包括: 一个字符串(可变长度), 一个整数数组(可变长度), 一个字节数组(可变长度), 一些整数值. 将所有这些东西保存在二进制文件中并不困难.但是,我确信(不幸的是)我的数据格式会随时间发生变化,我希望有可
我需要将一些数据存储在一个文件中.每个记录(数据集)包括:

>一个字符串(可变长度),
>一个整数数组(可变长度),
>一个字节数组(可变长度),
>一些整数值.

将所有这些东西保存在二进制文件中并不困难.但是,我确信(不幸的是)我的数据格式会随时间发生变化,我希望有可能为每个“记录”添加更多字段.所以,显然我的文件格式无法修复.我想最好的解决方案是将数据保存在(DB)表中,但我不想搞砸大枪(SQL,ADO,BDE,Nexus ……).
我需要一个可以做到这一点的基础库(如果可能的话,单个PAS文件).
由于这样做的目的是存储数据而不是处理数据,是否可以在没有DB表的情况下完成?

该库的要求:

>它需要轻松支持超过100万行
>非常轻巧
>如果可能,单个PAS文件
>强制性:易于安装在新机器中(与其编译的项目一起)
>强制性:为了使用它我不需要重新分配任何东西
>强制性:为了使用它,用户不必安装/设置东西
>可以是免费软件/共享软件
>它不必支持SQL查询或类似的高级内容

我用的是D7

解决方法

我不认为你需要一个数据库.如果您使用数据库,我不知道它如何解决您的数据结构更改的问题.

我个人会存储YAML格式,这种格式非常容易扩展.这需要相当多的工作链接到一些LIBYAML所以一个非常轻量级的替代方案是存储到INI文件.它们易于扩展,同时保持与旧文件的兼容性.

您可以非常轻松地滚动自己的可扩展的二进制格式.你所做的就是将每条记录写入一个区块.每个块都有一个包含其长度的短标题.

当您读取到块结束时读取的数据,然后如果您需要更多数据,则只需停止读取并使用数据的默认值.如果您已经读取了所有关于但不在块末尾的数据,则该文件必须来自程序的更高版本,并且您只需跳到块的末尾即可.也许您警告该文件包含您不知道的数据.

通过始终以与先前版本相同的顺序写出数据来实现可扩展性.任何新数据都在每个块的末尾.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读