gpt4 book ai didi

postgresql - Odoo 与 Google App Engine NDB |从 postgresql 移植到 NDB

转载 作者:行者123 更新时间:2023-11-29 12:04:21 25 4
gpt4 key购买 nike

我计划将 Odoo 移植到 Google App Engine Web 应用程序。当我知道 Odoo 使用 postgresql 时,是否可以将数据库连接、查询和所有从 Postgresql db 移植到 NDB 以便我可以在 Google App Engine 上运行它?

最佳答案

这将是一项艰巨的工作 ;-) 我认为进行此类练习的唯一方法是了解如何重新实现 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 和数据模型,并进行可行性研究和核心领域的概念验证,以评估它是否可行,以及它是否真的有效。

祝你好运;-)

关于postgresql - Odoo 与 Google App Engine NDB |从 postgresql 移植到 NDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com