Skip to main content

利用h5来做一个分布式的kv磁盘存储工具

Project description

安装

pip install -U h5db

目前测试版本为python3,python2不支持

入门

读写数据

例如需要储存和读取下面一个词典

import h5db
import numpy as np


# make sure save_dir exist
save_dir = './data'
save_dat = {'1': np.random.random([10, 1024]), '2': np.random.random([4, 1024])}
h5db.simple_add(save_dir, save_dat)
print(h5db.simple_search(save_dir, ['1', '2']))

说明

  1. h5db默认使用简单hash函数将key分成100个部分,存储到100个对应的h5文件,搜索的时候会同时开启100个进程进行搜索,最后返回一个dict类型: {key: value}, 如果没有搜索到,则value是None;

  2. 对于可以转换成int的类型的key, 默认的hash函数为 int(key) % 100, 对于str类型的key,默认用其sha1值的10位数 % 100;

  3. 目前主要支持{str: np.ndarray} 和 {str: str}这两种数据类型,其他复杂类型未测试

详细用法

主要的类是H5

class H5:
    '''
    H5DB的类
    save_dir: h5文件储存目录
    logger_path: logger储存目录
    l1_size: 一级分类个数
    l2_size: 二级分类个数(h5文件中的groups)
    hash_l1: 可以自定义一级hash函数
    hash_l2:可以自定义二级hash函数
    '''

    def __init__(self,
                 save_dir: str = None,
                 logger_path: str = None,
                 l1_size: int = 100,
                 l2_size: int = 2000,
                 hash_l1: callable = None,
                 hash_l2: callable = None):

主要作用的两个函数

def multiple_file_add(self,
                      data_pairs: list,
                      save_prefix: str = 'part.',
                      replacement: bool = False):

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

h5db-0.0.9.tar.gz (4.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page