Skip to main content

原型

Tui In One

汇总与颓有关的一切,高效率高质量颓废

概念解释

对象

  • 实体:人物或组织,能够产出颓废资料
  • 信息:不能直接用于颓废,但可以为颓废提供帮助
  • 作品:具有稳定的存在形式,可直接用于颓废
    • 软件
    • 动画
    • 音乐
    • ...

来源

  • data类:私人的或具有访问权限的文件,一般是颓废对象
  • feed类:具有时效性的信息流
  • wiki类:提供与某个具体对象相关的信息,更新较为及时
  • db类:提供与某个具体对象相关的信息,具有固定的格式

形式

  • 动态:聚合具有时效性的信息
  • 库存
    • 原件:颓废对象被产出的原样,若颓废对象的内在会发生变化,则应按一定粒度做出区分
    • 元数据:用于描述原件的客观属性的信息,往往不随时间变化
    • 衍生:颓废人通过原件产出的内容,存在形式多样,并且具有成为新的颓废资料或信息的可能性
  • 关键词:能够描述抽象或实在对象的客观属性,用于提供不同人物、组织或作品之间的共有属性

总体架构

主要需要解决数据的聚合和匹配问题

关系层

存储图数据。每个节点代表一个唯一来源的唯一对象(比如一个wiki类来源的一个词条、一个data类来源的一个文件)。边表示连接的两个节点存在关系

词典层

存储键值数据。每个键代表一个唯一来源的唯一对象,值为该对象的信息

对象层

存储表数据,每条数据代表一个唯一来源的唯一对象,根据对象类型分表存储与该对象相关的数据。

输入输出层

提供数据的输入和输出的具体逻辑,也是实现业务逻辑的位置

架构设计

关系层

使用有向图存储

节点类型

  • 元数据 (Metadata)
  • 实体(Entity)
  • 信息(Message)
  • 作品(Object)
  • *抽象(Abstract)

边类型

  • 等价(Equal)只能连接同类型节点,且必须双向成对出现
  • 创作(Create)只能从实体连接到其他节点
  • 使用(Enjoy)只能从实体连接到其他节点
  • 提及(Mention)只能从非实体连接到其他节点
  • 衍生(Derive)只能从非实体连接到其他节点
  • 控制(Control)只能从实体连接到实体
  • 关注(Follow)只能从实体连接到实体
  • 描述(Describe)只能从元数据连接到其他节点
  • 常规(General)没有要求

解释

节点类型参考概念解释,抽象节点在下面解释

  • 等价强连通分量包含的节点是同一事物的不同表现形式,比如同一个人在不同平台注册的账号
  • 创作边表示实体参与或独立完成了信息或作品的生产过程,比如一段视频的制作人员
  • 使用边表示实体查看、使用了信息或作品的全部或部分内容
  • 提及边表示后者按原样(As Is)出现在了前者中,比如一位名人以其本人的身份而非角色出现在电影中
  • 衍生边表示前者的产生造成了后者的产生,比如一款游戏的出现产生的周边、官方账号、改编动漫
  • 控制边表示后者表现出的行为是由前者造成的,或者后者的行为受到前者限制,比如演员与角色,成员与团体
  • 关注边表示以平等的方式加深前者与后者的联系
  • 常规边表示存在关系,但不确定或不属于以上类型

抽象节点是为了满足系统内部的数据处理需求增加的,有以下用法:
当抽象节点的规则与前面的规则冲突时优先满足抽象节点

  • 抽象节点可以连接等价边,但一个等价强连通分量中只能出现一个抽象节点,此时在展示该事物信息时优先展示抽象节点信息,比如一个人在不同平台的昵称不同,但可以通过抽象节点备注一个统一的名称
  • 抽象节点之间单向连接常规边,表示概念的包含关系,比如名称相同的不同作品,使用一个抽象节点衍生两个抽象节点,前者代表歧义状态,后两者可以分别与两个作品等价。

词典层

存储通用格式数据,负责所有数据的索引和聚合工作

数据格式

  • 键:必须是唯一的ID,对于有唯一永久链接的数据使用链接作为ID,对于文件使用sha256作为ID,其他数据由内部系统分配ID。只要id相同就认为是同一个对象
  • 值:字符串,本层不关心值的意义,只需要提供对于值的模糊搜索功能

数据源

每一个接入的数据源都需要实现两个功能:

  • 按照接口格式提供需要加入索引的键值对
  • 对词典层检索出的值进行解释

索引

词典层是对关系层的封装,每个关系层中的节点对应词典层中的一个词条。不同于关系层中存储的确定性关系,字典层负责处理文字字面上的联系

  • 进行模糊搜索时,由词典层索引找到与关键词相关的词条并返回
  • 进行关系搜索时,由关系层找到结果再由词典层聚合词条信息后返回

对象层

按照具体的对象分类处理,对象层要求能够存储二进制数据

实体

实体的数据源包括db类,变化慢,增速低

  • db类比如各种网站的用户主页相关信息,往往是由实体自行维护的,可信度高,可以在系统内重现

信息

信息的数据源包括feed类和wiki类

  • feed类比如各种动态信息,一条feed流可以是完全由固定的实体创作、也可能由多个实体创作,前者更容易处理,后者最好能有效地识别实体的信息
  • wiki类的信息往往围绕一个话题或一个概念,内容较多,且没有固定的创作实体
  • 对于受支持的来源,识别信息中的提及关系非常重要,用于构建关系网络

作品

作品的数据源包括db类、feed类、wiki类和data类

  • db类比如各种数据库网站和数字商店,主要提供作品的相关信息,可信度高
  • feed类和wiki类作品容易与信息混淆,或者可能出现信息和作品混合的情况,这种时候应该由用户决定
  • data类由于作品封装形式的多样性,难以自动化地匹配,需要用户的参与。但数字商店中的作品可能可以通过不接触作品的方式匹配

作品仍然需要按照不同的细分类型分别处理