聊大数据技术是什么这个问题,那么我们先得弄明白另一个问题,不是大数据的数据技术又是什么呢?
从传统数据库的诞生开始,这个世界基本上都是围绕着关系型数据模型进行业务系统的开发,例如MySQL,Oracle,SqlServer等等,这种数据存储的技术特点其实就是对业务数据结构化为关系模型。
什么是关系模型?
经典数据模型定义的三个要素:结构、完整性、操作
关系型模型之父Edgar F. Codd,在1970年Communications of ACM 上发表了《大型共享数据库数据的关系模型》这就是永恒的经典,关系模型的语义设计达到了40年来普世的易于理解,语法的嵌套,闭环,完整。
结构:就是我们经常要先对数据库预先定义的表名和字段(名称、类型)
完整性:就是表的主键不能为空,表与表之间的主外键关联必须保证是完整的,外键一定是能找到主键的。
操作:那就是SQL表达式啦,SQL的子查询就是典型的闭包(Closure),可以形成嵌套表达式。
摘自:HDFS/HBase技术报告·分布式数据库设计架构的全面解析
具体点就是:表和列字段形成了嵌套语义SQL,实现对数据的读写操作。这种关系模型非常生动地描述了大多数人工活动过程中产生的行为数据,例如:一个填报表单,一组数据列表,一张张互相连接紧密的关联表,这种模型非常适应人类复杂的生活与生产活动。例如:你去医院挂号看病,系统一定会在数据库中的电子病历表找到你曾经的就诊记录和唯一识别号,并且在科室表关联的医生表中寻找你想要就诊的医师,为你生成新的挂号记录和预约排队记录,在实际情况,会对你的就诊流程不断在活动中和更多数据表关联,生成新的数据记录。
上述就是程序员很多年一直不断开发,生产的传统数据架构,这个过程有一个非常关键的特征,就是很难在短期内产生海量数据,为什么呢?上面其实也说得很清楚了,密切的人工协作活动产生的数据记录,这种记录往往表现出来的特征就是复杂,那么这就很难快起来了,比如,你等待一个事情的审批人的审核才能走到下一步,有时候这会很慢很慢。
大数据技术不一样的地方
到了Google的大数据时代,就不同了。数据不再静静躺在数据库里面成为数据坟墓。新的数据不断涌入,所有数据有了生命周期,数据变得流动起来了。我们需要存储的不再是经过前期固定设计后有损的数据,而是直接将无损的原始数据实现保存,因为更强悍的分布式并行数据处理技术可以更高效的吃掉这些数据,完成所需的数据结果,数据在一定阶段内长期保存,但是在生命周期的设定下,可以接收销毁,实现存储的成本最优化。
这与传统的应用场景彻底反过来了:第一时间产生数据的效率很高,为什么互联网平台特别容易产生大数据?例如淘宝,京东,美团,因为无论是你点餐,还是你买衣服,都是非常短促的单点行为,很少发生多人协作的事情,除非是早期的退货过程,也就是说你查的多,但动手下单支付也就是那一小会儿时间,而且,这个时刻,会有大量的顾客在重复做着和你同样的事情,这就是互联网平台在第一时间产生数据的效率很高,并且基本没有多人协作的过程。同理:12306买票也是这样,税务开发票也是这样,交警平台交罚单也是这样,电信交话费也是这样,这些都是大数据的产生过程。
当今时代,随着技术的发展,物联网也逐渐在发展,工业设备第一时间产生数据的效率那可是要比人高得多,因此我们说大数据时代真正的到来,实际上是智能工业互联网的兴起。
那么铺垫到这里,我们就开始正式说说大数据技术了!
大数据技术首先面临第一时间大量甚至是海量的数据产生,必然就会形成多种解决方案,但有些基础技术几乎是标准必备的,例如:
分布式技术,这就包括了数据分布存储技术,集群协调技术和集群状态一致性技术。
结构化技术,原生数据进行列式结构转换,文档结构转换,或者是简单键值转换。
压缩技术,压缩数据可以极大提升数据的传输率和磁盘存储量,压缩的各类技术一般就是在CPU消耗效率和文件压缩比之间寻找适合的方案。
数据容错技术,最常见的方法就是副本,给多个集群节点多复制几分,还有类似raid的冗余校验技术,用CPU换空间。
各种算法和数据结构,例如布隆过滤解决数据有没有的问题,内存跳表实现高性能扫描,一致性哈希解决分布问题,lsm-tree 大多数nosql标配的索引数据结构等等。
大数据技术上层还包括了分布式数据存储,流计算,大规模批处理,大吞吐消息系统等等。
那么大数据技术搞得这么庞大而又复杂,到底是为了什么呢?其一大数据技术不是为了在线事务处理而生,其二大数据技术也不是数据分析技术,或者是数据挖掘、机器学习、神经网络这些AI技术。大数据技术的目的就是为了应对前面所说的业务环境(生活或生产)中第一时间产生的大量或海量数据,可能是一天几个亿甚至几十亿的数据,要对这些数据进行结构化处理,既能大吞吐量的写入存储,还能快速的查询到存储的结构,既要均衡的分布这些数据,还能对出现问故障的节点,快速进行恢复,既能保证系统在分布式环境下具有良好的可用性,在某些情况下还要保证数据的一致性(接近),既要能快速的调用业务规则,实现数据驱动下的实时处理,还能对成百上千台存储了N多个PT数据集的并行分析,提供算力最大化的数据处理架构。
这就是大数据技术。