用于定义和处理实时体育赛事的数据库建模

Database modeling for defining and processing realtime sports events

我正在尝试实时存储和处理体育赛事,并希望创建一个最佳系统,因为这将每秒处理 100 多个事件。系统将在体育比赛前存储事件,然后实时或在 half/session/match.

结束时处理它们

在我的系统中,每个 Event 被分解成以下组件

这里有一些关于足球的例子

1. No goals scored in 2nd Half
TEAM: *, WHAT: __GOAL, WHEN: __HALF_2, HOWMUCH: 0, TYPE: AGGREGATE 
{
    "who" : {"team":*},     
    "what" : "__GOAL",
    "when" : "__HALF_2"
    "howMuch" : {"value":0, "type" :"exact"},
    "type" : "AGGREGATE"
}


2. Either keeper to complete 3 or more punches
PLAYER: (p1 v p2), WHAT: __PUNCH, WHEN: __MATCH, HOWMUCH: 3+, TYPE: INDIVIDUAL
{
    "who" : {"player":{"or":["p1","p2"]}},  
    "what" : "__PUNCH",
    "when" : "__MATCH"
    "howMuch" : {"value":2, "type":"more"},
    "type" : "AGGREGATE"
}

3. Coutinho to score a goal before 65th min
PLAYER: p3, WHAT: __GOAL, WHEN: <65, TYPE: INDIVIDUAL
{
    "who" : {"player":"p3"},    
    "what" : "__GOAL",
    "when" : {"value" : 65, "type" : "before"}
    "type" : "INDIVIDUAL"
}


4. Henderson to play highest number of passes
PLAYER : p4, WHAT: __PASS, WHEN: __MATCH, HOWMUCH: __MAX, TYPE: AGGREGATE
{
    "who" : {"player":"p4"},    
    "what" : "__PASS",
    "when" : "__MATCH",
    "howMuch": "__MAX"    // this is a key word which will be handled accordingly on the application
    "type" : "AGGREGATE"
}

5. Liverpool to have more possession than everton
TEAM: (t1 > t2), WHAT: __POSSESSION, WHEN: __MATCH, TYPE: AGGREGATE      
{
    "who" : {"team":{"compare":["t1","t2"],"winner":"t2"}},     
    "what" : "__POSSESSION",
    "when" : "__MATCH"
    "type" : "AGGREGATE"
}

所有 AGGREGATE 事件将在匹配状态更改时进行检查。例如第二半---> MATCH_END

将实时检查所有 INDIVIDUAL 事件(一旦收到新事件)。这适用于网络挂钩。

例如第58分钟进球。 系统收到的事件 - {"type":"goal","player":"_henderson_", "minute":58}

系统现在将 运行 a "find" where ("type" == "INDIVIDUAL" && "what" == "__GOAL") 并比较找到的所有事件。

稍后,我想提供一个管理功能,用于编写可以解析为这种结构的句子。我想知道的是我的工作方向是否正确,或者我是否需要开始以不同的方式思考。

你的选择可能在 Spark 和 Dataflow 之间。这是一个不错的 white paper comparing the two,它实际上使用了与您的用例相似的用例(大型手机游戏用户实时评分)。祝你好运,看起来是个很酷的项目(看起来像在线博彩实施?)。