我打算将<strong> Odoo 移植到 Google App Engine Web应用程序。当我开始知道 Odoo 使用 postgresql 。时,是否可以将数据库连接,查询和所有从Postgresql db移植到 NDB 以便我可以在Google App Engine上运行它?
答案 0 :(得分:3)
这将是一项很大的工作;-)我认为进行这样一个练习的唯一方法是看看你如何重新实现odoo ORM引擎(定制到odoo),并评估这项工作。
https://github.com/odoo/odoo/blob/9.0/openerp/models.py
这是一个明确的本土化的orm,它包含诸如关系/约束分组之类的东西......其中许多在数据存储区中没有模拟。
因此所涉及的努力将变得非常巨大。
odoo中更高级别的抽象将取决于orm的模型方法,如
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True):
"""
Get the list of records in list view grouped by the given ``groupby`` fields
:param cr: database cursor
:param uid: current user id
:param domain: list specifying search criteria [['field_name', 'operator', 'value'], ...]
:param list fields: list of fields present in the list view specified on the object
:param list groupby: list of groupby descriptions by which the records will be grouped.
A groupby description is either a field (then it will be grouped by that field)
or a string 'field:groupby_function'. Right now, the only functions supported
are 'day', 'week', 'month', 'quarter' or 'year', and they only make sense for
date/datetime fields.
....
显然,大部分内容在数据存储区中无关紧要或不可行,直接(groupby)但可以在内存中完成 - 因此在您自己的ORM替换中。
在ORM中,您会看到很多计数正在进行中(嗯,这在数据存储中不起作用)。
此外,Odoo将依赖于RDBMS的锁定/一致性模型,该模型与数据存储最终的一致性不同。所以有一个基本的方法需要考虑。如果您创建了许多祖先密钥来帮助保持一致性,您可能会发现创建了很多争用。那么你可能需要一些其他的锁定机制,可能是memcache中的CAS。
因此,您可能需要在odoo中寻找更高层次的抽象来移植映射到数据存储区的替换ORM。我的猜测是没有统一的更高级别,但我看不出来; - )
我还没抬头抬高; - )
似乎存在odoo数据结构和关系的模型,这可能意味着您可能找到更高的抽象层并自动生成一组表示模型/ uml或现有代码中的所有应用程序数据实体的类(逆向工程)。但是,这些都不会处理任何可能直接使用sql,报告需求等的代码......所有这些都会变得更难,所以也许你需要数据存储和大查询以及搜索应用程序的混合模型。
我会得到熟悉数据存储区的人,仔细查看Odoo ORM和数据模型,并进行可行性研究,并核实核心区域的概念,以确定它是否可行,以及是否可以实际工作
祝你好运; - )