【发布时间】:2013-06-06 17:35:53
【问题描述】:
我正在尝试用 PHP 构建一个实时策略浏览器游戏,但是我正在尝试使游戏尽可能真实,这意味着将为每个用户分配单独的数据来存储,而一个单独的数据库则不会'我的想法不太好,因为我想存储有关用户及其“帝国”的所有信息,这可以使游戏更加逼真
这里有一个关于要存储多少数据的想法:
人口:例如,每个公民都有自己的行来跟踪他的类型、技能、统计数据、任务等,因为“帝国”可能有几千个公民次( *) 几千个用户可能会导致单个表有点过载
军队:例如,每个士兵都有自己的行来跟踪他的类型、技能、统计数据、分配等,并且因为军队 可能会变得有点大(*)可能会导致数千个用户 再次在单个表中有点过载
建筑物:....同样的故事
财富:....真正的帝国可以持有的每一盎司或货物都被追踪
等。你明白了....
所以我的第一个想法是给每个用户一个唯一的 ID ex。 5b325475ef698183bbbcc5352c7f20f5... 并有一个用户文件夹,用于存储个人用户的 SQLite 数据库,其结构类似于:
/user_data
|--/5b325475ef698183bbbcc5352c7f20f5
|----/account.db
|----/buildings.db
|----/army.db
|----/population.db
|----/empire.db
还有一个 MySQL 数据库,用于存储前端的一般公共详细信息,这将是 sqlite 数据库中累积数据的结果
但后来我听说一个 sqlite 数据库在对其执行操作时被锁定,这对于多用户站点可能不是一个好的解决方案 此外,这样做的缺点是可能很难经常进行更改,因为您必须为每个用户更改每个数据库(仍然比使用可能会随着时间的推移变得缓慢和过载的单个数据库更好)
我的第二个想法是再次使用唯一的用户 ID 为每个用户创建一个不同的 MySQL 数据库,但是我认为我最终会拥有太多的数据库连接和一个非常混乱的代码来维护并且再次缩小大小其中一个原因是,可能很难频繁地进行更改,因为您必须为每个用户更改每个数据库(同样仍然比使用可能会随着时间的推移变得缓慢和过载的单个数据库更好)
如果有人遇到此类问题并找到了解决方案,请分享,或者上面发布的哪个想法可能最合适,记住这是一款浏览器游戏,玩家将花费大部分时间切换页面,从而导致大量的数据库交互(这就是为什么单个 MySQL 数据库可能不是一个好的解决方案)
感谢您的时间和耐心:D
编辑: 该应用程序将使用 Yii 框架构建,但如果需要,我将从头构建一个新的“框架”
【问题讨论】:
-
既然这是一个老问题,我想问一下,你找到答案了吗?