这几年来, NoSQL数据库凭借其易扩展、高性能、高可用、数据模型灵活等特色吸引到了大量新兴互联网公司的青睐,包括国内的淘宝、新浪、京东商城、360、搜狗等都已经在局部尝试NoSQL解决方案。 广州巨杉数据库是一家专注于新型NoSQL分布式数据库研发的创业公司,目前已经获得首轮天使投资,核心产品是SequoiaDB。巨杉数据库的创始团队成员多来自于IBM北美实验室,长期从事关系型数据库DB2的研发工作。SequoiaDB 1.3于2013年4月正式发布(最新版本为1.5),主要面向政府、电信、金融、电力和互联网等拥有海量业务数据的行业提供大数据解决方案,其客户中包括多家世界500强企业,如国内知名银行、电信及互联网企业等。
更专注于企业级市场
SequoiaDB与现在市面上主流的NoSQL数据库最大区别在于更专注于企业级市场,并为此开发出很多特性功能。巨杉数据库联合创始人/CTO王涛是前IBM DB2北美实验室资深研发成员,全球最高顾问小组成员之一(全球仅15人)。在他看来,目前市场上有很多优秀的NoSQL产品,例如Redis、MongoDB、 HBase等,每个产品都有其特性,但都有其明显的缺陷。例如,SequoiaDB是一款文档类数据库,从分类上来看和MongoDB属于同一个类型,但双方走的道路截然不同。MongoDB天生具有互联网基因,它的功能和需求是根据互联网模式打造出来的,因而在运用到企业级市场的时候,不可避免的会出现水土不服的场景。
记者在和民生银行科技部袁春光沟通中了解到,SequoiaDB巨杉数据库刚刚与民生银行签订了在大数据方面战略合作伙伴协议。作为国内银行业第一批涉足大数据技术的民生银行,在使用现有的NoSQL产品(如MongoDB)的过程中发现其缺乏很多企业级功能,例如缺乏事务和SQL支持、与Hadoop系统的整合不紧密等,尤其是MongoDB对重用现有投资并不友好,包括在开发人员技能的延续性、和现有的应用程序对接等方面。这些对于像民生银行这类传统企业来说,信息孤岛所带来的架构上的破坏是致命性的,其远远大于这个产品所带来的价值。
通过引入巨杉数据库的NoSQL产品SequoiaDB,其诸如事务、SQL支持、数据压缩、与Hadoop系统整合、可运行在IBM power机器上等特性更能满足企业级用户的需求,并使得现有技能与投资尽可能得到了重用。尤其是SequoiaDB提供的SQL接口,能与传统关系型数据库对接等功能都是MongoDB现阶段无法提供、甚至没有计划提供的。另一方面,MongoDB也在加速向行业用户渗透,尤其在北美市场,“即使要赶上SequoiaDB在企业级方面的核心技术优势,MongoDB也还有一到两年的路要走”,王涛表示。
此外,对于其他数据库,例如HBase,它也有很多特有功能,但仍无法满足企业用户的需求,例如在和Hadoop系统的整合上。举一个银行机构业务场景为例,银行在对交易流水归档后,需要根据多个不同字段的条件进行快速实时查询。SequoiaDB可以通过分区表、多索引等特性,在毫秒到秒级内就可以从几十个TB的数据中搜索到所需要的数据。而用HBase,由于仅支持主键索引,通过非主键字段查询的时候需要扫描全部数据,需要几十分钟才能出一个结果,完全不能满足需求。
未采用开源数据库引擎和代码
现在看来,传统数据库明显有很多不适合的场景和技术局限性,主要局限性表现在数据模型僵硬、可扩展性差、处理海量数据时的性能瓶颈、缺乏处理半结构和非结构化数据的能力上。在最近几年,随着大量非结构化化与半结构化数据进入企业,关系型数据库开始显现了越来越多的局限性和不足。王涛认为,“NoSQL数据库的出现可以用来弥补这些缺憾,但NoSQL数据库缺乏企业级基因和商业级技术服务支持,这也是我们做SequoiaDB的原因。”
此外,巨杉的核心产品SequoiaDB由前IBM DB2资深研发成员在北美完成原型设计和内核开发。开发过程中并未采用开源数据库引擎和代码,这是因为目前主流的NoSQL数据库方案基本都是基于GPL协议开源,这与巨杉做商业级数据库的策略不符合。但并不排除未来在合适时候将SequoiaDB开源出来的可能性。而在现阶段最让王涛头疼的是,国内很难找到对Hadoop分布式和NoSQL数据库技术在行的技术人才,或者已经被一些巨头们所挖走,即使通过例如做技术公开课等多种方式,能找到的合适人才依然有限。技术人才队伍的培养将是他们接下来重点要做的事。
在一年前的时候,还有大量的行业用户在观察NoSQL数据库的解决方案,但这一年来,越来越多的企业用户已经开始做POC(Proof of concept,概念验证),开始部署相应的解决方案了。虽然NoSQL不会很快的取代SQL,但是NoSQL提供的特性恰是新时代应用程序所需要的。王涛认为,关系型数据库和非关系型数据库不是取代的关系,而是两者将长期共存下去,有超过70%的现有关系型数据库场景其实可以用NoSQL所替代。