Database design web应用程序中的数据库设计提示

Database design web应用程序中的数据库设计提示,database-design,web-applications,Database Design,Web Applications,有人对web应用程序的数据库设计有什么建议吗?如果我正在开发的应用程序能够启动并开始大量使用,这种东西可以在将来为我节省大量的时间/精力 更具体地说,该应用程序是一个策略游戏(基于浏览器,只是文本),主要涉及玩家发布“订单”,这些订单将存储在数据库中,稍后进行处理,结果也存储在数据库中(“订单”的历史和相应的结果可能会变得相当大) 编辑以添加更多详细信息(根据要求): 站台:Django 数据库引擎:我正在考虑使用MySQL(除非使用另一个有很大的优势) 模式:我现在所拥有的只是一些Django

有人对web应用程序的数据库设计有什么建议吗?如果我正在开发的应用程序能够启动并开始大量使用,这种东西可以在将来为我节省大量的时间/精力

更具体地说,该应用程序是一个策略游戏(基于浏览器,只是文本),主要涉及玩家发布“订单”,这些订单将存储在数据库中,稍后进行处理,结果也存储在数据库中(“订单”的历史和相应的结果可能会变得相当大)

编辑以添加更多详细信息(根据要求):

站台:Django

数据库引擎:我正在考虑使用MySQL(除非使用另一个有很大的优势)

模式:我现在所拥有的只是一些Django模型,这太详细了,无法在这里发布。如果我开始发布模式,这会变得太具体,我正在寻找一般的提示。例如,考虑我发出的“订单”将被稍后处理,并返回我必须存储的结果来显示某种“历史”。在这种情况下,最好为“历史记录”单独设置一个表,还是只设置一个汇总“订单”和结果的表?我想我可以缓存“history”表,但这会占用数据库中更多的空间,也会占用更多的数据库操作,因为我必须不断地创建新行,而不仅仅是在聚合表中更改它们。

,以及对索引的良好考虑,这是两件你不能错过的事情。特别是如果你考虑一个游戏,选择比更新更频繁。


从长远来看,您还应该考虑一下,因为当您有多个用户时,数据库查询可能会成为瓶颈。

您可能已经谈到了一个更大的问题,即设计高可扩展性和总体性能

基本上,对于您的数据库设计,我将遵循良好的实践,例如向您希望经常使用的数据添加外键和索引,通过将数据拆分为较小的表来规范数据,并确定哪些数据需要频繁读取,哪些数据需要频繁写入,并进行优化

与高性能web应用程序的数据库设计相比,更重要的是通过HTML页面缓存在客户端级别和通过缓存数据在服务器级别有效地使用缓存,或者使用静态文件代替动态文件

缓存的好处在于,可以根据需要添加缓存,这样当应用程序启动时,您就可以相应地进行开发

就您的历史数据而言,这是一件非常值得缓存的事情,因为您不希望它经常更改。如果您希望从数据生成定期且相当密集的报告,那么最好将这些数据放入另一个数据库中,以免web应用程序在运行时停止


当然,除非你认为你的应用程序可以保证,否则这种优化是没有必要的。

为什么不发布你现在的模式呢?如果没有关于您将要使用的平台和数据库以及建议的表结构的详细信息,这个问题就很难有效地回答。

如果您发现自己在一个查询中加入了6个以上的表,以检索经常被点击的报告型网页的数据,那么您应该取消表的规范化。此外,如果您使用诸如Hibernate或ActiveRecord之类的ORM库,请确保在它们生成的默认映射和最终生成的sql上花费一些时间。当您只需一次往返数据库就可以获得相同的结果时,他们往往对数据库非常健谈