关于如何组织某个项目,我遇到了一个架构问题。
该项目旨在创建一个模型包和相关数据库连接,以便在多个不同的Web应用程序中使用。
我希望使用以下模型创建模型层次结构:
User
Application
Log
还有更多的模型,但这三个模型是基本的潜在问题。
User模型与Application有很多关系。
应用程序与Log有一对多的关系。
User * - * Application
Application 1 - * Log
我遇到的问题是我希望用户和应用程序存在于Postgres数据库中,并且日志存在于Mongo数据存储区中。
我将Logs放入不同数据存储的主要原因是我不需要进行任何更新,只需插入所述模型。我不需要立即与插件保持一致。我想每周利用聚合框架和地图缩减。此外,我将拥有的日志文件数量将超过我将拥有的用户/应用程序的数量。在数百万到1的规模上。我将使用这个模型的服务器将通过websockets进行通信,因此流量和插入量将很高,我真的不需要postgres。 (但如果你觉得有必要的话,请随意(很好地)引导我朝不同的方向前进。)
现在我使用python和SQLAlchemy进行建模,引擎和迁移。
虽然我尚未开始,但我计划将MongoKit用于mongo模型。
到目前为止,我已经为SQLAlchemy引擎设置了用户和应用程序模型的模型和迁移。
如何设置整个软件包,以便当我将此repo作为Flask应用程序的依赖项包含时,我可以同时使用引擎和连接池?
因为我已经可以看到在Application上有一个属性来检索最新的日志可能会成为一个问题。