专业人员如何处理数千、几十万或可能数百万个JSON对象?node.js
专业人员如何处理数千、几十万或可能数百万个JSON对象 我最近完成了一个小应用程序,它请求了十几个JSON对象(它们是我生成的movies对象)。因为我使用的对象很少,所以当我想要解析和搜索JSON中的特定对象时,我不需要高效地编写代码 但如果我在一个真正的专业应用程序上工作,它收到了10万个JSON对象,我该如何处理:专业人员如何处理数千、几十万或可能数百万个JSON对象?node.js,node.js,json,performance,data-structures,bigdata,Node.js,Json,Performance,Data Structures,Bigdata,专业人员如何处理数千、几十万或可能数百万个JSON对象 我最近完成了一个小应用程序,它请求了十几个JSON对象(它们是我生成的movies对象)。因为我使用的对象很少,所以当我想要解析和搜索JSON中的特定对象时,我不需要高效地编写代码 但如果我在一个真正的专业应用程序上工作,它收到了10万个JSON对象,我该如何处理: 存储所有对象以便后端可以使用它 以高效的方式搜索特定对象 例如,假设这10万个对象是电影,每个对象都有一个类型和演员列表。我真的会将这些100K解析成一个数组,然后循环查找感兴
我制作的小应用程序在node.js中。专业人士使用数据库 首先要认识到的是,您没有使用JSON对象。您正在处理数据。JSON恰好是您接收数据的协议,但它可能是XML、CSV、ASN.1、Bencoding或Protobuf——数据的格式不重要,只有内容重要 现在,使用哪种类型的数据库取决于数据、接收数据的速率以及对数据的处理方式。有时,您将被迫使用多种类型的数据库 当数据是结构化的或具有复杂关系时,SQL/Relational databases会表现出色。一个设计合理的SQL数据库将把数据的不同部分分离到不同的表中,然后定义表之间的关系——例如,您将有一个
actors
表来存储所有演员,然后是一个movies
表来存储所有电影,然后是另一个cast
表将演员链接到电影。这避免了数据的重复,尤其是当您拥有庞大的数据集时
分层数据库(如LDAP)提供了非常快速的查找,特别是在大规模并行集群上实现时。这是因为查找路由可以利用数据层次结构。因此,电话系统已在分层数据库上标准化
MongoDB和ElasticSearch(Lucene)等文档数据库擅长非常快速的数据插入和相对快速的查询。在最简单的情况下,数据库只需将JSON数据直接保存到新文件中(是的,大多数文档数据库都是基于JSON的)。但是,通常不会进行重复数据消除,因此如果您有一个电影数据库,那么演员的姓名将在他们出现的所有电影中重复。另一方面,如果你有一个演员数据库,那么电影标题将被复制。这也说明了一个事实,即您需要仔细设计文档数据库的结构,并选择正确的根对象来表示所有数据
还有其他数据库类型,但它们往往更为深奥,用于非常特定的用例,如缓存、日志等。有趣的问题。对此没有正确或单一的答案。我们每个人都将根据特定解决方案的工作情况提供答案 让我尝试提供一个解决方案和一组步骤,您可以采取这些步骤来最终确定解决方案
- 描述中的数据是一组将 经常被搜索。大量读取
- 这将被输入一次并更新几次
- 需要在前端进行大量文本搜索和排序
- 您正在为应用程序使用NodeJS和客户机-服务器类型的体系结构,因此这将涉及restapi
所有电影数组中,该数组可以充当客户端缓冲区。当缓冲区已满时,您可以通过在应用程序中使用XHR或AJAX调用REST API,将allMovies
阵列卸载到后端
// Incoming movies
var newMovie = {your data from forms, other source, etc}
allMovies.push(newMovie);
if(allMovies.length >= 20 )
{
//make API call to backend.
//empty the buffer
allMovies = [];
}
//else wait for new movie
步骤2:在后端,只需将数据存储到数据库中,为搜索最多的字段编制索引。这里是我提到的两个数据库的参考
请注意,elasticsearch索引也会在