下面介绍几个列式存储引擎(都有两个版本:社区版、商业版):
一:TokuDB
TokuDB 是一个高性能、支持事务处理的 MySQL 和 MariaDB 的存储引擎。TokuDB 的主要特点则是对高写压力的支持。
TokuDB v7 发布了。
从该版本开始 TokuDB 宣布开源,开源的社区版本提供全部功能和性能,无宕机的列添加、删除和重命名,以及索引创建,簇集的第二主键。同时也提高了企业版本,包含额外的支持包和高级备份和恢复工具。
tokudb使用索引加快查询速度,具有高扩展性,并支持hot scheme modification。
特点:
1.插入性能快20~80倍;
2.压缩数据减少存储空间;
3.数据量可以扩展到几个TB;
4.不会产生索引碎片;
5.支持hot column addition , hot indexing, mvcc;
如何考虑使用:
1.如果要存储blob,不要使用tokuDB,因为他的记录不能太大;
2.如果记录数过亿,使用tokuDB;
3.如果注重update的性能,不要使用tokuDB,他没有innodb快;
4.如果要存储旧的记录,使用tokuDB;
5.如果要缩小数据占用的存储空间,使用tokuDB;
二:Infobrigh (infobright 社区版只支持load data操作,没有在线热备工具,社区版不支持DML)
Infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类),
infobright 是基于mysql的,但不装mysql亦可,因为它本身就自带了一个。mysql可以粗分为逻辑层和物理存储引擎,infobright主要实现的就是一个存储引擎,但因为它自身存储逻辑跟关系型数据库根本不同,所以,它不能像InnoDB那样直接作为插件挂接到mysql,它的逻辑层是mysql的逻辑 层加上它自身的优化器。
1、高压缩比率,平均压缩比可达10:1,甚至可以达到40:1,我用infobright把3.1G的数据存成不足300M。
2、列存储,即使数据量十分巨大,查询速度也很快。用于数据仓库,处理海量数据没一套可不行。
3、不需要建索引,就避免了维护索引及索引随着数据膨胀的问题。把每列数据分块压缩存放,每块有知识网格节点记录块内的统计信息,代替索引,加速搜 索。
4、单一台服务器可以高效地读写30T数据。具有可扩展性,这里是指对于同样的查询,当数据量是10T时,它耗费的时间不应该比1T数据量时慢太 多,基本是一个数量级内。
社区版缺点、限制:
1.不支持DML 2.不支持多核 3.不支持分布式
三:InfiniDB
InfiniDB:InfiniDB Community Edition (社区版)提供一个可伸缩的分析型数据库引擎,主要为数据仓库、商业智能、以及对实时性要求不严格的应用而开发。基于 MySQL 搭建。包括对查询、事务处理以及大数据量加载的支持。目前使用者不是很多。
引擎选择建议:
1. 首选Innodb
2. 其次推荐研究 TokuDB 、InfiniDB
说明:自己总结与网络整理。