Django project-apps:您实现真实数据库方案的方法是什么?

Django project-apps: What's your approach about implementing a real database scheme?

我已经阅读了关于 Django 的项目和应用程序的文章和帖子,并且基本上最终使用了 Pool 和 Users 的典型示例,但是实际程序通常使用复杂的关系数据库,因此它的设计被这个 RDB 吸引; 永恒的冲突再次引发了关于:哪些人应该考虑一个应用程序,哪些人应该考虑该应用程序的组件?

让我们以此 RDB (由 Visual Paradigm 提供) 为例:

我可以把整个集合看成一个应用,也可以把每个实体看成一个应用,前景是灰色的。我唯一确定的是:

$ django-admin startproject movie_rental

所以我想学习一下大家的专业知识:你会使用什么方法(不一定是前面提到的方法)来为 Django 项目创建基于这个 RDB 的应用程序?

提前致谢。


PS1:有关我的请求的更多详细信息

在编程时我遵循以下步骤:

  1. 了解您要编写的程序的上下文,
  2. 确定此上下文中的主要参与者和对象,
  3. 如果需要,制作一个UML图,
  4. 设计实体关系数据库图表,(实体=约束、触发器、过程等)
  5. 创建关系数据库,
  6. 开始编码……吃苦耐劳

当我学习新东西时,我希望他们遵循这些相同的步骤来了解他们想要采取行动的方向。

在阅读文章和帖子(以及观看视频)时,几乎都省略了步骤 1 到 5(因为他们选择了简单的演示应用程序),而在编程时他们走的是简单的路线,并且不显示其他情况或 Django 提供的许多假定功能(可重用性、可插入性等)。

在做这个请求的时候,我想知道在Django中有经验的程序员使用什么标准来确定基于这个示例RDB图创建什么应用程序。

根据目前获得的 (2) 个答案,"application" 对于...

  1. brandonris1 大约是 features/services
  2. Jeff Hui 是关于实现数据库的实体
  3. James Bennett是关于对一个物体的每一个动作,他喜欢做很多app

目前的结论:Django应用是个人信条

我最初的请求是关于创建应用程序的,但是由于提到了模型,我还有另一个问题:使用遗留关系数据库(如图所示)可以创建 Django 项目多个应用程序? 这是因为在展示的每个 Django 演示项目中,创建的每个应用程序都有一个带有自己表格的模型,给人的印象是表格不与其他应用程序的表格交互。

希望我的要求更加明确。再次感谢您的帮助。

您似乎正试图在构建单个整体应用程序与微服务之间做出决定。两种方法各有利弊。

例如,如果您拥有少量支持资源并且不需要能够在应用程序的不同领域快速冲刺开发新功能(即电影管理),则单个整体应用程序是一个很好的解决方案功能与员工管理功能)

大型单体应用程序的一个主要缺点是它们的功能集最终会变得太大,并且随着每个新功能的出现,您需要进行大量的回归测试,以确保没有任何负面影响在应用程序的其他领域。

您的另一个选择是采用微服务策略。在这种情况下,您可以将这些实体划分为一系列较小的服务,并为它们提供彼此 integrate/communicate 的每个方法(API)。

示例: - 电影服务 - 客户服务 - 员工服务

这种方法的好处是,它允许您按特定服务区域分离功能和特性,从而在部署新特性或出现灾难性问题(即数据库停机)时减少跨应用程序的风险和回归测试。

这种方法的缺点是,在真正的微服务架构下,所有资源都是分离的,因此您需要为每个服务提供唯一的资源(即数据库、服务器),从而增加您的运营成本。

这些选项中的任何一个都是不错的选择,但完全取决于您的支持模型和预期数量。希望这有帮助。


更多细节: 在阅读了您的其他详细信息后,由于此数据库已经存在并且我的假设是您无法迁移它,因此您仍然可以选择是否遵循单体应用程序或微服务架构。

对于这两种方法,您都需要将 django webapp 连接到您已经在使用的特定数据库。我不能代表那里的每个连接器,但我知道 MySQL 连接器允许 django 从预先存在的数据库中读取以系统地为应用程序生成 models.py 文件。作为该连接器的一部分,有一个模型变量允许您定义 Django 是否负责实际管理数据库表本身。

从体系结构的角度来看,这唯一改变的是您要对此连接编码多少次?

如果您只想做一次并完全遵守 DRY 方法,您可以构建一个单体应用程序,因为您知道随着新功能的出现,应用程序范围的回归测试将是绝对必要的。

如果您希望通过这些功能集合为未来的更改提供最大的灵活性,并且不介意重新编码跨多个应用程序的迁移,同时在需要新功能时减少对应用程序范围的回归测试的需求,那么微服务架构策略更适合合适。