gpt4 book ai didi

node.js - NodeJS 存储基于文件的 JSON 数据库的最佳方式?

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:02 26 4
gpt4 key购买 nike

我见过很多类似的问题,但没有一个能解决我的具体问题:

我想要拥有自己的基于 JSON 的数据库,类似于 MongoDB 和 firebase 拥有 BSON 数据库的方式,我认为最简单的方法就是:将一些 JSON 数据存储在文件中,在 Node.js 应用程序启动时加载文件(加载到 Node.js 服务器的内存中),每当我进行某种搜索时,只需使用 .find (如果它在一个大数组中)和 .sort for Object.keys() 等搜索服务器中加载的 JSON 对象,然后对于每次更改,创建一个队列(甚至可能在另一个线程上)将数据存储回文件,这样就不能一次存储 2 个整体(因为它们主要只是在已经存储在内存中的 JSON 对象中访问它,而不是每次都从文件中读取)。

问题:如果它是一个巨大的数据库,那么在内存中存储如此多(比如可能 2GB)的 JSON 数据不会导致服务器崩溃吗?

MongoDB 和其他 nosql 数据库实际上如何存储数据?他们是否为每个文档/数据库都有一个单独的文件,并且只将需要的内容加载到内存中?是否有其他方法将数据库表/文档存储到文件中以供以后使用(并且仍然能够(几乎)立即访问嵌套的 JSON 对象?BSON 是否有所不同,因为它可以比 JSON 数据更快地访问?它们在加载时是否也会将整个数据库存储到内存中?

最佳答案

如果您正在寻找具有 DBMS 提供的所有操作的真正数据库,那么我建议使用像 Mongo 这样的成熟数据库。

如果您正在寻找一种使用某种基于文件的存储来组织 JSON 数据的方法,您可以使用 fs 模块来实现。它带有一个名为 createReadStream 的函数,可以让您使用缓冲区读取大文件,即不将整个文件加载到内存中。有一个名为 createWriteStream 的类似函数,用于将数据写入大文件而不会遇到内存问题。

但是,如果您能够将大文件分成多个小文件,那么在不使用流的情况下处理读取和写入就非常简单。我自己完成了这件事,即读取 JSON 文件中的数据,然后对其进行排序/修改,并使用 fs 写入它。包裹。这种方法最好的部分是您不需要为阅读做任何事情。您所需要的只是需要该文件,并且它可以随时以 JSON 形式提供,您可以像任何其他 JSON 对象一样进行解析。

关于node.js - NodeJS 存储基于文件的 JSON 数据库的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55447015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com