blu*_*yke 5 database json node.js bson
我见过很多类似的问题,但没有一个能解决我的具体问题:
我想要拥有自己的基于 JSON 的数据库,类似于 MongoDB 和 firebase 如何拥有 BSON 数据库,我认为最简单的方法就是:将一些 JSON 数据存储在文件中,在 node.js 运行时加载该文件应用程序启动(进入 Node.js 服务器的内存),每当我进行某种搜索时,只需使用 .find (如果它在一个大数组中)和 .sort 搜索服务器中加载的 JSON 对象即可。 key() 等,然后对于每次更改,创建一个队列(甚至可能在另一个线程上)将数据存储回文件,以便不能一次存储 2 个整体(因为它们主要只是访问它已经存储在内存中的 JSON 对象中,而不是每次都从文件中读取)。
问题是:如果它是一个巨大的数据库,那么在内存中存储这么多(比如 2GB)JSON 数据不会导致服务器崩溃吗?
MongoDB 和其他 nosql 数据库实际上如何存储数据?他们是否为每个文档/数据库都有一个单独的文件,并且只将需要的内容加载到内存中?是否有其他方法将数据库表/文档存储到文件中以供以后使用(并且仍然能够(几乎)立即访问嵌套的 JSON 对象?BSON 是否有某种不同之处,因为它可以比 JSON 数据更快地访问?它们还存储加载时将整个数据库放入内存?
如果您正在寻找具有 DBMS 提供的所有操作的真正数据库,那么我建议使用像 Mongo 这样的成熟数据库。
如果您正在寻找一种使用某种基于文件的存储来组织 JSON 数据的方法,您可以使用 fs 模块来实现。它带有一个名为 的函数createReadStream,可以让您使用缓冲区读取大文件,即不将整个文件加载到内存中。有一个类似的函数,createWriteStream可以将数据写入大文件,而不会遇到内存问题。
但是,如果您能够将大文件分成多个小文件,那么在不使用流的情况下处理读取和写入就非常简单。我自己完成了它,即读取然后排序/修改 JSON 文件中的数据并使用fs包写入它。这种方法最好的部分是您不需要为阅读做任何事情。您所需要的只是需要该文件,并且它可以随时以 JSON 形式提供,您可以像任何其他 JSON 对象一样进行解析。
| 归档时间: |
|
| 查看次数: |
6236 次 |
| 最近记录: |