ChinaUnix:各位网友大家好,今天有幸请到王涛先生到CU做客,与大家交流一些工作经验。首先请王涛先介绍一下自己。
王涛:大家好,我是王涛。过去八年里我一直在IBM多伦多实验室从事DB2引擎研发的工作。这两年我转向NoSQL方面的研究,作为创始人之一现在是巨杉软件的CTO,主要负责SequoiaDB非关系型数据库的研发。

ChinaUnix:您开始是从事DB2的,现在从事大数据和非结构化数据相关的NoSQL技术,能和我们说说是什么促使您做出上述改变的?
王涛:这个问题很有意思,可能在很多传统程序员和
DBA的眼里,Oracle,DB2,MySQL才是王道,NoSQL只是市场上的搅局者。实际上根据我在IBM和全球很多财富500强的DB2用户交流
的经验来看,传统的数据库确实有很多不适合的场景和技术局限性,其中主要的局限性包括数据模型僵硬,可扩展性差,处理海量数据时的性能瓶颈,缺乏处理半结
构和非结构化数据的能力。关系型数据库一统市场的时代已经过去了,这也是我为什么离开IBM创业的重要原因之一。
最简单的例子,有一次美国某著名零售企业巨头要增加64个数据库节点,IBM调动了十来个人,配合他们的DBA 团队,24小时轮岗,在那边驻扎了超过一个月才扩容成功。而在如今企业中数据量越来越大的背景下,这种扩容速度在广大企业中是完全不可接受。
另外一个典型的例子是欧美很多大型金融企业都是经过了许多的兼并重组发展起来的,由于传统关系型数据库死板的数据模型,不同实体之间的系统整合(特别是客
户和CRM系统)通常费时及其成本高昂,甚至有时不可能完全整合,这大大影响了兼并重组后的规模效益,现在NoSQL灵活的数据模型已经完全解决了这个痛
点,NoSQL成为了这一场景的典型解决方案。
一说起NoSQL,人们通常认为这只是互联网才需要,但大家可能注意到我上面举的两个例子都来自传统行业,业界预测NoSQL特别是文档型NoSQL在未来2-5年内将会规模进入传统企业。这是我离开IBM创业的另一个原因,因为传统行业需要企业级NoSQL!

ChinaUnix:既然已经有了不少开源NoSQL项目,你们为什么还要做SequoiaDB?
王涛:如前所述,业界预测NoSQL特别是文档型NoSQL在未来2-5年内将会规模进入传统企业,传统行业有许多企业级需求并没有在已有的文档型NoSQL产品中得到很好的满足,例如事物,SQL支持,和Hadoop系统的整合等等。
以上这些功能需求都是由我们的传统行业客户在实际项目中提出的,在SequoiaDB v1.0
中已包含了这些功能,在我们的下一个版本(v1.2预计在9月底发布)我们将会增加数据压缩功能,同时索引和数据可以在文件系统分离以提高读写性能,并且
可以运行在IBM power
机器上,这都是我们的竞争对手所没有的。另外,我国人口众多,很多应用产生的海量数据是欧美其他国家所无法比拟的,这对于处理海量数据的NoSQL数据库
会产生不少定制化的需求,对于大多基于北美的NoSQL产品这是无法兼顾的,开源数据库引擎的定制化改动不仅仅需要较强的研发实力,同时也只有原来引擎的
研发团队才能完全驾驭。这是为什么SequoiaDB未使用任何开源数据库引擎和代码的原因之一。最后,并不是传统企业才需要企业级NoSQL,其实除了
拥有强大研发实力和无限资源的大型互联网企业之外,我认为广大中小互联网企业也需要企业级NoSQL。相关论述可以见这篇文章《企业级NoSQL与开源NoSQL的区别》,我在这就不重复了。

ChinaUnix:有人说NoSQL是未来数据库王道,您怎么看的?您认为NoSQL与关系型数据库相比,各有什么优缺点及适用场景?
王涛:我个人认为,关系型数据库和NoSQL将会长期并存,NoSQL现已是互联网公司的标配之一,业界预测NoSQL特别是文档型NoSQL在未来2-5年内将会规模进入传统企业。
下面谈谈NoSQL与关系型数据库的对比,关系模型把过去混乱的数据存储关系用一种严格的数学模型描述出来,而其查询语言SQL则可以用简单直观的语法,
把各个实体之间的关系明确地表达出来。而NoSQL与传统数据库的发展历史相比还非常年轻,因此NoSQL现在主要是作为一种对关系型数据库的补充,在关
系型数据库不适用的领域填补进去。那么这个“关系型数据库不适用的领域”,这个范围到底有多大呢?这个就要看所谓的大数据到底能走多远。
大数据领域强调的是分布式计算,而关系型数据库为了维持强一致性需要在实体间进行非常多的数据交互。因此分布式计算就是关系模型的一个不大适用的领域。所
以我认为可以这样总结,当需要强一致性的场景,最好使用关系型数据库。在分布式计算和高性能存储的场景,考虑使用NoSQL。其余场景现在看起来大多数人
依然会选择关系型数据库,但有超过70%的现有关系型数据库场景其实是可以使用NoSQL的,随着NoSQL的发展,从成本和易用性角度出发,我相信越来
越多的用户会开始考虑NoSQL的。

ChinaUnix:NoSQL技术纷繁复杂,各家大公司纷纷推出他们的大数据解决方案,开源的MongoDB、Redis、Memcached也纷纷登场,能给我们说说这些NoSQL技术的核心是什么?他们主要的差别在哪?
王涛:实际上NoSQL里面也有很多不同的类型。
一般来说我们把它分为四类,包括key/value,文档型,宽表,与graph。SequoiaDB的核心NoSQL引擎是文档型。graph的应用范
围相对比较窄,用于描述实体之间的关系,我们在这里不多说。key/value,文档型和宽表,各有各的特点,和传统关系型数据库比起来也拥有各自的典型
应用场景。
key/value,redis就是一个非常典型的keyvalue内存式数据库,它的用途主要就是在高性能访问的时候。但是一般来说key/value
数据库因为数据模型简单,所以更多时候被看做是一个键值存储引擎,而不是拥有强大计算能力的数据库引擎。因此key/value数据库在简单的高性能数据
模型的场景下很实用,但是当业务逻辑越来越复杂的时候就会凸显其劣势了。
宽表是google bigtable引领的潮流,本质就是把数据切成多个块(也叫做column
family),存放在不同的地方。应用程序的典型用法,是根据某种条件找到记录后,只在里面搜索有限数量个字段,这样的话宽表能够有效地利用切分的数据
块,尽可能减少I/O。宽表一般被用于拥有大量字段的场景,比如每条记录拥有成千上万的字段,用这种方式能够有效地减少I/O。不过大部分的应用可能都到
不了这种规模。
最后,文档型数据库一般来说被认为是最接近传统关系型数据库的NoSQL。这也要归功于MongoDB所引领的潮流。文档型数据库的核心是数据嵌套,将原
本一些星形模式(Star
Schema)的数据嵌套在同一条记录中以减少表之间关联的需求。这种设计可以从某种程度上大大简化传统数据库复杂的关联问题,同时由于摆脱了关系模型里
面的强一致性限制,文档型数据库还可以做到水平扩张与高可用。
所以我个人认为,相比其他几种NoSQL,文档型数据库的应用范围要广泛许多。

ChinaUnix:我们在工作中有时候也许会面临着技术的转变,能不能和我们分享一下您是如何摆脱现有数据库的思想来设计新的NoSQL数据库?您能不能谈谈在不同类型数据库设计中,您的思路是如何转变的?
王涛:NoSQL与传统数据库的核心,从数据库的
角度看起来没有太大差别,都是把数据通过某种方式存放在磁盘上以便以后访问。可以说,从最早期的网状数据库,到关系型数据库,到现在的NoSQL,其核心
理念没有任何变化。都是要用最有效的方式减少I/O,将用户需要的数据,通过某种算法和数据结构有效地存储与访问。但是在上层来看,实现这种目标的方式则
有了翻天覆地的变化。
关系型数据库的核心是强一致性的关系模型,当初的设计理念将ACID放在首位,其次考虑性能与可扩展性。而当人们发现并不是所有的数据都要求那么强的一致
性,同时对于性能和数据量的需求越来越高时,NoSQL就开始登场了。NoSQL主要将可扩展性放在首位(也就是P基本是所有NoSQL的必备条件),而
高可用或一致性则放到了第二档(A或者C)。这种设计自然和原本的关系模型产生了极大的差异,这也就是为什么说NoSQL叫做Not Only
SQL。因为既然已经不是关系模型了,有些场景下使用关系查询语言SQL,可能并不能够最有效地发挥出NoSQL的优势。
所以,在NoSQL蓬勃发展的今天,所有的NoSQL厂商也都在探索一种最适合自己的存储与访问方式。

