读时模式(schema on read)和写时模式(schema on write)

一、读时模式(schema on read)和写时模式(schema on write)

在传统的数据库里,表的模式是在数据加载时强制确定的。如果在加载时发现数据不符合模式,则拒绝加载数据。因为数据在写入数据库时对照模式进行检查,因此这一设计有时被称为“写时模式”。

而在Hive中,对数据的验证并不在加载数据的时候进行,而是在查询时进行,这被称为“读时模式”。

用户需要在这两种方法之间进行权衡。读时模式可以使数据加载非常迅速,这是因为它不需要读取数据,进行“解析”,再进行序列化以数据库内部格式存入磁盘。数据加载操作仅仅是问文件复制或移动。

写时模式有利于提升查询性能。因为数据库可以对列进行索引,并对数据进行压缩。但作为权衡,此时加载数据会花更多时间。此外,在很多加载时模式未知的情况下,因为查询尚未确定,因此不能决定使用何种索引。

读时模式(schema on read)和写时模式(schema on write)

获取更多Hadoop、HDFS、HBase、MapReduce、YARN、Hive等等技术内容,可访问Hadoop大数据技术专栏。


二、Hive是读时模式

Hive处理的数据是大数据,在保存表数据时不对数据进行校验,而是在读数据时校验,不符合格式的数据设置为NULL。读时模式的优点是,加载数据库快。

传统的数据库如MySQL、Oracle是写时模式,不符合格式的数据写不进去。

读时模式(schema on read)和写时模式(schema on write)

访问Kafka技术专栏,了解更多的技术细节和项目代码。


分享到:


相關文章: