Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在h5py或类似分层数据库中快速搜索_Python_Database_H5py - Fatal编程技术网

Python 在h5py或类似分层数据库中快速搜索

Python 在h5py或类似分层数据库中快速搜索,python,database,h5py,Python,Database,H5py,我需要一个在线目录数据库;如果可能的话,每个产品有一个数据集。和一个简单的数据库;这就是我喜欢的 访问组的方法对于大文件来说并不快速 import h5py #in memory database. Not relevant for this question, same speed. Yes. database = h5py.File('db01h5', driver='core', backing_store=False) #example of 10000 datasets with

我需要一个在线目录数据库;如果可能的话,每个产品有一个数据集。和一个简单的数据库;这就是我喜欢的

访问组的方法对于大文件来说并不快速


import h5py

#in memory database. Not relevant for this question, same speed. Yes.
database = h5py.File('db01h5', driver='core', backing_store=False)

#example of 10000 datasets with a deep of 4 group, file/x10/x10/x10/x10dset
for v1 in ('abcdefghij'):
    for v2 in ('abcdefghij'):
        for v3 in ('abcdefghij'):
            for v4 in ('0123456789'):

                database['/' + v1 + '/' + v2 + '/' + v3 + '/' + 'dset' + v4] = (1, 2, 3)


def fu01(a1, a2):
    pass

#visititems applies function fu01(name, object) to each group and dataset 
database.visititems(fu01)

使用不计算任何内容的函数(pass)“database.visititems(fu01)”需要5秒钟。使用基本参数进行筛选需要x2

我的问题是如何搜索一个大型或非常大型的h5py数据库,并以非常快的速度(10.000种产品的搜索时间不到0.1秒)

h5py/hdf5是正确的方法,还是需要像sqlite3这样的sql数据库

或者,当需要速度时,所有数据都必须在同一个数据集中?将树路径作为一个元素。例如:

database['dataset'] = [['root/categorie/subcategorie/productname'], ['2'], ['10$'], ['blue']]
然后通过一个“列”(高级切片)过滤所有产品


我是数据库新手,现在我对在内存中工作的数据库不感兴趣,比如reddis或类似的数据库;因为很难同步数据中的更改。但是,如果没有其他解决方案…

这不是
hdf
优化的目的。它被设计为有效地存储少量非常大的数据集,并偶然发现大量非常小的数据集

我认为您最好使用某种类型的实际数据库,不管是关系数据库还是非关系数据库

您可能还希望只构建自己的树实现,
visititems
的缓慢之处在于遍历hdf文件的组/数据集树