【问题标题】:What type of database would be used for keeping data between a Web Site and Game Server?什么类型的数据库将用于在网站和游戏服务器之间保存数据?
【发布时间】:2012-01-11 02:21:05
【问题描述】:

我正在制作一个在线游戏,我将在其中托管一个游戏服务器。玩家将登录到我的游戏服务器。然后他们将被带到一个大厅,在那里他们可以选择一个游戏加入。我将记录输赢和其他一些统计数据。

我的要求如下:

  • 在游戏中的任何时候,玩家都应该能够点击另一个 玩家并获取他们最新的最新统计数据。
  • 玩家也应该能够访问我的网站并获得相同的 统计数据。 (理想情况下,立即更新,但不如 游戏中)
  • 我还将有一个排行榜,该排行榜将根据以下数据生成 网站。

我的问题是:这种情况通常会使用什么类型的解决方案?

我永远不会丢失数据,这一点至关重要。使用网站数据库让我担心的一件事是数据丢失。

我也不确定网站数据库和游戏服务器之间的交互是如何工作的。 mySQL 有能力做这种事情吗?我对使用网站数据库的另一个担忧是我每月会消耗多少带宽。我慷慨地估计,在任何给定时间,我都会有 1000 人在线。一场比赛大约持续20分钟。

这些类型的情况通常如何解决?我已经翻遍了,但我还没有找到一个明确的答案来解决我的担忧。

谢谢

【问题讨论】:

  • 如果您的游戏统计数据足够重要以至于需要保持最新状态,我还建议您考虑安全性。您可以查看开发人员需要防御的 OWASP 十大安全漏洞。如果您的游戏统计数据被骗,您可以忽略此评论。具体看SQL注入攻击。
  • @Dessus 如果用户从不直接与数据库交互,只能从静态服务器ip修改数据库怎么办?
  • 用户可以通过文本框输入信息与数据库进行交互。如果我在文本框中输入了正确的 sql。它可以(取决于大多数人如何设置它)直接进入数据库。你的数据库在哪里并不重要。最终以某种方式从数据库中获取数据以显示/更新。我可能会使用网站自己的基础设施来执行我想要的任何 sql(除非你采取措施防止 SQL 注入)。它实际上是一件非常可怕的事情,我相信新闻说它被用于攻击索尼,他们丢失了人们的信用卡详细信息。
  • @Dessus 如果我不允许在文本框中输入字符串“sql”怎么办?
  • 通常可以使用参数化查询。即将你的 UI 数据输入一个 sql 参数。如果您从文本框中删除 sql 关键字,这是一种黑名单方法,您可能会错过某些引入 sql 的关键字。有了安全性,您真的需要一种白名单方法。即只有有效请求才能有效的一种。如果您参数化您的 sql 请求,您可以在没有安全风险的情况下允许在文本框中输入位置。见这里:codinghorror.com/blog/2005/04/…

标签: mysql database


【解决方案1】:

我会根据您的要求推荐一些东西。您的问题非常开放,因此给出的答案非常笼统:

  1. 数据库可以在写入硬盘驱动器时存储数据并且是事务性的(这意味着它们可以在 Web 服务器崩溃后幸免于难)。
  2. 可以使用众多备份工具中的任何一种来备份数据库,例如:https://www.google.com/search?q=sql+backup&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
  3. 对于最新的统计数据,您可能应该从缓存中提取活跃的游戏玩家信息(否则,您可能会发现您在大部分数据不会更改时正在冲击数据库(即,可能大多数游戏玩家可能处于离线状态并且他们的数据将保持静态,但可能希望被查看。
  4. 调查您想要什么样的数据库。 NOSQL 或 SQL。如果不评估每个选项的好处,这里就没有明显的选择。
  5. 调查 N 层或多层设计。 http://en.wikipedia.org/wiki/Multitier_architecture
  6. 考虑某种类似云的基础架构,例如 appfabric、azure(还有其他 linux 的)等。有许多云服务可以提供高可扩展性。这可能是前面几点的捷径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多