lmdb:我可以在同一个事务中访问不同的命名数据库吗?

时间:2017-01-12 15:03:44

标签: python python-3.x lmdb

我想将大量数据写入具有多个命名(子)数据库的lmdb数据库。我遇到了以下问题:

  • 要写入一个命名数据库,我需要为此命名数据库打开一个事务。
  • 这意味着:要写入另一个命名数据库,我需要打开另一个事务。
  • 同一主数据库内的两个写入事务不能同时存在。
  • 这意味着:每次我想从写入一个命名数据库切换到写入另一个命名数据库时,我需要提交并关闭一个事务。
  • 创建和提交写入事务是一个非常慢的操作。

我宁愿为所有写操作保留一个长时间运行的写事务,并在完成所有工作后提交一次。

这是否可以使用lmdb(如果是,在我的分析中我错误的那一点)?

2 个答案:

答案 0 :(得分:1)

您可以根据需要在同一个写入事务中打开任意数量的命名数据库。

所以:

  • 打开写入事务
  • 根据需要打开命名数据库并写信给他们
  • 提交您的交易

只要你考虑到你一次只能拥有一个写入事务(只读事务没有问题),并且你的其他事务只会看到你的写入事务的结果提交,你当然可以有一个长时间运行的写事务。

答案 1 :(得分:1)

您现在在分析中犯了错

  • 这意味着:要写入另一个命名数据库,我需要打开另一个事务。

一个事务句柄可用于在lmdb环境中打开多个子数据库。

注意:单个事务可以打开多个数据库。 Ref