ChinaUnix:您现在一直专注NoSQL数据库的研发,如果作为使用者,NoSQL数据库性能优化方面与关系型数据库有什么区别?
王涛:不管是传统关系型数据库,还是NoSQL,性能优化从两个方面入手。
第一,就是增加CPU的执行效率:这在关系型数据库里面最常见,比如说一个表扫描和一个索引扫描,为什么索引扫描块?大家可能说索引扫描只要扫描几个数据
页就行了,表扫描要搜索全部数据啊。没错,不过这个是表象,真正的核心思想是,用最少的CPU找到你需要的数据。索引扫描可以在有限的CPU
cycle里面就找到我们需要的数据,而表扫描需要扫描无数不需要的数据,最后才定位到若干条有效数据,从CPU的有效性来看差别显而易见。
第二,就是减少IO开销:为什么数据库需要缓存?为什么需要预取?为什么需要异步写?这些无数调优理念的背后只有一个答案,就是减少IO开销。缓存的使用
把热数据放入内存,就不需要在访问数据时进行I/O读取了。预取可以把数据在访问前读入内存,也是减少IO的例子。异步写入可以在后台把脏数据刷入磁盘,
腾出来的空间可以预读或者缓存更有效的数据。
所以,从性能优化的角度看起来,NoSQL与关系型数据库的理念基本没有区别。

ChinaUnix:现在是一个大数据和云计算的时代,能简单说说NoSQL在云计算时代有哪些改变么?
王涛:可能很多人把云计算和大数据放到一起说。实际上两者还是各有其针对性的。
云计算更侧重随需分配资源。比如给你一大堆硬件,你在上面搭建虚拟化openstack之类的东西,然后有用户需要用计算存储资源了,你给他分配几个机器
或者多少CPU,然后按需收费。大数据则是一个比较虚的概念。比如说我有100T的数据,这个是不是大数据?本身大数据没有一个标准。按照我自己的定义,
凡是用户使用现有软硬件很难处理的数据量就可以称为大数据。同时大数据还有数据多样性的概念。原先数据都存在关系型数据库里面,现在可能很多数据直接放在
裸文件或者共享文件系统里面。这些东西和底层到底用云平台还是物理平台无关。
所以说大数据不像云计算,核心只有一个按需分配资源的理念。大数据是一个更加抽象的概念,包含的东西更多更广更杂。而两者的结合是一个非常有意思的话题。
在按需分配的云计算平台里面构建一个大数据分析平台,按照用户分析的需求来分配硬件资源,这是一个非常符合逻辑的需求。国外的一些银行已经尝试在私有云平
台上部署大数据分析项目,我相信在一两年内我们会发现越来越多的企业开始在私有或公有云上部署自己的大数据平台。

ChinaUnix:对于开发人员和数据库运维管理人员来说,如果他们从关系型数据库的工作中转变到NoSQL相关的技术领域,他们需要做哪些准备?
王涛:这个话题就比较见仁见智了。因为NoSQL
领域非常广,数据库的类型也各不相同,比如一个擅长Redis的让他去做HBase可能就会非常不适应。所以想要进入NoSQL领域,最好是在工作中有相
关的需要,然后从关系型数据库的架构出发去慢慢了解某一款NoSQL的特性和适用场景。
还是那句话,不管关系型数据库还是NoSQL,虽然架构不同,但其核心理念是完全相同的;虽然手段和命令不同,但其调优理念也是一模一样的。当我们去了解
一个新事物的时候,可以从架构入手,首先对比和Oracle与DB2的不同之处,然后思考这些不同能够带来什么优势和劣势。最后再把目光放在细节的命令和
功能上。

ChinaUnix:谢谢王涛老师的接受我们的专访,还有帮忙在CU上和大家一起交流数据库引擎开发的技术。
王涛:太客气,欢迎社区里的朋友和我交流NoSQL和大数据处理方面的技术和产品问题。

