背景:我正在为业务应用程序开发Django应用程序,该应用程序接收客户数据并在仪表板上显示图表。我有一个大型数据库,其中包含原始信息,例如按客户分类的零件销售信息,我将用它来填充分析。过去,我可以将python与pandas,xlsxwriter等配合使用来很好地做到这一点,现在我正在复制此Web应用程序中过去所做的事情。我使用PostgreSQL数据库存储数据,然后使用Django构建可视化应用程序和Fusioncharts。为了使信息进入Postgres,我将python脚本与sqlalchemy一起使用,这做得很好。问题:有两种方法可以操纵将填充图表的数据。1)我可以使用将数据导出到postgres的相同脚本,在导出之前按照自己喜欢的方式排列数据。例如,在某些情况下,我需要按某个参数对数据进行分组(例如按客户),然后按列对分组进行计算。我可以为每个想要的切片执行此操作,然后将每个模型类的不同表导出到postgres。2)我可以将整个数据库上传到postgres,并稍后使用产生SQL查询的django命令对其进行操作。我很早就使用python来完成它,因为我已经做了一段时间了。我也理解django的查询很难实现。但是,使用python进行操作将意味着我将需要更多表(因为我将以不同的方式对它们进行分组),并且我不想以我所知道的方式进行操作,因为如果上传单个数据库,它会更容易从长远来看,使用django / SQL查询会更高效。任何想法或建议,表示赞赏。
1 回答

慕娘9325324
TA贡献1783条经验 获得超4个赞
好吧,这是性能和灵活性之间通常的权衡。使用第一种方法,您可以获得更好的性能(您的模式只适合要运行的确切查询),但缺乏灵活性(如果您需要添加更多查询,则说明可能不太匹配-甚至根本不匹配),其中这种情况下,您可能必须使用更新的架构(可能是从原始资源中重新填充数据库),而第二种架构(希望)具有规范化的架构,但是会使数据库服务器上的查询变得更加复杂和繁重。
现在的问题是:您真的必须选择吗?您还可以同时具有完全规范化的数据和非规范化(预处理)的数据。
附带说明:Django ORM实际上确实是大多数“ 80/20”工具-它旨在使80%的简单查询变得超级简单(比说SQLAlchemy容易得多),然后确实变成了PITA的一部分-但没有什么可以强迫您对所有内容使用django的ORM(您可以始终使用原始sql或同时使用SQLAlchemy)。
哦,是的:您的问题并不新鲜-您可能需要阅读有关OLAP的信息
添加回答
举报
0/150
提交
取消