​揭秘国内首个进入Apache的高校顶级项目——Apache IoTDB

2023-05-16

3d2182dcebf515467c6be6814497b044.png

本文约4200字,建议阅读10+分钟
本文与你分享有关开源数据库项目成长、开源社区治理、加速赋能企业等方面的观点与见解。

近年来,随着人工智能、物联网的兴起,大数据成为重要的生产资料,而时序数据则是这个时代避无可避的热议话题。如何提升时序数据的利用率?如何为复杂场景提供一个可靠的数据库?这些都是业内必须解决的难题。

Apache IoTDB作为由清华大学发起的、全球领先的国际顶级开源项目,是支持物联网时序数据收集、存储、查询与分析一体化的数据管理引擎。根据中国软件评测中心和中国人民大学的性能对标测试,IoTDB的各项性能指标均明显优于当今国际最优的时序数据库系统。

IoTDB支持“端—边—云”一体化部署,适用于高端装备管理、工厂设备、高速网联设备等多种数据管理场景,目前已在能源电力、轨道交通、车联网等多家行业有广泛应用。业界要解决的难题,IoTDB都曾直接面对过。

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

PART 01

国内首个进入Apache的

高校顶级项目

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

A:项目进入Apache会经历两个大的阶段。

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

判断一个项目是否有价值,主要的依据是项目要解决的问题是否是一个比较广泛的痛点,是否对社会有价值。

除了判读项目的价值,成员会还要评估新项目是否和已有项目重合。Apache基金会通常在每个方向会选择一个项目去孵化,如果重合度较高,可能会被拒绝接收。

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

第二阶段是在孵化器中完成项目的规范化和社区的建设,毕业成为顶级项目。所有在孵化器的项目名称都以incubator开头,项目的孵化和社区建设阶段需要关注的是项目合规性和社区建设情况

项目合规性包括代码中是否进行了Apache协议声明,依赖的开源组件是否与Apache协议兼容,是否按照Apache的规范进行版本发布等;社区建设情况包括社区活跃度,邮件列表的讨论数量,是否有外部committer和PMC等。

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

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

A:高校发起的开源项目,通常没有专门的社区运营人员,主要是开发者或者学生直接管理社区,开发者直接对接用户,会更直接地感受到产品的好坏。高校也面临着人员更替频繁的问题,通常研究生参与两年多就毕业了,而且学生参与社区更多是非全时的,他们平时还有课程、大作业、考试、实习等需要占用精力。不过,从某种程度上来讲,这更符合开源社区的工作方式,大家都是在空余时间参与社区,通过文档和邮件交流就显得更为重要。

针对上面的这些特点,在高校发展开源项目要注意多与社区互动,将想法和设计思路与社区同步。同时也要重视社区项目宣传,学生比较喜欢埋头苦干,可能做出了很多不错的项目,但是由于宣传不够,导致了解的人不多。

PART 02

成为顶级项目后

关于项目运作的思考

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

A:开源社区的发展变化不是一瞬间的,而是在平时的每一天。项目运作模式的变化,主要是从进入到Apache基金会开始的。原来我们通常是几个同学讨论完,就开始做了。进入Apache 后,每次讨论都会形成文档,发到社区中,大家觉得没有问题了,再开始改动。以前也不注意宣传,只有实验室的同学知道我们在做什么项目,进入Apache后,我们会举办一些见面会,并且开始运营项目的公众号,组建微信群、QQ群、Slack等。

作为一个To B的项目,用户不会由于你是顶级项目,获得过什么奖来进行选择,而是会对软件进行实地测试,满足需求才会进行选择,这个过程会更加理性。贡献者也是如此,很多贡献者本身就是用户,Apache顶级项目可能是促使他们来尝试的原因,经过评估之后,很多用户和企业会投入研发力量全时参与到社区中。社区的工作模式也从一个组织主导,变成社区共建,社区就像一个大的组织。

PART 03

实用即王道

稳定性是第一位的

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

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

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

可维护性也是对稳定性的保障,我们在设计系统的过程中,增加了很多对运维友好的特性。接下来是性能,你可以性能一般,大不了做规划的时候可以多配一些硬件,但是一定要可预测,可预测才能继续做。

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

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

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

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

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

