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

2024-01-21

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


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

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

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

  • 可选择修改内部数据结构中的数据。

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

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

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

另外,如果您修改用户网络表单中的数据,请记住它可能在中间被修改过。例如,加载包含用户详细信息的页面进行编辑,然后其他用户删除该用户,然后编辑器尝试保存更改的详细信息,并且可能会出现错误,而不是重新创建已删除的用户。

Note: 这效率太低了。如果您正在构建一个预计有超过 10 个并发用户的网站,则必须使用更复杂的方案,或者仅使用现有数据库...此外,您不能拥有太多数据,因为解析 JSON 并生成修改后的数据JSON 需要时间。

只要一次只有一个用户,随着数据量的增长,它就会变得越来越慢,但随着用户数量的增加,更多的用户意味着更多的请求and更多数据,事情开始变得指数地速度较慢,并且很快就会达到 HTTP 请求在文件可用于处理请求之前开始过期的限制...

此时,不要尝试破解它以使其更快,而是选择一些现有的数据库框架(SQL 或 nosql 或基于文件的)。如果你开始自己动手,你最终只会重新发明轮子,通常效果很差:-)。好吧,除非这只是编程练习,但即便如此,学习一些现有框架的使用可能会更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们可以使用 JSON 作为数据库吗? 的相关文章

  • Jackson 的 ObjectMapper 和 SQL 中的 RowMapper

    我们正在使用对象映射器 当将 ObjectMapper 与 RowMapper 一起使用时 是否应该在每个 mapRow 内部 如下所示 声明它 还是在 mapRow 外部声明为类公共成员 我认为根据本文 它应该作为公共类成员在外部 我应该
  • 将 Java pojo 转换为 json 字符串

    我有以下java类 public class TabularDescriptor extends ReportDescriptor private String generatorClass private String targetCla
  • 需要有关使用 PHP 在 mysql 数据库中插入逗号分隔数据的帮助

    数据库表中已有的演示数据 INSERT INTO csvtbl ID SKU Product Name Model Make Year From Year To VALUES 1 C2AZ 3B584 AR Power Steering P
  • Json.dump 失败并显示“必须是 unicode,而不是 str”TypeError

    我有一个 json 文件 其中恰好有大量中文和日文 以及其他语言 字符 我将其加载到我的 python 2 7 脚本中使用io open如下 with io open multiIdName json encoding utf 8 as j
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • Rspec 控制器测试,传递 JSON 参数

    我试图实现以下目标 在 RSpec 控制器测试中创建 POST json 请求 并向其传递参数 这是我的代码 it returns access token do post login email bla password bla1 for
  • POST 表单数据为 application/json

    我正在开发一个 API 它接收 application json post 请求 并触发一些流程 我目前的主要问题是发送一个 application json 帖子 其中包含来自输 入表单的数据 我已经尝试过 jQuery ajax 但由于
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • 删除大量记录需要很长时间

    我有一个包含约 60 000 行的数据库表 在 SQL Server 2012 Express 上运行 我使用以下代码来清除旧行 Deleting CPU measurements older than oldestAllowedTime
  • 气流:如何将读取 json 文件的方法放入本地库中

    我必须产生一些DAG 我已将 json 表架构文件保存在GCP铲斗 https cloud google com storage docs json api v1 buckets GCP 存储桶上的文件关联到composer将被重新映射到
  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • Rails escape_javascript 通过转义单引号创建无效的 JSON

    ActionView中的escape javascript方法转义撇号 作为反斜杠撇号 解析为 JSON 时会出错 例如 消息 我在这里 在打印时是有效的 JSON message I m here But 输出 I m here 导致无效
  • 如何使用Nodejs将json数据导出为指定格式的pdf文件?

    我是nodejs的初学者 我正在编写一个程序 将文本数据从 json 文件转换为 pdf 文件 这是我的输入文件 input json Info Company ABC Team JsonNode Number of members 4 T
  • AWS Lambda 函数误解了 python 中的事件字典?

    我正在尝试将谷歌日历 API 部署到 AWS Lambda 由于我在从事件字典中提取值时遇到问题 由 lambda 从 POST 请求的 JSON 负载创建 因此我创建了一个玩具函数来测试 def handler event context
  • 循环遍历 JSON 数组

    我最近发布了另一个问题 用户立即为我指明了正确的方向 ajax type POST url data token token re 8 cache false timeout 5000 success function html auth
  • 将JSON数据解析到Android ListView中

    我已经潜伏这个网站很长一段时间了 幸运的是 到目前为止我所有的问题都得到了解答 我希望你们中的一些人能够阐明我的问题 我可以成功地让 ListView 来显示字符串数组 但是当我尝试将 JSON 数据解析为数组时 我的程序只是强制关闭 而
  • 内存高效的大型数据集流式传输到 S3

    我正在尝试使用 SQL alchemy 复制 S3 大型数据集 大于 RAM 我的限制是 我需要使用 sqlalchemy 我需要将内存压力保持在最低水平 我不想使用本地 filsystem 作为中间步骤将数据发送到 s3 我只想通过管道将
  • 如何在 IntelliJ IDEA 中按 JSON 中的路径搜索?

    我有很长的 JSON 文件 例如 a b c keyC 和路径 a b c 如何使用路径在 JSON 中搜索 转到行 问题类似于如何在 IntelliJ IDEA 中复制 JSON 中的路径 https stackoverflow com
  • 有序 JSON 对象

    我有一个 servlet 它与数据库通信 然后返回有序 按时间排序 对象的列表 在servlet部分 我有 access DB returns a list of User objects ordered ArrayList users M

