2

我計劃將端口Odoo改爲Google App Engine Web應用程序。正如我才知道,Odoo使用PostgreSQL的,是否有可能端口數據庫連接,查詢和所有和PostgreSQL分貝到NDB,這樣我可以在谷歌應用程序引擎運行呢?使用Google App Engine NDB的Odoo |從postgresql移植到NDB

+1

試圖端口oodo到數據存儲將是一個令人難以置信的大規模演習,大概是不可能的。如果你想做這樣的事情,也許可以使用雲數據庫而不是數據存儲。但即使如此,我對此表示懷疑。這個問題對於SO來說並不合適,因爲它太廣泛了。 –

+0

@TimHoffman,期待你在這裏。抱歉,給我們這個項目的人不想使用雲端SQL。他只想使用ndb。關於我的最佳知識,我認爲這不是那麼容易。 –

回答

3

這將是一個很大的工作;-)我認爲唯一的方法來接近這樣的練習是看你如何重新實現odoo ORM引擎(習慣odoo),並評估這一努力。

https://github.com/odoo/odoo/blob/9.0/openerp/models.py

這是一個明確的自產自銷的ORM,這emboddies像關係/約束分組,等等......其中有許多在數據存儲中沒有模擬的東西。

因此,所涉及的努力將變得相當巨大。在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和數據模型,並進行可行性研究,核心領域的概念驗證是否可行,以及它是否可行。

好運;-)

+0

感謝您的詳細解釋;-) –

相關問題