T前线 | 揭秘国内首个进入Apache的高校顶级项目——Apache IoTDB

原创
开源 物联网
长期来看,社区优势是一个基础软件发展的长久动力。

近年来,随着人工智能、物联网的兴起,大数据成为重要的生产资料,而时序数据则是这个时代避无可避的热议话题。如何提升时序数据的利用率?如何为复杂场景提供一个可靠的数据库?这些都是业内必须解决的难题。Apache IoTDB作为由清华大学发起的、全球领先的国际顶级开源项目,是支持物联网时序数据收集、存储、查询与分析一体化的数据管理引擎。根据中国软件评测中心和中国人民大学的性能对标测试,IoTDB的各项性能指标均明显优于当今国际最优的时序数据库系统。IoTDB支持“端—边—云”一体化部署,适用于高端装备管理、工厂设备、高速网联设备等多种数据管理场景,目前已在能源电力、轨道交通、车联网等多家行业有广泛应用。业界要解决的难题,IoTDB都曾直接面对过。

51CTO有幸邀请到清华大学软件学院助理研究员、Apache IoTDB PMC 及累计贡献第一的“首席 Committer”,乔嘉林博士,他将为我们分享有关开源数据库项目成长、开源社区治理、加速赋能企业等方面的观点与见解。

国内首个进入Apache的高校顶级项目

Q:IoTDB是国内高校首个进入Apache基金会的项目,您能介绍一下,有哪些因素让IoTDB能达到这样的成就?

A:项目进入Apache会经历两个大的阶段。第一阶段是申请进入Apache孵化器。

这一阶段最需要关注的是项目的价值和意义,需要在项目申请提案中进行说明,Apache成员会根据提案来判断这个项目是否有价值。

判断一个项目是否有价值,主要的依据是项目要解决的问题是否是一个比较广泛的痛点,是否对社会有价值。除了判读项目的价值,成员会还要评估新项目是否和已有项目重合。Apache基金会通常在每个方向会选择一个项目去孵化,如果重合度较高,可能会被拒绝接收。

在这方面,IoTDB主要解决的是工业物联网项目管理中遇到的问题。我们实验室在2011年左右接触工业物联网项目,帮助工业企业管理工程机械产生的数据,这些数据中以时序数据的体量最大,当时选择了一些开源系统来进行项目实施,不过由于这些系统并不是针对物联网场景设计的,所以会有性能瓶颈,包括读写速度和压缩比。最终我们决定从头做起,来解决这些问题。因此,IoTDB 的发起背景比较实际,解决的问题也是真实问题,所以会容易被接收。

第二阶段是在孵化器中完成项目的规范化和社区的建设,毕业成为顶级项目。

所有在孵化器的项目名称都以incubator开头,项目的孵化和社区建设阶段需要关注的是项目合规性和社区建设情况。项目合规性包括代码中是否进行了Apache协议声明,依赖的开源组件是否与Apache协议兼容,是否按照Apache的规范进行版本发布等;社区建设情况包括社区活跃度,邮件列表的讨论数量,是否有外部committer和PMC等。

在这方面,IoTDB始终以建设开源社区为目标,我们没有社区建设的KPI,大家都是自发地希望社区发展壮大。社区很欢迎外部贡献者的加入,再加上IoTDB是在学校的实验室起步的,实验室每年都会有新生入学。我们开展过社区导师计划,让已经加入社区的贡献者和新人对接。此外,建设社区和开发的过程中,会写很多文档,这些文档也能帮助社区新人上手和入门。

Q:跟其他组织或个人发起开源项目相比,高校发展开源项目有哪些不同?高校的开源项目要想保持较高的活跃度和稳定的社区参与,应该注重哪些方面的问题?

A:高校发起的开源项目,通常没有专门的社区运营人员,主要是开发者或者学生直接管理社区,开发者直接对接用户,会更直接地感受到产品的好坏。高校也面临着人员更替频繁的问题,通常研究生参与两年多就毕业了,而且学生参与社区更多是非全时的,他们平时还有课程、大作业、考试、实习等需要占用精力。

不过,从某种程度上来讲,这更符合开源社区的工作方式,大家都是在空余时间参与社区,通过文档和邮件交流就显得更为重要。针对上面的这些特点,在高校发展开源项目要注意多与社区互动,将想法和设计思路与社区同步。同时也要重视社区项目宣传,学生比较喜欢埋头苦干,可能做出了很多不错的项目,但是由于宣传不够,导致了解的人不多。

