大数据本质 数据系统 = 数据 + 查询 批处理层:保证准确性,但高延迟的批数据处理 服务层:低延迟读 速度层:事实最新数据保证低延迟,低准确性的数据处理 最后的综合,保证相对低延迟和高准确性数据的三大关键属性
原始性,不变性,永久性
原始性
定义:比起广告商从电商网页的信息提取后总结获得信息,电商网页的信息更具有原始性。 存储原始数据有更好的价值,因为很少能提前想好所有问题的答案。 存储什么原始信息: 1 非结构化数据比规划化数据更原始更好 2 更多的数据不代表更原始更好
不变性
优势: 可容忍人为错误 (因为数据不可改动的海量存储,方便错误恢复) 简易性 (数据改动往往需要跟随索引,对于不可改数据,不需要索引,只需要根据时间戳等区分添加。具有简易性) 对于不可变数据,代价会占用更多存储空间。 对于可变数据,例如同一用户只保留一条记录。不同行为,会进行覆盖操作。 而对于不可变数据,同一用户会保留多条记录,比如完全相同key值,通过时间戳来区分他们不断追加而不是覆盖
永久性
数据永远真实推荐基于事实的数据模型
事实作为数据分解的基本单元 特点: 原子性,存储为原子事实 通过时间戳保证事实的不变性和永远正确性 可识别性,可区分的事实方便过滤重复的事实,对lambda架构实现更容易 优点: 任何时刻历史信息可查询 容忍人为错误 只需要处理部分信息:无需引入NULL 拥有规范和不规范形式的所有优点 规范化如关系型数据库,可以减少冗余,促进一致性。查询通过索引等在存储层执行 lambda 拆分了查询和存储层。批处理曾的主数据集是规范化的,服务层的高效实时查询是非规范化的数据
图模式
以节点,边,属性的图模式来构建事实
存储事实格式
如半结构化json,序列化模式等等事实格式-序列化框架
如Apache Thrift,Avro,Protocol Buffers等
Apache Thrift
序列化框架的局限性
因为不变和永久性,需要处理大量的,不断增长的数据集。存储就需要优化。 一次写入,多次批量读取
数据存储需求
HDFS
MR耳熟能详,略过很多书中MR的基本介绍



