有没有熟悉 HDF 的朋友,用 hdf5 相比于直接在文件系统里存数据有什么优势吗?

2023-02-10 19:27:06 +08:00
 Richard14

如题,公司数据目前是跑在关系型数据库上的,大概在亿条这个数量级,最开始构建的时候没考虑其他数据库选型,虽然性能比较一般但是因为业务上剥离不开一些关系型搜索(比如搜索序号介于 n~m 之间的标签,介于 a~b 之间的时间区间内的数据等等)

最近性能上实在是吃不消了,在考虑换数据库。看到网上一个比较一语点醒梦中人的说法是,关系型数据库毕竟是为了复杂关系设计和优化的。我们这个业务虽然有一些关系,但是不多,如果说强行用业务拆解成 kv 式的也不是拆不了,虽然说非常麻烦就是。。。比如业务偶尔还是会用外键 join ,如果自己实现的话就需要用业务保证约束,然后再自己实现个笛卡尔积之类的,想想都头大。。。但是话又说回来还是现在的搜索性能捉襟见肘了,还是得换。

上个月同事试了试时序数据库,说实话业务也不太合适,就强行上了试一试,感觉就是性能远未达到开发厂商标称的那么好,也可能是我们比较菜吧。

最近看了又有人说 hdf5 很香,我花了一个下午通读了一下 h5py 的文档。可能是因为这是个连接库的关系,也没讲什么底层的东西,在我看来就是单文件内实现了一个树状储存结构,我产生一个疑问就是这相比我直接在文件系统里构建一层一层的目录相当于它的 groups ,然后每个 dataset 对应到一个具体的文件里,这有什么区别呢? hdf 看起来似乎也没什么优势,首先用的人不多(相对于互联网产品来说),感觉不是久经检验的健壮业务。增量更新方面也没什么说法,应该是做不了。官方又没有异步支持,我普通存文件起码还能异步读写。。。还有就是全存一个系统里,万一哪天哪里写坏了整个数据库全挂了。。。。

也不支持关系型搜索,单纯 kv+落盘的话我是不是用 mongodb 也行,后者还多那么多缓存代码,我重复读热点的时候人家还有缓存。。。

有没有比较熟悉的朋友讲讲 hdf 适用什么场景啊,和文件系统比又有什么优势?

2302 次点击
所在节点    Python
7 条回复
Syiize
2023-02-10 21:07:36 +08:00
我接触到的 hdf 都是用来存卫星云图之类的数据的,他的结构确实很像文件系统。一般这种图像类的数据都是连续的二进制吧,存成 hdf 最终是写进一个文件里,直接存在文件系统里的话不就变成读写好多个文件了。
oldshensheep
2023-02-10 21:30:09 +08:00
深度学习里有些数据集就是用的 h5 文件格式,感觉就是个压缩包,方便下载传播的。
nightwitch
2023-02-10 23:42:52 +08:00
适合拿来当数据集用,不适合拿来当数据库。
hdf5 支持压缩,支持部分读入
laqow
2023-02-11 13:11:29 +08:00
感觉现在还是个玩具,官方库不支持中文路径,数据类型支持有限,attr 之类的设置时有莫名其妙的数据大小限制。感觉是给开源社区提供一个容易定制的支持二进制和压缩的文件结构。
e3c78a97e0f8
2023-02-11 19:29:19 +08:00
HDF5 主要是存储矩阵和向量的,机器学习里面用的比较多

看你的描述并不是很适合
wuwukai007
2023-02-13 16:03:46 +08:00
用 elasticsearch 呢?
lzwtop
2023-02-18 15:12:11 +08:00
这个我经常用,主要用在卫星遥感上,适合临时存储数据用,存储类似于操作系统树状结构,优于 csv 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX