You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ArcticDB与LMDB时,如何为不同库指定自定义大小?

如何为ArcticDB中不同LMDB库设置独立的map_size?

问题描述

我正在开发基于ArcticDB和本地LMDB的程序,需要根据数据类型创建多个库,且希望不同库对应不同的存储大小。但目前所有新建库都会沿用初始Arctic连接时设置的map_size,导致每个库的data.mdb都达到2GB。

复现代码:

from arcticdb import Arctic
from os.path import getcwd

# 定义Arctic实例,设置全局map_size为2GB
ac = Arctic("lmdb://" + getcwd() + "/database?map_size=2GB")
# 创建两个库
ac.create_library('test1')
ac.create_library('test2')

生成的目录结构:

database
|__arctic_cfg
|_test1
| |_data.mdb ~2GB
| |_lock.mdb
|_test2
  |_data.mdb ~2GB
  |_lock.mdb

我希望部分库设置为100MB、部分为20MB,但不想创建多个Arctic实例(会生成独立的arctic_cfg,交互麻烦)。

解决方案

你可以通过create_library方法的lmdb_config参数,为每个库单独指定LMDB的配置(包括map_size),无需创建多个Arctic实例,所有库会共用同一个arctic_cfg目录。

修改后的代码:

from arcticdb import Arctic
import os
from os.path import getcwd

# 创建全局Arctic实例,无需在URL中指定map_size(或设为默认值)
db_path = os.path.join(getcwd(), 'database')
ac = Arctic(f"lmdb://{db_path}")

# 创建test1库,设置map_size为100MB(单位:字节)
ac.create_library('test1', lmdb_config={'map_size': 100 * 1024 * 1024})

# 创建test2库,设置map_size为20MB
ac.create_library('test2', lmdb_config={'map_size': 20 * 1024 * 1024})

说明

  • 初始Arctic连接URL中指定的map_size会作为所有新建库的默认值,通过lmdb_config传入的参数会覆盖该默认值。
  • map_size的单位是字节,需手动转换(1MB = 1024*1024字节),也可以用2**30这类写法表示1GB。
  • 该方式下所有库共享同一个arctic_cfg,避免了多实例交互的麻烦。

内容的提问来源于stack exchange,提问作者AAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:54:54