关于Hadoop时代的存储策略和格式

资料储存策略


计算机技术的当前状态是可以存储几乎无限量的数据。 结果,实际上消除了删除数据以释放新数据空间的需要。
从数据和它们描述的对象的自然关系开始,这提供了很多优势,因为自然界中存在自然保护法则,同样适用于反映自然对象的数据,最后仅涉及与数据完整性相关的纯技术问题。时间。

因此,存储策略应基于“软”删除范例,该范例包括将数据标记为从某个时间点开始失去其相关性。

数据更改完全相同。 更新不应覆盖以前的数据,而是指示从某个时间点开始,数据具有不同的含义。

如果您确实想通过清除未使用的数据中的存储来释放空间,则可以采用压缩存储的策略,即通过在过去的某个时间点仅覆盖相关数据来制作存储的副本。

这些注意事项并不是什么新问题,因为它们已在Hadoop等大数据仓库中实现。

资料储存格式


反映某些实体的数据通常是一组属性,其组成反映了该实体的必要特征。 为了简单起见,我们假设我们正在谈论的是由元组组成的关系模型。

因此,数据以某种类型的元组的形式存储,随着时间的流逝,它们可能会更改并失去相关性。

我们还意味着,现代大数据存储区通常具有键值结构,其中键的主索引和其他属性的可选索引。

考虑到这些考虑,提出了以下数据存储格式。

我想立即指出,这种格式不是唯一的,而是受称为“寄存器”的1C对象中数据存储结构的启发。 但是在此开发中,建议使该格式通用并在其中存储所有数据。

因此,我们基于以下定义的工作流概念,提出了一种用于记录有关实体及其属性的数据的格式:

  • 操作是一个数据实体中的原子更改。
  • 实体由属性组成。
  • 实体具有确定其属性组成的类型。
  • 相同类型的实体存储在单个线程中。
  • 工作流-类型表的存储对象,与相同类型的实体相关的操作和更改其状态的位置位于其中。

因此,每个操作都由一个操作标头和一组取决于实体类型的属性组成:

  1. OpID-操作的唯一标识符
  2. OpTS-操作时间戳
  3. OpType-操作类型
  4. OpClass-流名称
  5. OpUser-发出命令的系统用户
  6. OpDoc-操作文档,即创建该文档的文档可能未安装
  7. OpComment-操作注释
  8. ID-与操作相关的实体的标识符
  9. 参数-流量相关的操作属性

OpID和ID可以是任何值,但就目前而言,使用UID可能有意义。
如果多个操作落在同一时间段内以确保唯一的操作顺序,则OpTS最有可能应为时间戳类型,但应由序号索引进行补充。

OpType可以是任何类型,例如,一个/几个字符或一个数字。
OpClass,OpUser和OpComment可以是字符串,也可以是对目录的某种引用。
OpDoc提供了指向文档的链接,但可能不存在。 这是与上层的连接。

操作分为基本和服务。

基本操作


基本操作3-添加,更新,删除:

  1. 操作“ A”添加-说明特定类型的新实体的实例化并设置一组属性。
  2. 操作“ U”更新-检测某种类型的实体中的更改,并为一组特定的属性设置新值。
  3. 删除操作“ D”-表示某种类型的实体的现实的终结。

操作A和U不能设置所有属性,而只能设置一些属性。 那些未被此操作设置的属性可能具有NULL类型的值,或某些其他特殊值,目前尚不可用,但是创建它会很好。

结果,实体的属性在特定时间点的实际值需要通过选择所有与特殊(未设置)值不同的属性进行搜索来进行计算。

发出操作U时,系统应检查该实体是否存在操作A,如果不存在,则将操作类型更改为A。

操作D关闭了某个实体的存在,并且在此操作之后请求具有相关点的该实体的属性值时,应为该实体的所有属性返回值“未设置”。 发出操作D时,系统应检查该实体是否存在操作A,如果不存在,则拒绝保存命令D。

作为一项附加功能,这种操作结构允许您在不同的时间点组织具有相同ID,具有不同属性的实体的存储,不仅基于属性,而且还基于整个实体。 也就是说,我们可以有多个AN * UD块,其中存在该实体,而在D和A之间不存在该实体。

服务运营


服务操作可以是很多的,并且可以补充其组成。 例如,可以考虑以下几点:

  1. 操作“ N”是无效操作-系统必须忽略此操作。 您可以将其他类型的操作更改为N,以将其从工作中排除。
  2. 操作“ C”高速缓存-可以以一定的频率创建此操作,并在特定的时间点存储属性值,以减少深度搜索属性值的成本。 操作参数的详细信息可以存储在例如注释中或操作代码本身中。 当然,在应用基本操作时,应重新计算C类型的操作或将其替换为N。
  3. 操作“ S”的组操作-可以按一定的频率创建此操作,并在一定时期内存储数字类型属性的组值(例如,总和,平均值等)。 操作参数的详细信息可以存储在例如注释中或操作代码本身中。 当然,在应用基本操作时,应重新计算S类型的操作或将其替换为N。
  4. “ G”操作分组属性-此操作可能类似于U,但同时,某些系统命令将不发出一个属性值,而是发出多个属性值。 每个操作A / U一个属性值,其余值-操作G,位于相邻的A / U之间。

服务操作是可选的,但是它们可以为存储系统提供附加服务并提高其性能。 对于不同的系统,它们的组成可能有所不同。

Source: https://habr.com/ru/post/zh-CN423147/


All Articles