Exemplo n.º 1
0
    def get_open_options(self):
        ''' Get the options for opening a database as well
        as creating all the relevant data-structures needed
        for operation.

        :returns: The database open options.
        '''
        options = LDB.leveldb_options_create()
        self.cache = LDB.leveldb_cache_create_lru(self.options.get('cache_block_size', 8 * 1024 * 1024))
        self.filter_policy = LDB.leveldb_filterpolicy_create_bloom(self.options.get('bloom_filter_size', 10))
        self.environment = LDB.leveldb_create_default_env()

        LDB.leveldb_options_set_create_if_missing(options, self.options.get('create_if_missing', True))
        LDB.leveldb_options_set_error_if_exists(options, self.options.get('error_if_exists', False))
        LDB.leveldb_options_set_paranoid_checks(options, self.options.get('paranoid_checks', False))
        LDB.leveldb_options_set_write_buffer_size(options, self.options.get('write_buffer_size', 32 * 1024 * 1024))
        LDB.leveldb_options_set_max_open_files(options, self.options.get('max_open_files', 256))
        LDB.leveldb_options_set_block_size(options, self.options.get('block_size', 4 * 1024))
        LDB.leveldb_options_set_block_restart_interval(options, self.options.get('block_restart_interval', 16))
        LDB.leveldb_options_set_compression(options, self.options.get('compression', True))
        LDB.leveldb_options_set_cache(options, self.cache)
        LDB.leveldb_options_set_filter_policy(options, self.filter_policy)
        LDB.leveldb_options_set_env(options, self.environment)
        #LDB.leveldb_options_set_info_log(options, self.options.get('info_log')) just use default
        if self.options.get('comparator', None):
            LDB.leveldb_options_set_comparator(options, self.options.get('comparator').comparator)
        return options