随机推荐

  • 在java中不使用任何循环打印1到10[重复]

    这个问题在这里已经有答案了 可能的重复 无循环或条件地显示从 1 到 100 的数字 https stackoverflow com questions 2044033 display numbers from 1 to 100 witho
  • 如何停止运行 Vim 宏

    我将一个宏记录到一个寄存器中 并以太多的重复次数开始它 完成每个宏需要很长时间 如何取消 停止 Vim 执行宏 有没有办法在不终止编辑器进程的情况下完成此操作 以下是我遵循的步骤 录制宏到寄存器1 我运行了1000次 1000 1 现在等待
  • C# 4.0中OptionalAttribute和可选参数有什么区别

    我正在研究别人的代码 有一个这样的方法 public SomeClass DoSomething string param1 Optional DefaultParameterValue string optional 为什么有人会使用这些
  • 本地化字符串比较

    有什么区别NSString s localizedCaseInsensitiveCompare and localizedStandardCompare 方法 我阅读了参考资料 但不知道该使用哪一个 localizedCaseInsensi
  • PHP OOP 数据库问题

    我正在使用 DB 类中的 get 函数从数据库查询用户名 即使数据库中存在用户 它也总是返回 无用户 这是我的 DB php
  • 如何旋转 ImageView?

    我想在我的 Activity 中以编程方式旋转 ImageView 目前我找不到任何适用于 Xamarin 的解决方案 并且 Android 的翻译解决方案也不起作用 有人知道如何旋转 ImageView 吗 例如 这段代码只是给了我一个
  • 如何在Android中使用Java邮件将应用程序电子邮件同步到服务器电子邮件?

    我想同步更改电子邮件应用程序中的更改 然后自动更改服务器电子邮件中的更改 例如 我已阅读电子邮件应用程序上的未读消息 然后自动服务器电子邮件将未读邮件更改为已读邮件 我的电子邮件应用程序使用邮件 jar 文件 activation jar
  • Airflow dags 生命周期事件

    我正在尝试通过java后端管理气流dags 创建 执行等 目前 在创建 dag 并将其放入气流的 dags 文件夹中之后 我的后端不断尝试运行 dag 但在气流调度程序接收到它之前它无法运行它 如果 dag 的数量较多 这可能需要相当长的时
  • Eslint:函数体括号的换行规则(类似于 object-curly-newline)?

    我希望函数体的括号有新行 const fn gt new line here new line before 同样适用于function We have https eslint org docs latest rules object c
  • 如何在elasticsearch启动时加载索引模板文件?

    在elasticsearch v1 5中 索引模板可以放置在templates目录下的配置位置 path conf 中elasticsearch config templates 但是 我发现升级到v2 3或v5 3后 这个模板将不会被加载
  • 获取Datalist中选定的项目值

    我在数据列表中使用 ImageButton 并希望将所选项目值存储在变量中以进一步处理它 如何在单击按钮时获取数据 我需要的数据是 Productid 名称 价格等 有什么帮助吗 数据列表的代码是
  • 具有单字母扩展名的 C++ 头文件有什么特别之处?

    C 标准在第 16 2 节 源文件包含 中包含以下规则 它以某种方式使单字符文件扩展名变得特殊 该实现应为由一个或多个组成的序列提供唯一的映射非数字 or digits 2 11 后跟一个句点 和一个单一的nondigit 第一个字符不能是
  • WPF TreeView 虚拟化

    我正在尝试弄清楚这个虚拟化功能 我不确定我是否理解错误或发生了什么 但我正在使用 ANTS 内存分析器来检查虚拟化 TreeView 中的项目数 并且它只是不断增加 我有一个包含 1 001 个项目 1 个根项目 1000 个子项目 的 T
  • Scipy:凸包的质心

    如何使用 python 和 scipy 计算凸包的质心 我找到的只是计算面积和体积的方法 问候 弗兰克 假设您已经使用以下方法构建了凸包scipy spatial ConvexHull 返回的对象应该具有点的位置 因此质心可能很简单 imp
  • 为什么我无法在 Python 中两次登录 imap 服务器

    正如下面的错误消息所示 我无法登录 因为我处于 LOGOUT 状态而不是 NONAUTH 状态 如何从 LOGOUT 转到 NONAUTH 下面的示例 显然下面的登录凭据是伪造的 Python 2 7 3 default Aug 1 201
  • 在引发它订阅的异步事件后,对象是否会自动释放?

    假设我有一个可以从主线程调用多次的函数 每次被调用时 我都会创建一个WebClient对象异步下载一些数据 我的问题 这样做安全吗 是个WebClient调用事件后释放对象 如果内存不会自动释放 我不想继续分配内存 我的应用程序适用于带有
  • 将线段延长特定距离

    我正在尝试找到一种将线段延长特定距离的方法 例如 如果我有一条从 10 10 开始延伸到 20 13 的线段 并且我想将长度延长 3 如何计算新端点 在这个例子 10 44 中 我可以通过 sqrt a 2 b 2 获得长度 所以如果我想知
  • 将 eclipse .project 文件存储在项目目录之外

    我不知道这是否可能 因为该文件不包含任何相关的目录链接 但无论如何 我想将 project 文件存储在项目根目录之外的单独目录中 我怎样才能做到这一点 您不能将 project 放在项目根目录之外 因为项目根目录是 project 所在的文
  • 更改立方体一面的颜色 - THREE.js

    我在使用 Three js 的同时学习 OOP 我知道 这是一个很难做到的方法 所以我在场景中创建了一个盒子 现在我想改变那个立方体的一个面的颜色 var scene new THREE Scene var camera new THREE
  • 我们可以使用 JSON 作为数据库吗?

    我正在寻找快速高效的数据存储来构建我的基于 PHP 的网站 我知道MySql 我可以在服务器根目录中使用 JSON 文件来代替 MySQL 数据库吗 如果是 最好的方法是什么 您可以使用任何单个文件 包括 JSON 文件 如下所示 以某种方