具有多个进程的 SOA 与 Django ORM

Posted

技术标签:

【中文标题】具有多个进程的 SOA 与 Django ORM【英文标题】:SOA versus Django ORM with multiple processes 【发布时间】:2014-02-20 15:57:47 【问题描述】:

我有一个 django 应用程序,它使用 Django-rest-framework 提供了一个 rest api。客户端按预期使用 API,但我还有另一个进程(在同一节点上)使用 Django ORM 读取应用程序的数据库,即 sqlite3。

使用 rest api 与应用程序的数据库进行交互(仅读取)的进程是否更好的架构?或者有比从同一个节点发出大量 HTTP 请求更好、或许更有效的方法吗?

ORM 方法的问题(除了骇人听闻的性质)是偶尔读取失败并且必须重试。另外,我想写入应用程序的数据库,这可能会导致更多的 sqlite 并发问题。

【问题讨论】:

如果您预计会出现并发问题,为什么要首先使用 sqlite? 【参考方案1】:

这取决于您的应用程序在做什么。如果您的 REST 应用程序使用 Django ORM 从 SQLITE 读取一条数据,然后另一个应用程序执行写入操作,您可能会遇到一些有趣的竞争情况。为了防止这种情况,将这两个应用程序都作为 django-app 放在一个 Django 项目中可能是有意义的。

【讨论】:

以上是关于具有多个进程的 SOA 与 Django ORM的主要内容,如果未能解决你的问题,请参考以下文章

Django通过多对多ORM对象中的多个标签进行过滤

使用 Django ORM (CROSS JOIN) 计算组合

具有共享数据库的微服务?使用多个 ORM? [关闭]

Tornado WebSocket 与 Django ORM 与共享会话

Django ORM 查询 GROUP BY 由 MAX 组合的多个列

Django ORM 多表连接与 AbstractUser