MongoDB拥有灵活的文档型数据结构和方便的操作语法,在新兴的互联网应用中得到了广泛的部署,但对于其底层的存储引擎,我一直有一些保留意 见。据我了解,其采用了MMAP的方式来操作数据文件,这就导致我们无法限制MongoDB进程所使用的内存容量,目前最好的部署办法就只能是将其单独部 署在一台服务器上。另外,MongoDB也不能严格的支持事务,对于并发写入的锁的粒度也非常粗。
TokuMX的出现解决了这一切,它为MongoDB替换了一颗真正的数据库存储引擎,我们现在可以像使用MySQL数据库一样精确的指定TokuMX最大可用内存,它也完整支持的事务处理。当然了,TokuTek引以为傲的数据压缩能力也是一点也没落下。
TokuMX经过多次发布,现在是1.3.2版本,是免费开源软件,官方网站可以下载:
TokuMX 实现了绝大部分MongoDB 2.4的功能,应用程序无需做任何修改。但需要注意的是,TokuMX的数据存储格式与MongoDB完全不一样,需要使用mongodump导出数据,然后用mongorestore导入才可以使用。
TokuMX对数据的压缩能力。
因为对写做了优化和压缩,在不影响性能的前提下 TokuMX 比原生的 MongoDB 节约了90%的存储空间。
一些特性:
* Oplog支持按天分区,可以根据expireOplogDays设置过期时间,删除过期的Oplog,缓解磁盘压力
* 优化分片中块迁移,去除了许多全局锁及库级锁,简化及优化了不同片之间的数据转移
* Document级别锁,非Db级、非Collection级锁!
* 支持ACID和事物MVCC特性
* 不用担心磁盘数据碎片的问题!
* 自己控制内存而非交给系统控制