NoSQL专家王涛访谈:为什么我们还要做一个NoSQL?的更多相关文章

  1. 有了lisk,为什么我们还要做一个Asch?

    0 前言 首先要声明一点,我们和我们的一些朋友都是lisk的投资人和支持者,我们也相信lisk会成功. 事实上,lisk已经成功了一半,目前在区块链领域融资金额排行第二,仅次于以太坊. 那为什么我们还 ...

  2. 在今天,我们为什么还要做一个CMS

    我们今天看到,在这个移动大潮席卷来的这几年,互联网以惊人的速度改变着这个世界.包括我们这个在中国互联网史上有重大影响力的“站长”,也几乎全军覆没.当然随着站长们兴起的开源CMS,到今天也都穷途末路了. ...

  3. 用MVC5+EF6+WebApi 做一个考试功能(六) 仓储模式 打造EF通用仓储类

    前言 年底工作比较忙,年度总结还没写,项目要上线,回老家过年各种准备.尤其是给长辈给侄子侄女准备礼物头都大了. 原来想年前先出一版能用的,我看有点悬了,尽量先把大体功能弄出来,扔掉一些,保证能考试,然 ...

  4. 阿里云“网红"运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”:他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路:他爱好清奇,练就了能在 20 秒 ...

  5. 阿里云“网红"运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”:他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路:他爱好清奇,练就了能在 20 秒 ...

  6. 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...

  7. react实例之todo,做一个实时响应的列表操作

    react实例之todo, 做一个实时响应的列表操作 在所有的mvc框架中,最常见的例子不是hello world,而是todo,由于reactjs的简单性,在不引用flux和redux的情况下,我们 ...

  8. 一起用HTML5 canvas做一个简单又骚气的粒子引擎

    前言 好吧,说是"粒子引擎"还是大言不惭而标题党了,离真正的粒子引擎还有点远.废话少说,先看demo 本文将教会你做一个简单的canvas粒子制造器(下称引擎). 世界观 这个简单 ...

  9. 涨姿势:创业做一个App需要花多少钱(8个人,6个月,就要100万,附笔记心得)

    (原标题:涨姿势:创业做一个App要花多少钱?) 作为互联网从业者,被外行的朋友们问及最多的问题是,“做一个网站需要多少钱?”或者“做一个APP需要多少钱?”. 作为做过完整网站项目和APP的人,今天 ...

随机推荐

  1. MySQL:ONDUPLICATEKEYUPDATE用法

    如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE:如果不会导致唯一值 ...

  2. 架构师书单 2nd Edition--转载

    作者:江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/03/06/1522032.aspx,转载请保留. 为了2007年的目标,列了下面待 ...

  3. css笔记13:display用法

    1.代码演示: element.html如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  4. envi5.1下载地址

    ENVI 5.1 installer 32 bit :链接: http://pan.baidu.com/s/1c0EGZIw 密码: gcogENVI 5.1 Installer 64 bit :链接 ...

  5. SSIS 学习(1): 概要【转】

    俗话说:“十年磨一剑”,Microsoft 通过5年时间的精心打造,于2005年浓重推出Sql Server 2005,这是自SQL Server 2000 以 后的又一旷世之作.这套企业级的数据库解 ...

  6. I2C驱动程序

    i2c_add_driver i2c_register_driver driver->driver.bus = &i2c_bus_type; driver_register(&d ...

  7. WIN2003服务器IIS下如何开启GZIP压缩

    在上一篇文章黑客流谈到了关于网页打开速度对SEO的影响,其中提到了网页开启Gzip压缩的好处,接下来我来和大家分享一下WINDOWS系统IIS服务器下如何开启Gzip压缩. 首先我们来了解一下什么是G ...

  8. 自动化中的PageObject思想

    谈着这个话题很大,因为我自己在自动化分层的方面做的就不是很好,最近在做java+selenium中,如果不分层去管理,代码就显得很乱,如下: 下面代码主要是做了一个登录,登录后在修改自己的一些个人信息 ...

  9. 实用工具推荐(Live Writer)(2015年05月26日)

    1.写博客的实用工具 推荐软件:Live Writer 使用步骤: 1.安装 Live Essential 2011,下载地址:http://explore.live.com/windows-live ...

  10. asp.net中用回车代替按钮事件

    第一步,先编写简单的页面代码,这里我们只需要一个按钮就足够了.当然,还有按钮事件. <html> <head> <title>测试绑定enter</title ...