我们可以使用JSON作为数据库吗?

sam*_*ami 21 database json

我正在寻找快速有效的数据存储来构建我的基于PHP的网站.我知道MySql.我可以在服务器根目录而不是MySQL数据库中使用JSON文件吗?如果是的话,最好的方法是什么?

hyd*_*yde 27

您可以使用任何单个文件,包括JSON文件,如下所示:

  • 以某种方式锁定它(google PHP文件锁定,它可能就像向文件打开函数添加参数或将函数名称更改为锁定版本一样简单).

  • 从文件中读取数据并将其解析为内部数据结构.

  • (可选)修改内部数据结构中的数据.

  • 如果修改了数据,请将文件截断为0长度并将新数据写入其中.

  • 尽快解锁文件,其他请求可能正在等待......

  • 您可以继续使用内部结构中的数据来呈现页面,只要记住它一旦释放文件锁就可能过时,而其他HTTP请求可以修改它.

此外,如果您从用户的Web表单中修改数据,请记住它可能已在两者之间进行了修改.比如,加载包含用户详细信息以进行编辑的页面,然后其他用户删除该用户,然后editer尝试保存更改的详细信息,并且可能应该得到错误而不是重新创建已删除的用户.

注意:这是非常低效的.如果您正在构建一个您期望超过10个并发用户的站点,则必须使用更复杂的方案,或者只使用现有数据库...此外,您不能拥有太多数据,因为解析JSON并生成已修改JSON需要时间.

只要你在某一时刻只有一个用户,它只会越来越慢作为数据量的增长,但随着用户数量的增加,更多的用户意味着更多的都要求更多的数据,事情开始变得成倍速度较慢,在文件可用于处理请求之前,您很快就会遇到HTTP请求开始过期的限制...

此时,不要试图破解它以使其更快,而是选择一些现有的数据库框架(SQL或nosql或基于文件).如果你开始自己一起黑客攻击,你最终会重新发明轮子,通常很糟糕:-).好吧,除非它只是编程练习,但即便如此,最好还是学习使用一些现有的框架.

  • 好的写作.设计有效且长期运行的数据存储是非常困难的.我记得当Brian Aker离开MySQL并开始使用Drizzle时; 他的博客充满了所有这些有趣的设计挑战和与之相关的决定.我给他留下了几条关于Cassandra的评论,这似乎是一个基于JSON的完整分布式数据存储. (2认同)