我正在开发一个程序,该程序使用 arcticdb 和 lmdb 的本地实例。在此过程中,我想根据不同类型的数据创建多个库。由于数据的大小会有所不同,我希望库大小也有所不同,但据我所知,库大小在创建原始数据库连接时会模仿地图大小。我已经定义了以下问题的基于最小代码的重现:
from arcticdb import Arctic
#Define arctic instance
ac = Arctic("lmdb://" + getcwd() + "/database?map_size=2GB")
#Create libraries
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 文件夹,并且据我了解,很难进行交互。
目前没有机制可以使用
ArcticDB
执行此操作。
该行为确实取决于您的操作系统。在 Windows 上,磁盘空间是“急切”分配的,因此您帖子中的两个库确实会占用 2GB 的磁盘空间。然而,在 Linux 上,磁盘是惰性分配的,因此每个库只会使用它需要的空间。
您建议的解决方法是为您需要的每个库大小使用单独的
Arctic
实例,这是明智的。
请随时针对 ArcticDB 提出问题,因为我同意在
get_library
调用期间指定地图大小而不是在 Arctic
级别会很有用。