Reports@Scale
Introduction
This wiki details the architecture of enabling reporting framework to operate at scale. It discusses the high level design problems to be solved and introduces the proposed architecture for the same.
Key Design Problems
TBA
Reporting Architecture
Druid Architecture
Druid Data Model
Raw Telemetry
| Dimension in Druid | Field in Telemetry | Description | Data Type |
|---|---|---|---|---|
1 | ets | ets | Event timestamp | Long |
2 | eid | eid | Event Id | String |
3 | syncts | syncts | Sync Timestamp | Long |
4 | @timstamp | @timstamp | Sync Timestamp in String | String |
5 | actor_id | actor.id | Actor Id of the event | String |
6 | actor_type | actor.type | Type of the actor | String |
7 | context_channel | context.channel | Channel Id | String |
8 | context_pdata_id | context.pdata.id | Producer Id | String |
9 | context_pdata_pid | context.pdata.pid | Producer Process Id | String |
10 | context_pdata_ver | context.pdata.ver | Producer version number | String |
11 | context_env | context.env | Context Environment | String |
12 | context_sid | context.sid | Session Id | String |
13 | context_did | context.did | Device Id | String |
14 | context_cdata_type | context.cdata.type | Correlation Data Type | Array[String] |
15 | context_cdata_id | context.cdata.id | Correlation Data Id | Array[String] |
16 | context_rollup_l1 | context.rollup.l1 | Context level 1 rollup | String |
17 | context_rollup_l2 | context.rollup.l2 | Context level 2 rollup | String |
18 | context_rollup_l3 | context.rollup.l3 | Context level 3 rollup | String |
19 | context_rollup_l4 | context.rollup.l4 | Context level 4 rollup | String |
20 | object_id | object.id | Content Id | String |
21 | object_type | object.type | Content Type | String |
22 | object_version | object.ver | Content Version | String |
23 | object_rollup_l1 | object.rollup.l1 | Content level 1 rollup | String |
24 | object_rollup_l2 | object.rollup.l2 | Content level 2 rollup | String |
25 | object_rollup_l3 | object.rollup.l3 | Content level 3 rollup | String |
26 | object_rollup_l4 | object.rollup.l4 | Content level 4 rollup | String |
27 | tags | tags | Tags | Array[String] |
28 | edata_type | edata.type | Event type | String |
29 | edata_subtype | edata.subtype | Event subtype | String |
30 | edata_mode | edata.mode | START event Mode of start | String |
31 | edata_pageid | edata.pageid | Unique pageid | String |
32 | edata_uri | edata.uri | IMPRESSION event Relative URI of the content | String |
33 | edata_id | edata.id | Event data Id | String |
34 | edata_duration | edata.duration | Duration of the event | Double |
35 | edata_index | edata.index | ASSESS event Index of the question within a content | Integer |
36 | edata_pass | edata.pass | ASSESS event Field to identify pass or fail for assessments | String |
37 | edata_score | edata.score | ASSESS event Assessment score | Double |
38 | edata_resvalues | edata.resvalues | ASSESS event Assessment results | Array[Object] |
39 | edata_item_id | edata.item.id | ASSESS event Assessment item id | String |
40 | edata_item_title | edata.item.title | ASSESS event Assessment item title | String |
41 | edata_item_maxscore | edata.item.maxscore | ASSESS event Assessment item max score | Double |
42 | edata_target_id | edata.target.id | ASSESS event Assessment item target id | String |
43 | edata_target_type | edata.target.type | ASSESS event Assessment item target type | String |
44 | edata_rating | edata.rating | FEEDBACK event Ratings | Integer |
45 | edata_comments | edata.comments | FEEDBACK event Comments | String |
46 | edata_dir | edata.dir | SHARE event direction | String |
47 | edata_items_id | edata.items.id | SHARE event shared item ids | Array[String] |
48 | edata_items_type | edata.items.type | SHARE item types | Array[String] |
49 | edata_items_origin_id | edata.items.origin.id | SHARE event source id | Array[String] |
50 | edata_items_origin_type | edata.items.origin.type | SHARE event source type | Array[String] |
51 | edata_items_to_id | edata.items.to.id | SHARE event destination id | Array[String] |
52 | edata_items_to_type | edata.items.to.type | SHARE event destination type | Array[String] |
53 | edata_state | edata.state | AUDIT event current state | String |
54 | edata_prevstate | edata.prevstate | AUDIT event previous state | String |
55 | edata_size | edata.size | SEARCH event result size | Integer |
56 | edata_filters_dialcodes | edata.filters.dialcodes | SEARCH event List of dialcodes | Array[String] |
57 | edata_topn_identifier | edata.topn.identifier | SEARCH event topn results | Array[String] |
58 | edata_visits_objid | edata.visits.objid | IMPRESSION event unique id for object visited | Array[String] |
59 | edata_visits_objtype | edata.visits.objtype | IMPRESSION event type of object visited | Array[String] |
60 | edata_visits_objver | edata.visits.objver | IMPRESSION event version of object visited | Array[String] |
is it all going to be indexed in a single data source?. for example, raw-telemetry is one source, content model is another like that?