本文主要探讨了如何利用现有的开源组件实现分析型数据仓库中的读写分离。分析型数据仓库一般需要进行读写分离,因为列存储格式的数据一旦生成,就很难进行修改和插入新数据,只能增加新的数据文件。要实现一个可以秒级导入、秒级查询的分析型数据库,需要同时存在面向写进行优化的存储格式(Write-Optimized Store,WOS)和面向读进行优化的存储格式(Read-Optimized Store,ROS)。ROS的选择比较简单,可以使用Parquet+Impala的查询方案,同时结合业务特点进行代码级别的优化。WOS的选择可能会比较多,可以使用HDFS行存储文件格式,例如TextFile、SequenceFile、Avro等。最终,神策数据选择了Kudu作为WOS,架构实现示意图如下。