【问题标题】:Creating game, currently using SQL Server to store data, looking for better alternatives [closed]创建游戏,目前使用 SQL Server 存储数据,寻找更好的替代方案 [关闭]
【发布时间】:2016-03-08 23:02:27
【问题描述】:

我一直在使用 SQL Server 2014 为游戏存储一个数据库,以便与多个表格一起使用...这是一场足球比赛,所以有很多表格.​​..球员、教练、老板、GM、球探、球队等等……

我的问题是最终用户是否需要安装 SQL 服务器才能使用游戏中的数据库?如果是这样,我需要切换到不同的选项,并且想知道存储大量数据的最佳选择是什么,不需要最终用户安装特殊的东西来使用它们?

CSV 似乎是显而易见的简单答案,但我认为对于 CSV 文件而言,这将是太多数据,无法很好地处理。

【问题讨论】:

  • 某种嵌入式数据库,如 SQLite 或 SQL Server Compact?
  • 可以始终将其存储在 xml 文件中,或创建适合您需要的数据文件格式
  • “与多张桌子一起使用的游戏……这是一场足球比赛,所以有很多桌子”……您可能需要比 csv 文件更优雅的东西。我会使用免费的快速版本的 sql server,或者从头开始使用另一个小的嵌入式 rdms。
  • 最终用户是否需要安装该版本才能使用免费的 SQL 版本?我正在专门寻找不需要他们有什么特别的东西来使用文件的东西......

标签: c# sql-server vb.net


【解决方案1】:

试试SQLite。它是一个轻量级的高性能数据库,具有索引、事务等现代特性。它也有 ADO.NET 组件。它工作得很好,它是开源的,而且是免费的。 SQLite 唯一的缺点是它没有提供查看和操作数据库的工具,但您可以下载a separate tool

您也可以使用 Microsoft Access。您需要安装 Access 的副本才能创建新数据库,但修改或访问数据库所需的 OLE DB 组件是 Windows 的一部分。 Microsoft Access 的数据库引擎不如 SQLite 快或可靠,但如果您安装了 Access,那么您就有很好的工具来查看数据库、创建新表等等。

【讨论】:

    【解决方案2】:

    你要存储的数据,你对它有什么要求?

    1. 这些数据是否应该对所有用户都完全相同,并且不能被编辑? 然后您应该将数据存储在远程位置,以防止篡改,对数据所做的任何更改都会影响到每个人。

    2. 数据应该只是“跟随”游戏,篡改不是问题吗? 将其作为文件存储在游戏旁边,文件的格式由您决定,无论您选择哪种格式,解析都需要一些时间。

    如果您选择 1,那么选择正确的数据库取决于数据的结构以及您将如何使用它。我认为这是一个完全不同的讨论,对于爱好项目并不重要。选择你最了解的。

    如果您选择 2,如果您不需要同时加载所有数据,将数据拆分为多个文件将大大提高性能。找出你需要什么时候(IE:如果你只需要所有球员信息,加载球员文件;如果以其他方式需要数据,例如你以团队为基础加载,包括团队信息、球员、比赛等;然后将您的数据与所有团队信息一起存储在一个文件中。)

    数据的格式相对不重要,具体取决于您需要它的用途。如果它可以打开以供编辑,则首选 XML 或 JSON 等人类可读的格式。如果需要空间,请选择 CSV。我在这里的主要提示是采用众所周知的格式,而不是创建自己的格式。您不仅可以找到已知格式的现有解析器,而且您以后的选择也会更加灵活。

    【讨论】:

    • 不,每个人的数据都是唯一的,因为生成代码会随机生成属性、名称、统计信息等......
    • 如果数据对每个用户都是唯一的,我建议将其与游戏一起存储在文件中。这个游戏是在用户计算机上作为独立游戏玩的,还是基于网络的;如果是后者,是否有任何类型的游戏服务器?如果它是独立的,我想将它存储在文件中是最容易实现的,就像你保存游戏状态一样。为了您自己的方便,您可以在加载后解析数据并将其放入内存中更合适的数据结构中,这样您可以在加载后有效地使用。这基本上就是数据库会为您完成的工作。
    【解决方案3】:

    SQL Server Compact(又名 SQL Server CE)是一个嵌入式数据库。它不需要最终用户安装任何东西。不过请务必使用版本 4 (https://www.microsoft.com/en-us/download/details.aspx?id=17876)。 3.5 有一些相当严重的限制。 CE 有一些差异(例如列默认值是列定义的一部分,而不是表级约束),但在大多数情况下,您不会遇到任何太令人惊讶的事情。 SQL Server CE 也有官方的 LINQ 和 EF 实现。

    【讨论】:

      【解决方案4】:

      我相信到目前为止的所有答案都确实有助于讨论。我想把 LocadDB (SQL Server) 作为你的另一种选择。

      附带说明一下,根据您需要存储在文件中的信息量,您可能希望使用一些本地或远程 DBMS。处理太多文件或包含太多数据的文件会变得非常麻烦和/或降低游戏性能。

      【讨论】:

        猜你喜欢
        • 2012-05-04
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 2021-12-14
        相关资源
        最近更新 更多