온라인 카탈로그를위한 데이터베이스가 필요합니다. 제품 당 하나의 데이터 세트가 가능한 경우. 그리고 간단한 데이터베이스; 그게 내가 h5py 사랑하는거야.h5py 또는 유사한 계층 데이터베이스에서 빠른 검색
그룹의 visititems
방법은 대용량 파일에는 빠르지 않습니다.
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 (''):
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 나 그와 비슷한 메모리에서 작동하는 데이터베이스에는 관심이 없습니다. 왜냐하면 데이터의 변경 사항을 동기화하기가 어렵 기 때문입니다. 그러나 다른 해결책이 없다면 ...