Joe*_*ton 23
大部分取决于您的使用案例.
与传统的关系数据库相比,我在处理各种基于HDF5的方法方面有很多经验,所以我不能过多评论SQLite库的python ...
至少就h5pyvs而言pyTables,它们都通过numpy阵列提供非常无缝的访问,但它们面向非常不同的用例.
如果您想要快速访问任意基于索引的切片的n维数据,那么使用起来要简单得多h5py.如果您的数据更像表格,并且您想查询它,那么这pyTables是一个更好的选择.
h5py与HDF5库相比,它是一个相对"香草"的包装器pyTables.如果您要定期从其他语言访问HDF文件(pyTables添加一些额外的元数据),这是一件非常好的事情. h5py可以做很多事情,但对于某些用例(例如,什么pyTables做),你需要花更多的时间来调整事情.
pyTables有一些非常好的功能.但是,如果您的数据看起来不像表,那么它可能不是最佳选择.
为了给出一个更具体的例子,我用相当大(数十GB)的3维和4维数据阵列工作了很多.它们是浮点数,整数,uint8等的同质数组.我通常想要访问整个数据集的一小部分. h5py这使得这非常简单,并且在自动猜测合理的块大小方面做得相当不错.从磁盘中抓取任意块或切片要比简单的memmapped文件快得多.(强调任意......显然,如果你想抓住一个完整的"X"切片,那么一个C排序的memmapped数组是不可能击败的,因为"X"切片中的所有数据都在磁盘上相邻.)
作为一个反例,我的妻子收集来自各种传感器的数据,这些传感器在几年到几秒的时间间隔内进行采样.她需要在她的数据上存储和运行任意查询(以及相对简单的计算). pyTables使这个用例非常容易和快速,并且仍然比传统的关系数据库有一些优势.(特别是在磁盘使用率和可以将大型(基于索引的)数据块读入内存的速度方面)
| 归档时间: |
|
| 查看次数: |
3373 次 |
| 最近记录: |