我有三个通过 ZODB 模块构建的 python 对象数据库,我想将它们合并为一个。我有三个而不是一个的原因是因为每个对象都属于三个群体之一,并且在我的代码对所述对象进行分析后被添加到数据库中。每个对象的分析绝对可以并行进行。我的代码需要几天的时间才能运行,因此为了避免这一工作需要长达一周的时间,我有三台计算机,每台计算机处理来自三个群体之一的对象,并在完成后输出一个 ZODB 数据库。由于 ZODB 处理冲突的方式,我无法让三台计算机将来自不同群体的对象分析添加到同一个数据库中。本质上,在您关闭数据库之前,它是从内部锁定的。
我的问题是:1)如何将多个 .fs 数据库文件合并到一个主数据库中?每个数据库的结构完全相同——这意味着每个数据库之间的字典结构是相同的。例如,MyDB 可能代表第一个种群的 ZODB 数据库结构:
root.['MyDB']['ID123456']['property1']
... ['ID123456']['property2']
... ... ...
root.['MyDB']['ID123457']['property1']
... ['ID123457']['property2']
... ... ...
...
其中省略号表示更多相同。对于数据库中的每个“IDXXXXXX”键,键“property1”、“property2”等的名称都是相同的,尽管值肯定会有所不同。
2) 并行运行此代码同时仍然产生单个 ZODB 结构会更聪明吗?
如果需要澄清,请告诉我。
谢谢!