Javascript 在SQL中存储游戏数据

Javascript 在SQL中存储游戏数据,javascript,mysql,sql,html,game-engine,Javascript,Mysql,Sql,Html,Game Engine,所以基本上我有游戏中的角色 Gender, Race, Items, //this is an array Skills, //another array Inventory //another array 所以我考虑将它们存储在json对象中。但那会很快吗 所以在桌子上应该是这样的 id | js 1 | jsondata 这是实现数据保存的好方法吗?这种方法的一些缺点我可以马上想到: (此项适用于编辑之前的原始问题,其方法是在数据库列中存储JavaScript代码(var

所以基本上我有游戏中的角色

Gender,

Race,

Items, //this is an array

Skills, //another array

Inventory //another array
所以我考虑将它们存储在json对象中。但那会很快吗

所以在桌子上应该是这样的

id | js

1  | jsondata

这是实现数据保存的好方法吗?

这种方法的一些缺点我可以马上想到:

  • (此项适用于编辑之前的原始问题,其方法是在数据库列中存储JavaScript代码(
    var gender='male';…
    )。这基本上使人们可以自由地将他们想要的任何代码注入到您的应用程序中,如果他们可以修改blob的话

  • 它需要对JavaScript进行解析。如果以后决定在不同的非js环境(例如,本机或托管应用程序)中运行游戏,则必须解析blob,或稍后转换它

  • 数据不是结构化的,不可编辑/逐段检索,并且具有任意长度。每次都必须检索和执行整个blob,为了保存状态,必须将整个blob作为单个块发送和更新。例如,如果您使用的是数据库,那么将每个库存项目保存为单独的行将更加高效。当播放器使用该项目时,您可以发送一个查询来更新一行,库存将立即更改。使用这种方法,您需要将整个游戏状态发送回服务器

    如果您想使用数据库引擎进行搜索,这将适得其反。考虑排行榜、统计数据、查找谁拥有哪个项目等

    也不能使用数据库引擎维护数据完整性(检查或外键约束)

  • (此项适用于编辑之前的原始问题,其中方法是将JavaScript代码(
    var gender='male';…
    )存储在数据库列中)您必须从现有对象生成代码,那么为什么要这样做呢?或者坦率地说,为什么要首先执行动态代码呢。如果您正在加载数据,则存储数据(即JSON)并对其进行解析


Javascript变量是JSON。存储在数据库中的是其他内容。某种服务器端脚本将从数据库转换为发送给客户端的任何内容。给猫剥皮有很多种方法。具体点。哦,是的,我在问什么。我的错。你认为我这样做是一种体面的方式还是有更好的方式?你的答案很完美。非常感谢。如果我的数据库非常大,是否可以为每个一对多关系(项目、库存、技能)创建一个新表?@user2783087这正是我建议的方法。另外一个好处是,您可以稍后在一个位置更改项目属性,并使其影响所有人的全局库存,而无需读取、解析和重新写入每个人的blob。