我们需要在距离数千英里的不同数据中心的2个Odoo v8数据库之间实现复制(因此需要考虑延迟)。数据库具有不同的模式,表几乎相同,但这些表中的列不同,复制需要在数据库级别进行。对客户端的所有警告都会绕过ORM,因此任何不同的Python级别约束,因为自定义代码不同(Odoo源将是相同的)已经被置若罔闻。复制只需要对某些表进行复制(仍需要澄清),其中一个是sale_order表,但这意味着关系(外键)列指向的任何表也需要同步。因此,如果销售订单的partner_id为5,则表示res_partner表必须在两个数据库中都有一个ID为5的行,并且所有匹配列中的数据都需要匹配,并且很多这些列也将是外键列指向其他表等等。代码库不仅仅是不同的,它有很大的不同 - 几十个完全不同的模块和数千行代码。我对如何实现这个有点不知所措,有一个Odoo模块(base_synchro),它可能有助于获得所需的结果,除了它通过xml-rpc请求工作,所以不在数据库级别和因此不是一种选择。任何人都有类似可以称重的东西的经验吗?或者,如果不在两个数据库中创建完整的混乱,这是不可能做到的?
答案 0 :(得分:1)
假设一家公司有一个code = 120
,所以我们将odoo实现添加到每个id都应该1200000000 + id
,所以当你在这家公司保存第一条记录id != 1
但是{{ 1}}和其他id = 1200000001
代码为199,因此当我们整合数据时,我们不必修复外键,因为我们永远不会有两个公司中存在的ID。
即使这个解决方案也不被接受,因为我们有很多公司,我们正在丢失大量数据,所以我们company id = 1990000001
的最大价值就是你。你有2家公司所以max id = 9 999 999
现在我们正在将id的类型从serial更改为bigserial但是这需要大量的代码编辑,因为我们必须修改many2one字段和整数字段......
id的代码是:
id = 999 999 999
当然,您可以通过代码当前用户的company_id来使其动态化。