V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Richard14
V2EX  ›  Python

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

  •  
  •   Richard14 · 2023-02-10 19:27:06 +08:00 · 2327 次点击
    这是一个创建于 648 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    看你的描述并不是很适合
    wuwukai007
        6
    wuwukai007  
       2023-02-13 16:03:46 +08:00
    用 elasticsearch 呢?
    lzwtop
        7
    lzwtop  
       2023-02-18 15:12:11 +08:00
    这个我经常用,主要用在卫星遥感上,适合临时存储数据用,存储类似于操作系统树状结构,优于 csv 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2448 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:10 · PVG 00:10 · LAX 08:10 · JFK 11:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.