簡體   English   中英

構造用於查詢的JSON數據的有效方法

[英]Effecient method for structuring JSON data for querying

我正在嘗試提出一種在JSON中存儲靜態數據的有效方法,以便可以在客戶端查詢中使用它。

目前,此數據包含大約60個CSV文件,每個文件大約包含CSV文件。 每個2000-2200個條目。 我在服務器端解析此數據,並具有一個處理來自客戶端的查詢的Web服務。 如前所述,我希望能夠將其移至客戶端,以便Web應用程序可以潛在地使用應用程序緩存脫機工作。

以下是一部分數據示例:

Battle Axe,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
150,19EK,21EK,23EK,25EK,33ES,33ES,36ES,36ES,34ES,36ES,40ES,40ES,34ES,34ES,39ES,42ES,38ES,41ES,44ES,46ES
149,19ES,21ES,23ES,25ES,33ES,33ES,36ES,36ES,34ES,36ES,40ES,40ES,34ES,34ES,39ES,42ES,38ES,41ES,44ES,46ES
148,19EK,21EK,23EK,25EK,33ES,33ES,36ES,36ES,34ES,36ES,39ES,40ES,34ES,34ES,39ES,42ES,37ES,40ES,44ES,45ES
147,19ES,21ES,23ES,25ES,33ES,32ES,35ES,35ES,33ES,35ES,39ES,39ES,33ES,33ES,38ES,41ES,37ES,40ES,43ES,45ES

我最初嘗試轉換為JSON是基於以下條件:

  • 每個文件都是一個JSON對象(我們將此對象稱為“武器”)
  • 文件中的每一行都是另一個JSON對象,該對象存儲在對應武器對象下的數組中
  • 行的每個條目都存儲在行對象下的固定長度數組中
  • 所有的“武器”對象都存儲在一個數組中。

這意味着我有一個陣列,大約由。 60個對象,這些對象中平均存儲了100個對象。 對於每個條目,這100個對象中的每個對象都有20個對象的數組,其中包括實際值和一些其他元數據。 如您所見,我已經有12萬個對象了……生成的縮小的json字符串為3mb。 下面的小樣本:

var weapon = 
{
 Name: 'Broadsword',
 HitEntries: [ 
 {
    High: 150,
    Low: 150,
    Unmodified: false,
    Hits: [ { Hits: '12', Critical: 'CK', Fail: false},...,{ Hits: '1', Critical: '', Fail: false}]
 }, 
 ...
 {
    High: 50,
    Low: 47,
    Unmodified: false,
    Hits: [ { Hits: '3', Critical: '', Fail: false}] 
 }
 ]
}

下面是將要運行的查詢的示例。 它將基於上面顯示的示例數據csv:

  • 選擇了戰斧武器
  • 滾動(行)的值選擇為147
  • 裝甲類型(列標題)選擇為9的值

以上結果應為39ES (行與標題之間的交叉引用)

在這一點上,我認為在走這條路之前獲得一些建議可能是一個好主意。 任何輸入表示贊賞=)

您可以在此處進行一些優化:

  1. 如果可能,使用WebSockets流數據
  2. 將數據轉換為TypedArrays(斑點)-您最終將處理10K文件。
  3. 使用索引數據庫查詢是否需要

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM