MySQL在收购前一直使用GPL许可分发,而GPL许可是不可撤销的,这意味着至少被收购之前的最后一个Release可以无限制地免费使用(包括源代码),而且源代码可以被社区二次开发。
一、为什么Oracle收购MySQL后仍保证其开源免费
MySQL在收购前一直使用GPL许可分发,而GPL许可是不可撤销的,这意味着至少被收购之前的最后一个Release可以无限制地免费使用(包括源代码),而且源代码可以被社区二次开发。由于MySQL使用双重license分发(即所有者——现在是Oracle——可以选择使用GPL授权,或者使用非GPL的商业license授权),在以后的版本取消GPL许可是可行的,但是分裂现有的用户和社区是不明智的事情,而且一个成熟的社区也可以为维护MySQL做出贡献。
即便是这样,开源世界也并没有完全信任SUN/Oracle,它们实际上真的fork了一个MariaDB出来以防万一。由于MySQL的开发现在实际上是被Oracle完全掌控的,如果在后续版本中Oracle将至关重要的功能加入付费版,而不加入社区版,那么社区可以自行开发相兼容的功能以保证开源版本能继续被人使用。这类似于OpenJDK。
延伸阅读:
二、主要的单机存储引擎
1、哈希存储:hash的CRUD是非常快的。但缺点是不支持顺序扫描。bitcask是一个基于hash表结构的存储系统。他将写操作(包括删除标识)追加到文件尾。并定期合并新老文件&记录。
2、B树:既支持随机读取又支持范围查找的系统。查找时间复杂度为logd(n)(d为每个节点的出度)。Mysql的InnoDB的引擎和OS的文件系统使用的就是B+树。(为什么选择使用B树的变种B+树,读者有兴趣可以去探究下。提示:磁盘读取)
3、LSM树(Log Structured Merge Tree):由B+数改进而来。其思想为:将增量写操作保存在内存中,超过阈值时刷入磁盘,从而减少随机写磁盘操作。读操作则需要合并磁盘数据和内存中的写操作。通过Memtable/SSTable实现,实现细节在此不做深入探究。比较适合写操作较多的业务场景。BigTable/HBase/Cassandra中的列簇的数据存储方式采用的即是LSM树。