我正在制作一个应用程序来展示我们团队可以提供的数据分析能力。我对 django 很陌生,自动生成的 API 看起来很酷,但我担心可伸缩性和只有精心构建和查询的数据库才能提供的速度。有没有人遇到过这种情况并对原始查询与 django API 的选择感到遗憾/满意?
2 回答
Django 的 ORM 很棒。它是我遇到过的最完整、最易于使用的 ORM 之一,但作为每个 ORM,它都有其局限性。
如果您的应用程序需要完全控制数据库和非常高效的查询,您可以考虑其他方法并将它们与 Django 进行比较,看看哪一种更适合。你必须做一些研究。
Django 非常适合开发非常快速的复杂数据库应用程序,但我敢肯定——如果应用程序增长得足够长——出于优化原因,你迟早必须开始直接使用数据库引擎。ORM 是通用工具,因此数据库引擎特定的功能将不可用。
没有规则可以决定 django 是否适合您,但是,我可以告诉您的一件事是,它的 ORM 可以帮助您快速启动您的应用程序,并且如果您发现一些需要自定义 SQL 的特定情况,那么你也可以在 Django 中做到这一点。如果没有,只需创建一个 Python 模块,在这些特定情况下根据需要处理数据库,并从 Django 代码中使用它。如果您需要展示您非常有效的数据分析能力,这可能是最好的方式。
我希望这能带来一些启发,这是一个非常广泛的问题。我敢肯定的一件事是,在您的应用程序变得足够大之前,您不会后悔,当它增长时,您将有资源找到可以扭曲 Python 以处理与 Django 的数据库访问行为不同的每一种特定情况的优秀程序员工具。
找到此链接可能会有所帮助。
祝你好运!
我认为这是过早优化的情况。
Django ORM 在一般情况下已经足够好了,前提是您的数据库设计合理,具有适当的索引等。
在 > 90% 的情况下,这将是足够的,并且通常是最佳的。
当您确定了特定的复杂和缓慢的查询,查看了 ORM 生成的 SQL 并提出了更好的查询时,您可以为其添加一个特殊情况。
也许你会有不止一种这样的特殊情况。我仍然认为 ORM 可以在 90% 的数据库访问情况下为您节省大量的工作量。
除了查询之外,ORM 还允许您描述 DB 模式、它的约束、重新创建它的方法以及在版本之间迁移它等。即使 ORM不允许您查询 DB,这些管理功能也足以让您使用甲骨文。