一种类似数组或向量的类型,其值存储在Julia中的磁盘上

一种类似数组或向量的类型,其值存储在Julia中的磁盘上,julia,Julia,我正在寻找具有以下属性的类似数组的类型: 将元素存储在磁盘上 元素可以具有复合类型 元素被读入内存,而不是整个数组 可以在不写入整个数组的情况下写入单个元素 支持setindex,getindex,推送,弹出,shift,取消移位和可能vcat 这是相当有效的 到目前为止,我发现了以下线索: 第一个似乎很有希望,但似乎元素的类型必须是isbits(意味着一个简单的数字,一些结构,但不是,例如数组{Float64,1})。而且还不清楚整个数组内容是否加载到内存中 如果它还不存在,我当然会

我正在寻找具有以下属性的类似数组的类型:

  • 将元素存储在磁盘上
  • 元素可以具有复合类型
  • 元素被读入内存,而不是整个数组
  • 可以在不写入整个数组的情况下写入单个元素
  • 支持
    setindex
    getindex
    推送
    弹出
    shift
    取消移位和可能
    vcat
  • 这是相当有效的
到目前为止,我发现了以下线索:

第一个似乎很有希望,但似乎元素的类型必须是
isbits
(意味着一个简单的数字,一些结构,但不是,例如
数组{Float64,1}
)。而且还不清楚整个数组内容是否加载到内存中


如果它还不存在,我当然会尝试自己构建它。

NCDatasets.jl解决了部分需求:

  • 在磁盘上存储元素:是
  • 元素可以具有复合类型:否(尽管NetCDF4中有一些对复合类型的支持,但NCDatasets.jl中还没有)。目前,您只能有基本类型的数组和(基本类型的)向量数组
  • 元素被读入内存,而不是整个数组:是
  • 可以在不写入整个数组的情况下写入单个元素支持setindex!,获取索引,推!,砰!,轮班!,放开!也许vcat:只需设置索引!,获取索引
  • 效率合理:效率对我来说是合理的:-)
自己动手做的项目听起来很有趣。我认为这肯定会成为当前生态系统中的一个缺口

下面是一些值得一看的存储技术:

  • HDF5(用于存储、跨平台和跨语言)
  • JLD2(JLD的继任者)
  • rasdaman(阵列的“数据库”)
  • 也可能是BSON

也许你也可以联系JuliaIO集团。

isbits
并不意味着它不能合成。它只是意味着它必须是一个
isbits
类型的
struct
,就像一个
struct
,有几个复数和一个
Int
。感谢您指出这一点。我编辑了这个问题,我希望它现在是正确的。这不就是为什么吗?我可以
mmap
一个固定大小的多维数组,但是它不可能用于例如
array{array{Float64,1},1}
,其中内部数组的大小是可变的。不过,这可能仍然是最好的解决方案!