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

标签 postgresql google-app-engine odoo google-cloud-datastore app-engine-ndb

我计划将 Odoo 移植到 Google App Engine Web 应用程序。当我知道Odoo使用postgresql时,是否可以将数据库连接、查询和所有从Postgresql数据库移植到>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/

相关文章:

nginx - Odoo(在 Debian 上)- longpolling 端口从未使用/打开

python - 带有 Flask 的 SQLAlchemy 无法连接到数据库以进行原始 SQL 查询?

postgresql - AWS RDS Postgres 复制到 GCP 云 SQL

具有整数值的 Postgresql 更新列

python - 字符串值前面的 'u' 符号是什么意思?

google-app-engine - 谷歌存储图像服务缓存

postgresql - 为什么这个 Postgres 函数不正确?

node.js - 使用 stdout/stderr 从 Node 进行 Stackdriver 日志记录

python - QWEB - 索引错误 : list index out of range

python - 如何在odoo中根据另一个Many2one字段的值过滤一个Many2one字段