1、简要说明大数据下的5个V
Volumn-大量:形容数据的量
Velocity-高速:形容数据增长速度
Variety-多样:形容数据类型是多样的
Value-价值密度:形容数据有价值的部分是很小的
Veracity-真实:形容数据都是真实发生的
2、大数据的特点
TB、PB级别的数据
持续的高速增长
半结构化、非结构化的数据
3、列存储比行存储的优势
海量数据查询时,不存在冗余列;
在存储数据时,类型统一(一列的数据类型只有一种),避免了转换类型的操作;
对于类似于性别的列,可以采用压缩成二进制的形式,例如男 男 女 -> 110
4、在分布式环境下数据存储的可靠性保证
引入副本冗余机制策略:例如Hadoop的HDFS,就是默认三个副本。当某个副本丢失时,可以利用其它副本进行恢复
利用纠删码技术,相比于副本策略,纠删码技术可以节省更多磁盘的空间,即有更高的磁盘利用率
简单介绍纠删码技术:一种数据恢复技术,编码容错技术。实现是通过在原始数据中加入新的校验数据,使得原始数据与校验数据之间产生关联。在一定程度上,可以实现数据的恢复
两者比较:
副本冗余机制:没有计算开销、恢复效率较高、带宽占用较少
纠删码:很大的计算开销、恢复效率较低、带宽占用大、比较适用于冷数据
Hadoop3.0引入纠删码技术
5、分布式环境中如何保障数据的一致性?
在分布式中,可能存在数据不唯一的问题,例如在一个节点上修改了部分数据,但未及时同步的其它节点,此时在其它节点上读取数据会读到旧数据,导致数据读取的不一致,这也是脏数据。为此,出现了2PC、3PC、Paxos等。
简要说明
2PC(二阶段提交协议,Two-Phase Commit):简单的讲,二阶段提交将一个事务的处理过程分为了投票和执行两个阶段,其核心是对每个事务都采用先尝试后提交的处理方式。
3PC:2PC的改进,分成了三个阶段:决定阶段、准备提交阶段、执行阶段。
Paxos:类2PC算法,引入了“过半性”的投票理念,就是少数服从多数。支持分布式节点角色之间的轮换,即当协调者出现问题后,参与者可以变成协调者工作(选举机制),这样避免了单点问题(只有一个Leader时,Leader宕机)。
例如ZooKeeper中使用的ZAB(ZooKeeper Atomic Broadcast)协议就是一种改进,两种模式:消息原子广播(保证数据一致性)和崩溃恢复(避免单点问题)
6、数据库与数据仓库的比较
数据库目的是为线上系统提供实时数据,具有完整增删改查的能力,同时具有完整的事务能力。在处理时,尽量的避免冗余,提高存储和处理的效率;
数据仓库主要存储历史数据,做离线分析,存储的数据是多样化的,只支持一次写入多次查询,不强调事务的特性。在处理时,人为的制造冗余,用以提高查询的效率
7、传统关系型数据库的缺陷
1)高并发读写的瓶颈:数据操作只能达到万级别;
2)可扩展性的限制:在后期数据库进行扩展时,需要停机维护和数据迁移;
3)事务一致性的负面影响:数据库的一致性特性导致的性能的下降,在一些追求性能而不需要一致性时,一致性就带来了负面影响;
8、NoSQL数据库的优势
1)扩展性强:存储数据结构是Key-value形式,例如HBase的水平扩展性强;
2)并发性能好:具有良好的读写性能;
3)数据模型灵活:字段类型允许任意格式。
9、常见的存储结构
1)hash存储:以key-value实现的存储方式,支持增、删、改以及随机读取,但不支持顺序读取,因为存储进去的key-value是通过一定的计算存储的。例如HashMap;
2)B-Tree存储:支持对单条记录的增、删、盖、查操作,支持顺序查询。例如MySQL中实现的存储;
3)LSM(Log-Structured Merge Tree):支持对单条记录的增、删、盖、查操作,支持顺序查询;通过批量存储技术规避磁盘随机写入问题。例如HBase。
LSM设计思想:将对数据的操作保持在内存中,当数据量在内存中到达指定的容量后,批量执行操作写入磁盘,这样明显提高了写操作速度。但是在读取数据时,为了数据的正确性,需要将内存中的操作与磁盘中的数据进行合并,才能保证正确的读取。