PART 04

物联网数据模型

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

A:我们自研了时序数据文件格式TsFile,TsFile采用了物联网数据模型,因此在数据组织和索引方面,都对时序数据更加友好和高效。此外,我们对数据库引擎的读写流程进行优化,对数据进行列式组织和处理,并为查询设计了不同粒度的预聚合信息和缓存,能够大幅提升数据查询效率。

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

PART 05

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

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

A:国外的用户,像西门子、博世,都是老牌工业企业,他们在选型时会很严谨地测试

例如,他们在决策是否用IoTDB时,会先调研15种传统的实时数据库,如美国的PI system,爱默生的Delta V, 还有ABB、aspen等的技术现状和产品现状,然后将IoTDB跟这些数据库进行充分对比。

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

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

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

PART 06

开源数据库的未来预测

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

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

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

A:开源数据库对于中国培养数据库人才有很好的促进作用,数据库的知识大学都会讲,但大多停留在介绍如何使用SQL的层面,大家对如何做一个数据库是没什么概念的。通过参与开源项目,让大家真正感受到数据库的研发过程,有助于中国培养基础软件人才。

未来的可能会继续出现新型数据库,如近几年出现的时序、图数据库等。数据库也会更加专业,更针对某些特定领域。此外,数据库与AI、分析系统、流处理系统等的结合也是新的发展方向。

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

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

嘉宾介绍

乔嘉林,博士毕业于清华大学软件学院,目前在清华大学软件学院做博士后,同时也是清华大学软件学院助理研究员,Apache IoTDB PMC,公众号“铁头乔”的作者,开放原子基金会银牌讲师,获得过北京市科技进步一等奖。

研究领域为数据库方向,包括文件结构、索引、副本管理等,见证了IoTDB从发布第一个版本到毕业成为Apache基金会顶级项目的全过程。

编辑:黄继彦

校对:林亦霖

6c638a80cacc83303c3fbec44b8045d6.png

b8df34b9ad2433c18387e42001612d26.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

​揭秘国内首个进入Apache的高校顶级项目——Apache IoTDB 的相关文章

  • Http POST 删除 URL 中的端口

    我有一个用 Django 构建的网络应用程序 我目前正在家里的路由器后面的笔记本电脑上运行它 我将路由器配置为将发送到特定端口的所有流量路由到该笔记本电脑 我将 Nginx 作为 Apache 的反向代理 使用 mod wsgi 来运行 D
  • 将代码从 htaccess 重写为 nginx 配置?

    我在将 htaccess 文件中的重写代码实现到 nginx 配置中时遇到问题 我已经尝试过生成器 http winnginx com htaccess http winginx com htaccess用于生成我的重写 代码 我的ngin
  • 我在 apache 中使用乘客 for Rails 时收到 403 错误

    我已经安装了所需的工具 并遵循了几个教程 试图让乘客做出回应 我可以访问公共文件夹 public 500 html 或 422 hml 中的静态文件 昨天我通过虚拟主机进入 发现一些乘客错误 但一段时间后 托管重新启动了服务 从那时起我就无
  • 如何找到 httpd.conf 文件所在的位置?

    如何找到 apache PHP 上 httpd conf 文件的路径 我不知道我的脚本是否会在Windows apache或Linux中运行 我需要知道在哪里可以找到这个文件 以便从那里找到参数 谢谢 我认为它没有接触 PHP 跑步http
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 无法更改 Xampp 中的 Apache 端口号

    我刚刚下载了Xampp服务器xampp win32 1 8 2 0 VC9 zip http www apachefriends org en xampp windows html 641文件 Windows 并尝试启动 apache 服务
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • 请求的操作失败 - Apache 错误

    当我尝试启动 Apache 2 2 服务器时 它显示以下消息 请求的操作失败 在命令提示符中显示如下 C Documents and Settings amth gt net start apache2 2 The Apache2 2 se
  • phpinfo 说 php.ini 路径是 C:\Windows 但那里没有 php.ini

    我们正在尝试从 PHP5 切换到 PHP7 现在我们已经安装了 Apache 并且 PHP 可以运行了 然而 我们在php ini文件没有任何作用 Via phpinfo 我们意识到原因是Configuration File php ini
  • 通过 AJP 将 REMOTE_USER 转发到 tomcat(例如用于 shibboleth)

    今天我刚刚遇到了以下问题 1 我将apache配置为基本身份验证 需要有效用户 这有效 2 我进一步配置 apache 将某些路径 在我的例子中为 idp 的请求转发到 tomcat servlet shibboleth IDP 结果是 s
  • 使用代理时,React 应用程序正在不同位置查找静态文件

    我用过npx create react app my app创建一个反应应用程序 我用过的npm run build构建应用程序并使用它进行部署serve s build 我正在使用代理服务器来公开我的应用程序 我的 httpd 配置如下所
  • 如何制作 tumblr 风格的个人资料 url

    我想知道 tumblr 是如何做到这样的个人资料网址 http www username tumblr com http username tumblr com 我知道我们可以更改个人资料网址 http www website com pr
  • 客户端浏览器关闭时服务器端 Perl CGI 脚本中断

    我已经尝试解决一个小问题很长一段时间了 但似乎我无法解决 我编写了一个 HTML 页面 它在提交表单时调用 perl CGI 脚本 该 CGI 在服务器端执行一定数量的任务 我让脚本将这些任务的步骤打印到 HTML 页面上的 iframe
  • XHR 不起作用,因为“Access-Control-Allow-Origin 不允许来源”

    我正在使用 Rails 3 开发一个 API 服务器 到目前为止 它非常方便 但我一直遇到错误 我不确定这是因为我的 Apache 设置还是 Rails 应用程序 当我尝试执行 HTTP DELETE 或 PUT 请求时http sampl
  • 具有动态 apache vhost 的非通配符证书

    我正在尝试根据用于连接到我的服务器的 url 动态读取 SSL 证书的位置 我尝试了几种不同的方法 但似乎都不起作用 目前我的配置如下所示 UseCanonicalName Off listen 443
  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的

随机推荐

  • Android.bp编译提示ninja: error: unknown target ‘MODULES-IN-xxx‘终极指南

    Android bp编译提示ninja error unknown target 39 MODULES IN xxx 终极指南 Android bp系列博客 Android bp你真的了解吗 Android bp入门指南之Android m
  • 转折点----------我的IT梦

    干IT这一行快6年了 从来没有留下任何属于自己的一些所谓的阅历 时常去逛逛同行前辈们的空间 总能看到他们留下的心得体会 实则令人羡慕 xff0c 或者自己的卑微 xff0c 或者实在没什么体会 xff0c 写出来会丢人现眼 只是默默的去感受
  • 有了这份程序员面试指南,你离大厂Offer还远吗?| 附推荐书籍

    点击上方蓝色字体 xff0c 关注我 一个在阿里云打工的清华学渣 图by 石头 64 长白山 关于作者 xff1a 程序猿石头 ID tangleithu xff0c 现任阿里巴巴技术专家 xff0c 清华学渣 xff0c 前大疆后端 Le
  • 记录一次harbor的镜像扫描和更新

    前提 已经部署好harbor 192 168 14 16 项目名称 harbor 1 在harbor服务器拉取centos源镜像 root localhost docker pull centos Using default tag lat
  • 关于pixhawk硬件IMU和compass那点事儿

    文章目录 前言一 IMU和compass是什么 xff1f 二 导航坐标系与机体坐标系三 安装IMU xff0c compasss四 hwdef中设置IMU xff0c compass朝向总结 前言 继上一篇讲解了pixhawk的硬件组成
  • ubuntu下ardupilot编译环境搭建与仿真

    文章目录 前言一 ardupilot 源码下载二 编译环境建立仿真经验教训坑1坑2 参考 前言 虽然怒飞老师给出了详细的windows下的开发环境的搭建教程 但是对于开发者而言 xff0c 最好的系统环境还是在Linux系统下 xff0c
  • Ubuntu下MissionPlanner的安装

    文章目录 前言一 安装mono二 下载并使用MissionPlanner三 创建快捷脚本 前言 众所周知 xff0c QGC地面站外观更加好看 xff0c 开发上也是采用跨平台的Qt 在ubuntu上安装十分方便 但是我还是更喜欢用Miss
  • Nmap详解

    Nmap简介 Nmap也就是Network Mapper xff0c 网络发现 xff08 Network Discovery xff09 和安全审计 xff0c 是一款网络连接端扫描软件 xff0c 用来扫描网上电脑开放的网络连接端 确定
  • PX4 自定义bootloader生成

    本文主要是记录一下自己在这方面的学习 xff0c 方便以后回顾 xff0c 也希望对其他朋友有用 本着不重复造轮子的精神 xff0c 这里引文不在复制粘贴 xff0c 直接给出链接 生成bootloader的两种方式 以STM32H7作为主
  • PX4开发中遇到的一些问题和解决方法

    文章目录 前言正文1 仿真出现 FCU Preflight Fail Accel 0 uncalibrated等错误2 添加mavlink数据发送or提高数据发送频率3 PX4在不同硬件下的RC输入4 PX4 参数自定义5 电机输出顺序6
  • PX4自定义混控器

    文章目录 前言混控器简介混控器的启动自定义混控器参考 xff1a 前言 上一篇我对PX4的控制和输出的全流程都进行了较为详尽的分析 xff0c 本来想着之后的研究主要在四旋翼控制算法上 xff0c 不会定义啥新机型 xff0c 混控器的部分
  • 运行VINS,相机模型与参数的准备

    相机模型与参数 对于VINS来说 xff0c 相机的内参的准确是万分重要的 如果参数不对 xff0c 那么100 跑飞 xff0c 没商量 要想VINS可以很好的工作 xff0c 给出良好的相机内参是必须的 对于realsense系列的相机
  • MTF模块 PX4 光流模块详细配置

    对于研究无人机的新手 xff0c 直接飞手动模式 xff0c 可能过于困难 在室内测试时 xff0c 又没有GPS可用 为了安全和方便起见 xff0c 可以考虑选用光流模块 xff0c 降低入手难度 这里我们选择微空科技出品的MTF 01模
  • GNSS系列(3)------GNSS定位漂移讨论

    由于工作需要 xff0c 最近开启了GNSS系列文章的撰写工作 xff0c 发布于公司官网 xff0c 现将其同步至CSDN 原文链接 xff1a http onemo10086 com school article 196 小伙伴们 xf
  • ML302 OpenCPU系列(5)---Log工具的使用

    ML302 OpenCPU系列 xff08 5 xff09 Log工具的使用 一 使用串口助手抓取Log二 使用Coolwatcher抓取AP Log三 查看死机现场 工欲善其事 xff0c 必先利其器 Log是嵌入式开发中最重要的调试手段
  • 2017--就业分享之IT校招现状和面试经历

    在介绍自己整个春季和夏季实习求职经历之前 xff0c 先给大家公布一则新闻 2017届互联网校招薪酬报告 xff1a 先说下对 16 年 17 届校招的总体看法 xff1a 本该是个不大不小的年 xff0c 结果被华为一己之力搞成了个大年
  • Shell判断字符串是否相等,=两边需要有空格

    custom span class token operator 61 span span class token string 34 34 span span class token keyword if span span class
  • 学嵌入式系统设计的人应不应该看模拟电路基础

    我学嵌入式系统设计是首先从数字电路看起的 由于数字电路这门课程在大一的时候就学过 xff0c 所以觉得略看就能看懂 xff0c 也算是把这门课复习了一遍 但是当我看到存储器和可编程控件这一章时 xff0c 里面讲到存储单元主要是由半导体组成
  • 使用Python爬取淘宝两千款套套

    各位同学们 xff0c 好久没写原创技术文章了 xff0c 最近有些忙 xff0c 所以进度很慢 xff0c 给大家道个歉 gt 警告 xff1a 本教程仅用作学习交流 xff0c 请勿用作商业盈利 xff0c 违者后果自负 xff01 如
  • ​揭秘国内首个进入Apache的高校顶级项目——Apache IoTDB

    本文约4200字 xff0c 建议阅读10 43 分钟 本文与你分享有关开源数据库项目成长 开源社区治理 加速赋能企业等方面的观点与见解 近年来 xff0c 随着人工智能 物联网的兴起 xff0c 大数据成为重要的生产资料 xff0c 而时