簡體   English   中英

Solr架構設計:擬合時間序列數據

[英]Solr schema design: fitting time-series data

我試圖在Solr中使用以下數據來支持靈活的查詢,並希望得到相同的輸入。 我有關於用戶的數據說:

contentID (assume uuid), 
platform (eg. website, mobile etc), 
softwareVersion (eg. sw1.1, sw2.5, ..etc),
regionId (eg. us144, uk123, etc..)
....

還有更多其他這樣的領域。 此數據部分預先聚合(讀取Hadoop作業):因此我們假設“contentID = uuid123和platform = mobile和softwareVersion = sw1.2和regionId = ANY”我的數據格式為:

timestamp  pre-aggregated data [ uniques, total]
 Jan 15    [ 12, 4]
 Jan 14    [ 4, 3]
 Jan 13    [ 8, 7]
 ...        ...

然后我也有更少的粒度數據說“contentID = uuid123和platform = mobile和softwareVersion = ANY和regionId = ANY(由於粒度減少,這些值將超過上表)

timestamp : pre-aggregated data [uniques, total]
 Jan 15    [ 100, 40]
 Jan 14    [ 45, 30]
 ...           ...

我將獲得諸如“contentID = uuid123 and platform = mobile”之類的查詢,給出1月15日至1月13日的“唯一性”和“contentID = uuid123和platform = mobile和softwareVersion = sw1.2”的總和,給出“總數”的總和1月15日至1月01日。

我在考慮簡單的架構,文檔就像(上面的第一個例子):

{
  "contentID": "uuid12349789",
  "platform" : "mobile",
  "softwareVersion": "sw1.2",
  "regionId": "ANY",
  "ts" : "2017-01-15T01:01:21Z",
  "unique": 12,
  "total": 4
}

上面的第二個例子:

{
  "contentID": "uuid12349789",
  "platform" : "mobile",
  "softwareVersion": "ANY",
  "regionId": "ANY",
  "ts" : "2017-01-15T01:01:21Z",
  "unique": 100,
  "total": 40
}

可能的優化:

{
  "contentID": "uuid12349789",
  "platform.mobile.softwareVersion.sw1.2.region.us12" : {
      "unique": 12,
      "total": 4
  },
 "platform.mobile.softwareVersion.sw1.2.region.ANY" : {
      "unique": 100,
      "total": 40
  },
  "ts" : "2017-01-15T01:01:21Z"
  }

挑戰:這些行的數量非常大,並且它會隨着每個新字段呈指數級增長 - 例如,如果我使用上面建議的模式,我將最終為contentID,platform,softwareVersion,regionId的每個組合存儲一個新文檔。 現在,如果我們向該文檔引入另一個字段,組合數量將呈指數級增長。我已經擁有超過10億個這樣的組合行。

我希望能找到專家的建議

  1. 對於不同的'ts',多個這樣的字段可以適合於相同的文檔,使得可以在其上進行范圍查詢。
  2. 時間范圍(ts)可以與列表(?)放在同一文檔中(以減少行數)。 我知道多值字段不支持復雜的數據類型,但是如果可以使用數據/模式做任何其他事情來減少查詢時間和行數。

這些行的數量非常大,肯定超過10億(如果我們采用我建議的模式)。 您會建議哪種架構適合查詢要求?

僅供參考:所有查詢都與字段完全匹配(無部分或標記化),因此不需要對字段進行分析。 幾乎所有查詢都是范圍查詢。

您正在嘗試存儲所有可能的屬性值組合的查詢時間結果。 多數數據太多了。 而是將每個觀察和屬性存儲為單個數據點一次。 因此,如果你有'n'觀察結果並且如果你添加了一個額外的屬性,它將會成倍增加,而不是指數增長。 如果您需要某些屬性組合的數據,則可以在查詢時過濾/聚合它們。

{
  "contentID": "uuid12349789",
  "ts" : "2017-01-15T01:01:21Z",
  "observation": 10001,

  "attr-platform" : "mobile",
  "attr-softwareVersion": "sw1.2",
  "attr-regionId": "US",
}

暫無
暫無

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

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