MySQL与JSON——为什么?

MySQL与JSON——为什么?,mysql,json,Mysql,Json,我正在设计一个小的网络应用/游戏。什么更好:MySQL表还是json文件?它们都存储信息。它们都可以被PHP解析。优点/缺点是什么 这就是我的意思: username | password ------------------- seefour | abc123 vs 编辑:哇,我问这个问题才三年,从我问这个问题到现在,我已经成熟了很多,这让人惊讶。从未来的我到过去的我,这就是为什么这两个都不起作用。(以防像我这样天真的人可以参考) 我曾经认为这两者是可以互换的,因为它们几乎都是存储信息的

我正在设计一个小的网络应用/游戏。什么更好:MySQL表还是json文件?它们都存储信息。它们都可以被PHP解析。优点/缺点是什么

这就是我的意思:

username | password
-------------------
seefour  | abc123
vs


编辑:哇,我问这个问题才三年,从我问这个问题到现在,我已经成熟了很多,这让人惊讶。从未来的我到过去的我,这就是为什么这两个都不起作用。(以防像我这样天真的人可以参考)

我曾经认为这两者是可以互换的,因为它们几乎都是存储信息的方式,尽管存储和使用JSON文件在当时对我来说比较容易。数据库是独立的软件,它使检索数据更快,而且不会随着时间的推移而变得臃肿。此外,将所有数据放在一个或两个文件中,很容易导致数据被盗或丢失,而作为数据库,这些文件更安全。从根本上说,数据不应该是代码的一部分;它应该是您的代码使用的一个单独的东西


另外,在接下来的几年中,您还将学习哈希和盐析,因此不要将密码存储在纯文本中

这两种方法实际上并不具有可比性

MySQL将数据存储在数据库中,或者实际上是一个数据库。 JSON以从服务器传递到客户机的格式存储数据。Javascript/jquery可以使用JSON作为数据对象,但它们只在页面的整个生命周期中存在于客户端

因此,如果您想将数据存储为JSON(不推荐),您可能必须将其存储为文本文件来保存数据

您应该将数据存储在数据库中。
使用函数将其转换为JSON格式,然后将其传递到网页,供javascript使用并呈现给用户。

出于许多原因,MySQL更可取,其中最重要的原因是您不希望web服务器进程具有对文件系统的写访问权限(可能的日志记录除外)因为这是一种容易被利用的方式

此外,MySQL团队在复制、并发数据访问、ACID法规遵从性和数据完整性等方面投入了大量工程精力


例如,想象一下,如果您在存储的任何数据结构中添加一个新字段,则该字段都是必需的。如果存储在JSON文件中,则必须有一些过程来打开每个文件,添加字段,然后保存它。将其与使用带有字段默认值的ALTER TABLE的难度进行比较。(这是一个做作的例子,但您希望在代码库中留下多少黑客来处理旧数据?

坦率地说,MySQL是一个数据库,而JSON不是,因此正确的答案是MySQL,毫不犹豫。JSON只是一种语言,甚至连这都不是。JSON从未被设计用于处理并发连接或任何类型的数据操作,因为它自己的功能是表示数据,而不是管理数据

因此,使用MySQL存储数据。然后,您应该使用一些编程语言来读取该数据库,并将该信息作为JSON发送,而不是实际将任何内容存储在JSON中


如果您将数据存储在文件中,无论是JSON格式还是其他格式,您将遇到各种各样的问题,自从数据库开始用于相同的事情以来,人们就不再担心这些问题了。大小限制、锁定、命名。当您只有一个用户时,这已经足够好了,但当您添加更多用户时,您将开始解决许多问题,您可能会编写一个完整的数据库引擎来为您处理文件,而一直以来,您都可以简单地使用实际的数据库。

有数百种数据存储方法。将mySQL表与json文件进行比较很有趣,但如果没有更多关于您需要什么的信息,这不是什么问题。否则这个问题会得到“意见和评论”,而不是一个有用的“答案”。@nicholas.hauschild我想是的;用户名和密码行可以很容易地替换为字符串等。它们之间有模糊的可比性,所以我想知道哪一个更易于访问和维护。谢谢(请更新问题)。用户/通行证是身份验证,它实际上是(另一个)独立的主题。虽然我会将pw至少散列存储在db中,而且我不认为我会将其传递给json。还有一个完全无关的注意事项:不要存储密码!无论您设计什么系统,几乎可以肯定的是,您应该存储某种密码散列(这是一个不错的选择),而不是密码本身。如果您试图创建公共数据集,例如将它们存储在github上,那么sql可能会比它的价值更痛苦,json可以做到这一点。这是有道理的。非常感谢。你的回答消除了我的困惑。但我有一个小问题。为什么我们要将SQL数据转换为JSON,然后将其传递给网页。相反,我们可以使用SQL查询直接将数据提取到网页。转换为JSON然后将其传递到网页是否更有效?永远不要直接从客户端调用数据库(创建sql脚本以提取数据)巨大的安全问题。如果页面还没有呈现给客户端(仍然构建在服务器上),那么您可以调用,但不赞成,应该始终有某种类型的服务/存储库层可以通过。如果您只是通过ajax拉取数据,只获取Json(而不是页面的完整html)然后我认为服务器将更快地转换为json字符串,然后让客户端计算机尝试使用javascript将数据转换为json。Ajax和Json用作发布/获取数据的工具,无需发布或获取页面的完整html。Json只是一个格式化字符串,更容易保存较大的数据对象。更面向对象。
{
  "username":"seefour",
  "password":"abc123"
}