开源之夏 2023 | Databend 社区项目总结与分享

2023-11-23 03:12

本文主要是介绍开源之夏 2023 | Databend 社区项目总结与分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。

官方网站 开源软件供应链点亮计划-开源之夏2023

在开源之夏 2023 活动中,Databend 社区共发布两个项目,一个顺利结项,并在开源之夏结业项目中进行展示,可以访问 开源之夏2023 - 结项公示 查看。

另一个项目未能按照时间计划推进相关工作,项目经由社区接手完成。

项目 1:实现 Databend UDF Server

该项目的主要目标是实现一个 Databend UDF Server,允许用户创建、删除和执行 UDF。

  • 撰写 UDF Server 的 RFC。
  • 实现一个 MVP,提供创建、删除和执行 UDF 的功能,并编写相关测试。
  • 使用 Python 或其他语言创建示例。

项目状态: 顺利结项

学生姓名: 陈传乐

跟踪问题: https://github.com/datafuselabs/databend/issues/12177

对应提交: https://github.com/datafuselabs/databend/pull/12729

相关介绍: 通过结合 Apache Arrow Flight API 实现 UDF Server ,用户可以使用自己喜爱的编程语言,来与 Databend 交互,从而拓展数据库的边界,实现更丰富和高效的数据工作流。文档位于:External Function | Databend 。

经过进一步研发迭代,目前 databend-udf 已经发布 Python SDK 至 PyPI ,下面是一个使用 UDF 机制实现计算最大公约数的示例:

from databend_udf import *@udf(input_types=["INT", "INT"],result_type="INT",skip_null=True,
)
def gcd(x: int, y: int) -> int:while y != 0:(x, y) = (y, x % y)return xif __name__ == '__main__':# create an external server listening at '0.0.0.0:8815'server = UDFServer("0.0.0.0:8815")# add defined functionsserver.add_function(gcd)# start the external serverserver.serve()

项目 2:使用 Prometheus 重构 Databend 的 Metrics 组件

使用 Prometheus(一个开源系统监控和警报工具包)重构 Databend 的 Metrics 组件。

另外,本项目需要开发一个基于 Prometheus 的 macro 框架,以简化添加新 Metrics 的过程。

项目状态: 由社区接手完成。

跟踪问题: https://github.com/datafuselabs/databend/issues/12635

对应提交: https://github.com/datafuselabs/databend/pull/12787

相关介绍: metrics-rs 为不同的可观测性方案构建了一个通用的抽象层,支持包括 statsd、prometheus、new-relic 等在内的多种工具,但是 metrics-rs 无法很好地支持直方图统计之类的指标。

如今,Prometheus 已成为可观测性领域的事实标准,使用原始的 Prometheus 客户端,而不是将指标推送给其他工具,会带来一些显而易见的好处:

  • 更好的性能:经过良好实现的观测指标的内存分配应该是 O(1) ,无需本地缓冲队列。
  • 减少抽象层:我们可以减少关于指标的抽象层,使代码路径更易于理解。
  • 更好的编码规范:目前我们在不同模块中有不同的指标标准实践,可以学习 Prometheus 社区的指标标准实践来统一我们的指标标准实践。

现在,Databend 的可观测性指标已经完全迁移到 Prometheus 实现,在保持原有指标几乎不变的情况下,带来了更全面、更可靠的可观测性体验。

结语

今年是 Databend 社区第二次参与开源之夏活动,很高兴能够在活动中遇到富有热情和智慧的同学们。

感谢所有参与项目的学生和社区成员的辛勤工作和付出! Databend 因你们而变得更加优秀。希望这些项目能够启发更多人参与到开源软件的开发中,并促进开源社区的繁荣和创新。

如果你对 Databend 或其他开源项目感兴趣,欢迎加入相关社区,贡献自己的力量,共同推动开源软件的发展!祝愿大家能够在开源世界继续汲取养分,成长为技术大牛,继续引领开源浪潮。

Connect With Us

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:https://databend.cn

📖 Databend 文档:Databend

💻 WeChat:Databend

✨ GitHub:https://github.com/datafuselabs/databend

这篇关于开源之夏 2023 | Databend 社区项目总结与分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414944

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法