Erlang 使用自定义mysql模式的模块扩展ejabberd?

Erlang 使用自定义mysql模式的模块扩展ejabberd?,erlang,xmpp,ejabberd,otp,Erlang,Xmpp,Ejabberd,Otp,取而代之的是,我使用了一个定制的MySQL模式(因为遗留的原因) 我将在某些活动上做一些DB操作,如乒乓球、乒乓球、Msg Delivered、Msg read,最重要的是获取/设置花名册列表和宣布出席(所有这些都在我自己的模式中) 然而,ejabberd似乎一直在使用ejabberd.sql,它的源代码非常依赖于它。由于我不知道它的依赖性,我最不愿意做的事情就是修改源代码 可能的想法: 假设我通过编写自己的模块来扩展ejabberd,那么mod_花名册_odbc有什么用呢?我只是不想失去eja

取而代之的是,我使用了一个定制的MySQL模式(因为遗留的原因)

我将在某些活动上做一些DB操作,如乒乓球、乒乓球、Msg Delivered、Msg read,最重要的是获取/设置花名册列表和宣布出席(所有这些都在我自己的模式中)

然而,ejabberd似乎一直在使用ejabberd.sql,它的源代码非常依赖于它。由于我不知道它的依赖性,我最不愿意做的事情就是修改源代码

可能的想法:

假设我通过编写自己的模块来扩展ejabberd,那么mod_花名册_odbc有什么用呢?我只是不想失去ejabberd的所有功能,但除了在这里使用自定义模式之外,我没有其他选择

我是否需要修改odbc\u查询和ejabberd\u odbc中的每一个查询。如果有一个集中的模块允许我修改查询,在不干扰ejabberd和谐的情况下到处反映查询,那就太好了


总而言之,我希望避免处理依赖关系,并尽可能以最明智的方式完成工作。但我对最好的方法可能是什么还很模糊?

在了解更多OP的情况后,编辑更改此答案

您心目中的用例要求在核心业务数据和聊天服务之间进行强有力的分离。聊天必须被视为一种外部服务,而不是整个系统的一部分(即使从用户的角度来看,聊天是一种“核心”服务,也不应该硬连接到账户管理中)

使用现有的基础设施作为进行身份验证的场所,独立地使用ejabberd设置聊天,并将其配置为对核心服务进行外部身份验证调用

如果您需要保留或包含旧版聊天数据,您可以将其导入ejabberd模式(不太好),或者将旧版聊天系统保持在“只读模式”,并使所有新聊天通过ejabberd进行(更好,尤其是如果您花时间使界面与用户无缝连接)。如果出于分析目的需要旧数据,则应将其导出到分析模式,并将ejabberd数据提取(批处理、笨拙)或反映(实时、更好)到同一模式进行分析


无论您做什么,都不要让核心系统承担聊天职责,也不要让聊天系统承担分析职责。这些都应该是非常独立的,即使在不同的硬件上运行,如果您的系统非常大或有显著的健壮性要求(并且您的预算合适).

你可能应该取消悬赏——我认为情况或解决方案与你最初设想的情况不太相符。我认为我们无法取消悬赏。如果你认为这会有任何不同,请随意编辑问题。@zxq9:我正在研究各种可能性,让我们看看。如果可能的话,我会尽量不打扰Ejabbrd。Thx