成为顶级项目后关于项目运作的思考

Q:IoTDB成长为全球顶级开源项目前后,项目的贡献者、社区的用户等发生了哪些积极的变化?项目本身的运作模式有无产生一些变化?

A:开源社区的发展变化不是一瞬间的,而是在平时的每一天。项目运作模式的变化,主要是从进入到Apache基金会开始的。原来我们通常是几个同学讨论完,就开始做了。

进入Apache 后,每次讨论都会形成文档,发到社区中,大家觉得没有问题了,再开始改动。以前也不注意宣传,只有实验室的同学知道我们在做什么项目,进入Apache后,我们会举办一些见面会,并且开始运营项目的公众号,组建微信群、QQ群、Slack等。作为一个To B的项目,用户不会由于你是顶级项目,获得过什么奖来进行选择,而是会对软件进行实地测试,满足需求才会进行选择,这个过程会更加理性

贡献者也是如此,很多贡献者本身就是用户,Apache顶级项目可能是促使他们来尝试的原因,经过评估之后,很多用户和企业会投入研发力量全时参与到社区中。社区的工作模式也从一个组织主导,变成社区共建,社区就像一个大的组织。

实用即王道稳定性是第一位的

Q:对于数据库项目而言,您觉得数据库的性能、稳定性、可维护性,哪个更重要?时序数据库又有哪些特别值得注意的地方?

A:稳定性是第一位的,第二是可维护性,第三是性能

工业现场对于系统的稳定性要求很高,稳定意味着前期做完测试验证,上线后的表现能够和之前测试一致,这样大家就能够接受,也不会出现大的问题。

可维护性也是对稳定性的保障,我们在设计系统的过程中,增加了很多对运维友好的特性。

接下来是性能,你可以性能一般,大不了做规划的时候可以多配一些硬件,但是一定要可预测,可预测才能继续做。

时序数据库通常运行的场景是工厂或者设备上,机器硬件配置、网络环境都没有互联网场景好。此外,数据负载会比较大,而且负载会更加复杂,比如出现网络波动、数据质量问题,都是需要考虑的因素。

Q:开源的时间序列数据库方面,目前比较流行也不少,比如 influxDB、OpenTSDB、TDEngine 等,您觉得IoTDB的优势在哪些方面?

A:IoTDB 的优势主要体现在两个方面。

一是技术优势。我们接触物联网场景比较早,而且是在做项目的过程中发现问题的,因此我们的设计能够更加满足物联网场景的需求,目标场景也更加广泛,不会给系统增加各种限制。而且这个项目源于清华大学,学校方面也会不断地进行科研创新。

二是社区优势。在Apache基金会的指导下,我们建立了一个更加开放的社区,因而社区中有不少互联网公司的时序数据库部门的开发人员。大家平时会进行很紧密的讨论和分享,这种社区的氛围是非常好的,也会促使更多同学参与。长期来看,社区优势是一个基础软件发展的长久动力

物联网数据模型

Q:IoTDB已经在多个工业领域使用,包括风电行业、工程机械、气象大数据平台等,以电厂为例,IoTDB是如何帮助企业更好地管理数据呢?

A:我们自研了时序数据文件格式TsFile,TsFile采用了物联网数据模型,因此在数据组织和索引方面,都对时序数据更加友好和高效。

此外,我们对数据库引擎的读写流程进行优化,对数据进行列式组织和处理,并为查询设计了不同粒度的预聚合信息和缓存,能够大幅提升数据查询效率。

对电厂来说,一个大型发电机组具有上万测点。传统的关系数据库中是无法存储在一个表中的,一个表通常只能存一千多个测点,手动分表会造成更多复杂性,而IoTDB的物联网数据模型能够支持任意多的测点,并且性能可以保持平稳。查询时通过多层索引来加速序列和数据的定位。

国外项目选型,关心哪些?

Q: IoTDB在德国和美国也有推广和应用,那么这些国外企业在考虑接受和使用IoTDB这样的产品时,有哪些不同的需求或者侧重点呢?

A:国外的用户,像西门子、博世,都是老牌工业企业,他们在选型时会很严谨地测试。例如,他们在决策是否用IoTDB时,会先调研15种传统的实时数据库,如美国的PI system,爱默生的Delta V, 还有ABB、aspen等的技术现状和产品现状,然后将IoTDB跟这些数据库进行充分对比。

