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

时间:2012-12-16 07:10:29

标签: database json

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

4 个答案:

答案 0 :(得分:23)

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

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

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

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

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

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

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

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

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

只要您一次只有一个用户,随着数据量的增长,它会变得越来越慢,但随着用户数量的增加,更多用户意味着更多的请求更多的数据,事情开始变得指数更慢,你很快就会遇到HTTP请求开始过期的限制,然后文件可用于处理请求......

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

答案 1 :(得分:2)

我编写了一个对象文档映射器,用于名为JSON ODM的json文件可能有点迟,但如果它仍然需要它在MIT License下是开源的。

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

答案 2 :(得分: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兼容性

     

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

     

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

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

答案 3 :(得分:0)

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

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

当数据发生变化时,应用程序会更新文件。

优点:没有数据库。

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