分类 读书笔记 中的文章

Advanced Database Systems: History of Databases

数据库的发展历史,从复杂模型:网络模型、层次模型,再到简单的关系模型最后胜出,关系模型不止是简单,而且提出了物理、逻辑解耦、高层级别API;所以从1970年代开始,数据库的基本模型,发展方向是定了;后面出现了各种对关系模型的补充,但是大多数只是重复发明,除了code in database,schema last是比较新颖的发明;在这几十年内,商业数据库一直是主导,IBM、Oracle、微软一直是领导者;直到2000年互联网的出现打破了这个局面,数据库面临大量的访问,需要购买大量商业数据库成本太贵,此时开源产品就是更好的选择;同时也出现了各种对关系模型,他们的扩展性、性能都非常好,但他们不支持SQL、不支持事务,十年之后再看这些数据库多多少少都有一些局限性,于是分布式的NewSQL出现,加上云厂商的对象存储,云上数据库也成为主流;现在数据库有很多细分市场,每个主题内都有好几个玩家,这些数据库在巩固自己领地的同时,又在不断扩展自己的能力;他们开始支持SQL,增加事务,从历史角度看,声明式语言、解耦、简单模型一直是有生命力的

阅读全文

Advanced Database Systems: Query Execution & Processing

这一部分是属于 执行引擎组件,由于现代系统从I/O变为CPU瓶颈,CPU的指令依赖、分支预测就阻塞了并行优化;MonetDB/X100就指出了火山模型、物化模型的问题,后使用了向量化/批模型来优化,为后续系统提供了方向。查询处理又包括:自顶向下vs字底向上;并行化包括:水平(exchange算子)、垂直、以及混合;worker的分配还包括单核单线程、单核pool;列存重建使用早期物化+SIP达到了早期物化的简单,同时兼具性能;主内存系统中二级索引和scan都有用,但需要综合考虑:选择性;硬件参数、数据布局、并发,优化器也需要配合重构整合;Oracle首创的混合行+列存储,又进一步提供了表达式替换(本质上是语法树子节点替换)

阅读全文