首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效的磁盘数据保存结构

高效的磁盘数据保存结构
EN

Stack Overflow用户
提问于 2022-07-22 13:10:57
回答 1查看 42关注 0票数 0

我正在处理许多数据集,这些数据集的结构键为_。键值可以是可变长度字符串或整数。该值可以是任意日期类型。日期可以是不连续的。一个示例集可能是:

ABC\12-2021年12月

DE=21-2022年12月-5.0

HIJGSDFSDF\13-2021年12月1日

ABC\15-2021年12月-5.0

一般来说,每个数据集可以有大约5,000个日期和~20000个标识符。我正在尝试将其存储在磁盘上,这样就可以高效地将其加载到Python中。进入的方式可以是:

  1. 返回文件中的所有键、日期和值,
  2. 返回给定的键列表的所有日期和值,
  3. 返回所有值,用于键和日期的输入列表(保持输入顺序)。日期查找可以是模糊的,具有回溯和容忍度,例如在10天内返回最近的值

重点在于快速阅读--写入速度可能更慢。

到目前为止,我的想法是:( a)头信息(包括数据类型等)数组的唯一键,并偏移到文件中的数据c)在每个偏移量,存储(日期,值)对按日期顺序排序

所有读取都将基于文件的内存映射。然后,这三种阅读方式看起来如下:

  1. 从b)读取所有键,根据偏移量和数据大小计算所需数组的大小,然后为键/日期/值分配三个数组,并遍历文件并复制到每个数组
  2. 中,与1相同,但根据输入
  3. 筛选键数组首先对键和日期数组进行排序,然后对每个键进行迭代,移动到偏移量,并对每个日期执行二进制搜索以获得值。完成之后,执行另一种操作,使其回到原来的顺序。

我想知道是否有更好的数据结构或方法来解决这个问题。

编辑:考虑了数据库,例如SQLITE,但是不认为这是对读取类型3的性能。例如,如果我的输入键数组是(a,b,a,b,b)和日期数组是(11-11月,11-11月,13-11月,12-11月,12-11月,15-11月),那么SQL查询将需要:为每对唯一的键/日期构建where子句,然后再进行排序。此外,回溯还需要更多的复杂性,好像没有a,11-Nov对,但是有a,5-Nov对,这应该返回。

EN

回答 1

Stack Overflow用户

发布于 2022-07-22 13:19:46

我不是专家,但我使用‘Parquet’来改善磁盘存储和阅读时间。

https://www.rstudio.com/blog/speed-up-data-analytics-with-parquet-files/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73080923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档