此外,还对DB-engine上20多种时序数据库做了简要对比,选择了几个做测试。他们不光看我们的测试结果,还从其他用户那里收集了PI、SQL server的测试结果进行对比,才决定用IoTDB。

总之,他们在做产品选型的时候,非常严谨,同时重点关注定位相类似的产品。在测试过程中,他们更喜欢用自己的真实负载,或者类似真实负载来测试,并在此基础上增加压力,而不会一味的疯狂爆压,因为后者这种测试在实际中根本不会用到,对一个产品线没多少意义

另外,国外企业还很注重项目的国际化程度,因为国际化也是社区健康度的一部分,国内一些社区刷星操作等在国际用户那里加分不大。社区参与人员情况国外企业也很看重,比如社区维护者是否都是一个组织的,是否有不同国家的项目管理者等。

开源数据库的未来预测

Q:现在IoTDB项目有哪些最新进展?

A:Apache IoTDB在保持着较快的迭代速度进行发展。产品层面,我们4月发布了0.13版本,新增了一元、多元序列的支持,增加了对触发器等功能的支持;增加了对连续查询、嵌套表达式等的支持;优化了数据写入的过程,提升了系统文件合并的性能;拓展了与外部系统的兼容,新增Grafana插件、REST API等。现在正在全力优化分布式版本,预计到8月份,分布式版本就可以面世了。

Q:现在开源数据库,尤其是国产开源数据库近几年非常火热,对此您是如何看待这一现象的?它的未来会出现哪些发展方向呢?

A:开源数据库对于中国培养数据库人才有很好的促进作用,数据库的知识大学都会讲,但大多停留在介绍如何使用SQL的层面,大家对如何做一个数据库是没什么概念的

通过参与开源项目,让大家真正感受到数据库的研发过程,有助于中国培养基础软件人才。未来的可能会继续出现新型数据库,如近几年出现的时序、图数据库等。数据库也会更加专业,更针对某些特定领域。此外,数据库与AI、分析系统、流处理系统等的结合也是新的发展方向。

Q:请您对正在从事开源数据库的开发人员和即将加入到 IoTDB 的同学,给出一些建议。

A:尽管最近开源数据库比较火热,但数据库是个复杂性很高的系统软件,还是有不低的门槛,要做好心理预期,参与开源数据库的开发可能不是一两周能看到效果的,从了解数据库的基本概念、使用方式,到了解其系统架构、设计理念,最后到找到一个点进行钻研优化。这个过程比较漫长,希望大家能够长期坚持,这个过程中也会感受到自己的成长。

嘉宾介绍

乔嘉林,博士毕业于清华大学软件学院,目前在清华大学软件学院做博士后,同时也是清华大学软件学院助理研究员,Apache IoTDB PMC,公众号“铁头乔”的作者,开放原子基金会银牌讲师,获得过北京市科技进步一等奖。研究领域为数据库方向,包括文件结构、索引、副本管理等,见证了IoTDB从发布第一个版本到毕业成为Apache基金会顶级项目的全过程。

51CTO技术精选月刊《CTO悟道》最新一期已经上线!更多精彩技术干货、知识见解等你揭晓,下载链接:​https://www.51cto.com/journalDetail/5.html?down=3​

责任编辑:闫怀德 来源: 51CTO
相关推荐

2009-06-22 13:29:00

Apache Open

2017-10-31 08:09:54

ApacheRocketMQ项目

2017-04-24 13:51:50

华为

2022-07-12 11:01:03

数据库

2020-12-08 09:45:51

项目Apache分表

2018-07-31 15:34:27

开源

2020-12-09 12:52:45

分布式对象存储

2018-07-18 13:38:21

百度

2021-04-09 22:09:55

软件基金会顶级项目

2012-11-12 09:34:03

SDNOpenStackCloudStack

2017-12-05 11:57:26

华为云

2022-08-31 14:49:05

IoTDBIoTDatabase

2009-06-16 13:40:06

OSGiApache Feli

2022-07-12 10:38:25

分布式框架

2016-10-19 16:52:52

流数据Apache Kafk

2013-04-26 10:59:54

目录遍历漏洞

2022-01-18 11:22:58

Hadoop 管理工具Apache Amba

2010-06-30 08:47:04

Tomcat 7ApacheServlet 3.0

2018-07-30 17:31:28

开源
点赞
收藏

51CTO技术栈公众号