33

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

4

4 回答 4

50

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

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

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

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

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

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

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

此外,如果您修改用户 Web 表单中的数据,请记住它可能已在两者之间进行了修改。就像,加载带有用户详细信息的页面以进行编辑,然后其他用户删除该用户,然后编辑器尝试保存更改的详细信息,并且应该可能会出错而不是重新创建已删除的用户。

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

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

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

于 2012-12-16T07:36:45.393 回答
2

我写了一个对象文档映射器来与名为JSON ODM的 json 文件一起使用可能有点晚,但如果仍然需要它,它是 MIT 许可证下的开源。

它提供了查询语言和一些GeoJSON工具

于 2015-03-28T10:19:58.037 回答
1

IBM Informix 12.10 xC2 的新版本现在支持 JSON。
检查链接: http: //pic.dhe.ibm.com/infocenter/informix/v121/topic/com.ibm.json.doc/ids_json_007.htm

手册说它与 MongoDB 驱动程序兼容。

关于 Informix JSON 兼容性

使用由 MongoDB 创建的面向 JSON 的查询语言的应用程序可以与存储在 Informix® 数据库中的数据进行交互。Informix 数据库服务器还提供内置的 JSON 和 BSON(二进制 JSON)数据类型。

您可以使用 MongoDB 社区驱动程序在 Informix 中插入、更新和查询 JSON 文档。

不确定,但我相信您可以使用 Innovator-C 版本(免费用于生产)进行测试,并且在生产环境中免费使用它。

于 2013-09-17T18:21:22.127 回答
0

当您更喜欢 JSON(或其他文件格式)而不是数据库时,一个明显的情况是您的所有(相对较小的)数据都存储在应用程序缓存中。

当应用程序服务器(重新)启动时,应用程序从文件中读取数据并将其存储在数据结构中。

当数据更改时,应用程序会更新文件。

优点:没有数据库。

缺点:由于多种原因,只能用于数据相对较少的系统。例如,具有数百种产品的非常具体的产品站点。

于 2020-12-31T07:12:48.430 回答