我想直截了当地向您展示我的示例数据,该数据大约来自.csv文件中的180.000行,因此很多行。我正在使用papaparse阅读.csv。然后,我将数据保存为对象数组,如下所示:
我只是用这张图片,因为您还可以看到我的对象具有或应该具有的所有属性。数据来自Media Transperency Data,后者是开放源代码,并显示机构之间的付款。
通过使用localforage技术保存对象数组,该技术基本上是IndexedDB或具有本地存储(如API)的WebSQL。因此,我永远不会在服务器上保存数据!仅在客户端!
问题:
所以我的问题是,用户可以在客户端界面中添加sourceHash
和/或targetHash
属性。因此,例如,假设用户加载了“ Energie Steiermark Kunden GmbH”对象,现在将sourceHash
-“ company”添加到该对象。所以基本上是一个标签。这已经在客户端中反映出来并显示出来,但是我也需要在localforage中得到它,并因此重写对象的初始数组。因此,我需要在我的180.000行巨大数组中搜索名称为“ Energie Steiermark Kunden GmbH”的每个对象,因为可以有多个对象,并将属性sourceHash
设置为“ company”。然后再次将其保存在localforage中。
第一个问题是如何最有效地做到这一点?我可以使用以下方法从localforage中获取数据并分别进行设置。
获取:
localforage.getItem('data').then((value) => {
...
});
设置:
localforage.setItem('data', dataObject);
但是,问题是我如何最有效地做到这一点?我的意思是,例如,如果sourceNode
仅以“ E”开头,则无需搜索所有sourceNode
。 targetNode
当然也是一样。
先谢谢您!
更新: 感谢您的回答!以及您将如何用Java最有效的方式做到这一点?我的意思是有可能做到这一点。例如,假设我们拥有当前的sourceHash“公司”,并希望将其分配给所有timeNode上以“ Energie Steiermark Kunden GmbH”开头的每个节点。可能是20151、20152、20153、20154等...
答案 0 :(得分:0)
Localforage只是实际存储引擎上的localStorage
/ sessionStorage
式包装,因此它仅为您提供localStorage
的键值功能。简而言之,对于任意查询,没有更有效的方法。
这听起来更像是IndexedDB的情况,因为您可以在数据上定义搜索索引,例如sourceNode
,并以此方式进行更有效的查询。