2、NoSQL数据库CMEM同样是腾讯云数据库的重要产品。CMEM,即Cloud Memcache,是腾讯云平台提供的极高性能、内存级、持久化、分布式的Key-Value存储服务。CMEM适用NoSQL接口的键值型高速存储,以不同空间参数对用户提供服务,并将在2013年推出基于固态硬盘和多队列网卡的新变种。此种类型通过多层复合式系统完成冷热数据的自动分层,解决内存存储成本过高的问题,其售价为目前的60%左右。
▲CMEM wiki二维码
CMEM其主要解决的问题是海量存储的高速访问。其特点是与开源Memcached的协议接口兼容,用户开发习惯无需变化,空间容量自动伸缩,所有数据都是持久化存储,并且其存储核心对用户数据几乎没什么限制。性能方面,CMEM全部数据内存存储,非常适合高密度的访问。严格来说分布式系统的性能取决于分布式系统的规模,但内存介质的访问性能必然是所有介质中最快的。
CMEM的缺点是所使用的开源接口不够丰富,并且不得不忍受开源协议的一些缺陷。而对比新浪KVDB则需要用户使用其专门的API,用户接入成本较高,但其API所提供的接口却比较丰富,并且支持不同的数据类型。
二、腾讯云数据库特点
1、可用性
据钟超宇介绍,在数据可用性方面,腾讯CDB对于数据安全的保证级别和目前国内其他云数据库提供商差别不大,即主备+每日备份+交换机容灾。生产系统数据共计存储4份,备份系统N份,并实现交换机感知。主备这种架构可以提供单点容灾,但无法提供双机故障容灾。对于一般的云服务使用者来说,这样的级别完全够用了,如果做跨数据中心或跨城容灾,则运营成本将是很大的问题。
腾讯CMEM也是主备+每日备份+交换机容灾的模式,生产系统数据共计存储3份,备份系统N份。可容忍单机故障和交换机故障。并且CMEM的主备切换,故障修复,空间伸缩均由自动化控制中心完成,最大程度降低故障对业务的影响。
接入可用性方面,CDB,CMEM都可以使用虚拟IP提供服务,并自动在物理IP之间做故障切换。这样就保证了服务入口的可用性。
2、安全性
在数据安全方面,CDB,CMEM都提供按业务、按开发商的访问隔离功能,也就是说任何人不会知道别人的数据在哪里,并且即便知道在哪里也没有权限访问。
云数据库并不是铁板一块,本质上都是通过在线冗余来实现数据安全,云数据库集群内也不是没有故障,而是几乎每天都会发生故障,只是这些故障被很好的隔离和处理了,用户很少能够感知到。作为云数据库的使用者,也应该了解一些基本知识,以便更好的使用云数据库。
3、回档功能
无论CDB还是CMEM,腾讯云数据库最大的亮点之一是都可以对用户提供指定时间的回档功能,即通过定期镜像和实时流水重建,将表回档到指定时间,且可以保证所有数据的时间切片一致。这个功能对开发者还是很有价值的,如果你的数据被程序BUG破坏,或者被人为误操作,都可以使用rollback功能让时间倒流到任意一个时刻。
这个功能目前还是半自助化,审核后用户才能自行操作。相信在很快可以让用户全自助完成。而目前无论国内其他厂商还是国外的Amazon,都只提供回档到镜像时间点的功能,这个粒度还是比较粗的,不够灵活。
4、其他
对比阿里云数据库来看,CDB的特点是权限很高,用户申请之后可以自主创建新用户,创建database,修改各种参数,创建各种数据库引擎;而阿里RDS则限制较多,不能创建用户和database,不允许修改数据库参数,对于一个百库百表模型的业务来说会很不方便。但从官方公布的数据来看,阿里的RDS的性能则高出腾讯CDB很多。当然价格方面阿里也会贵一些。从生产系统物理存储份数上看,腾讯CDB存储4份,而阿里RDS使用固态硬盘,通过价格分析,只能存储2份。
再看资源配额方面,腾讯CDB对超额度使用的用户比较温和,通过协调改造的方式解决,尽量不影响业务的运营;而新浪RDC则较为强硬,超配额使用会造成服务被禁。阿里RDS根据其手册判断应该是使用了虚拟化技术来隔离资源。
但无论是腾讯CDB还是阿里RDS,或者SAE的RDC,都并不能完全运行于分布式系统上。也就是说如果一台物理设备跑单实例仍然不满足需求,则只能由用户做水平拆分。但据说阿里在2012年6月启动开发分布式RDS项目,通过条带化实现水平分布的数据库,至于它能否帮用户解决水平拆分的问题并建立良好口碑,目前我们不得而知。