最近看到了一个很有趣的数据库 Procella ,它的架构图就和当初亚马逊公司发布的数据库论文 Aurora 里面的一样,一眼就吸引住我了。
Procella 最有趣的一点就是把大数据平台常用的 lambda 架构引入到了数据库内部中去。
Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架。Lambda架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop,Kafka,Storm,Spark,Hbase等各类大数据组件。
这个架构和 Aurora 使用 log(日志)把数据库里的存储和计算分离的架构都有着非常强的原创性。因为使用 LSM 树等传统的关系型数据库的架构去存储数据,在大数据量导入时,由于写放大的固有问题性能不会很好,而传统的列存储 Parquet 等又不适合小数据量的导入,因此 Procella 使用 Lambda 架构很好的解决了大数据量下的数据存储问题,并且保证了数据分析的优秀性能。
不过缺点也很明显:由于不支持数据库里面的隔离级别,所以很有可能会导致脏读现象。
除此以外,Procella 也解释了为什么谷歌很多数据库是天然的存储和计算分离,因为
在 Google 公司内部没有本地磁盘。只有远程过程调用(RPC),而不是读取或写入磁盘,每一次的读取或写入都是 RPC 过程。
参考链接