欢迎参与 8 月 1 日中午 11 点的线上分享,了解 GreptimeDB 联合处理指标和日志的最新方案! 👉🏻 点击加入

Skip to content
On this page
双周报
2022-12-16

Greptime 双周精选 (11 月 24 日 — 12 月 9 日)|支持存储到 S3

在过去的两周,GreptimeDB 依旧非常活跃,在带来新功能的同时,也和社区的贡献者们一起推动 GreptimeDB 成为一个更好的产品,再次感谢大家!

GreptimeDB 于今年 11 月 15 日正式开源,一个月以来已经合并了来自 10 位社区贡献者的 21 个 PR。我们算了一下,目前公司外社区贡献占整个项目将近 25%,非常高产。

此文将列举社区正在解决的两个 good first issues,同时介绍我们的特性进展。

整体介绍

图片 不到四周时间,GreptimeDB 社区收到很多的关注和强有力的支持,其中有很多来自世界各地的开发小伙伴。他们有的才华横溢,有的元气满满,这令我们惊喜,也让我们更加坚定了开源的初心。

💪🏻《双周精选》将以两周一更新的形式,通过简短的内容,为大家提供我们产品和社区的进展。希望以此,能让社区成员和朋友们更好地了解项目,让更多的同道中人参与进来,一起建设 GreptimeDB。

👫 本文还会有一些我们 issue 池里面的例子,对开源新手比较合适。大家如果对内容感兴趣,一定不要怀疑自己的能力,即刻加入我们吧!

社区贡献者名单

以上各位的贡献,慷慨有义,彰显实力,非常感谢。有了你们,以及跟你们一样有开源精神的朋友,GreptimeDB 一定会越来越好。

PR 亮点

db#694

取消了单机部署模式下 frontenddatanode 的 gRPC 调用,避免了无谓的传输和单机部署模式中数据的序列化和反序列化,减少 frontend 调用 datanode 的额外开销。(来自 @MichaelScofield

db#641

MySQL 和 PostgreSQL 支持 TLS 是十分有必要的。另外与 HTTP 或 gRPC 不同,数据库协议有自己的 TLS 握手过程,因此我们需要在数据库这一层来实现支持 TLS。(来自 @SSebo

db#656

GreptimeDB 使用了 OpenDAL 作为对象存储的 API,理论上来讲,能轻易支持存储到 S3。(来自 @killme2008

db#558

GreptimeDB 支持了 DESC 语法,可以通过 DESC[RIBE] TABLE <name>; 来查询表的基本结构以及相应的默认值。(来自 @morigs)

新鲜事

Good first issue

在开源项目里面,如果你看到有个 issue 带了 good first issue 的标签,那往往说明这是为这个社区做贡献最好的开始的地方,而一般开源项目都特意为社区新贡献者们提供了很多 good first issues,我们也不例外。

在双周精选的这部分,我们会来列举一个社区用户已经解决的 good first issue 以及一个期待被解决的 issue。

db#667 简化 TIME INDEX 关键词语法

在我们创建一个表时,比如:

sql
CREATE TABLE system_metrics (                         
    host STRING,
    idc STRING,
    ts TIMESTAMP NOT NULL,
    PRIMARY KEY(host, idc),
    TIME INDEX(ts)
);

其中有两个特别的约束,PRIMARY KEY 是常见的主键约束,而 TIME INDEX 在 GreptimeDB 中是特别的时间戳约束。

这个 issue 是期望可以将上述建表语句中 TIME INDEX 约束做一个简化,原本需要两行的描述改为一行:

sql
ts TIMESTAMP TIME INDEX,

通过这样做,还能满足:

  • 不再需要写 NOT NULL 约束,TIME INDEX 即带有 NOT NULL 约束;

  • 不再需要另写一行 TIME INDEX 约束;

当然,为了保持兼容,新的语法与老的语法 GreptimeDB 都需要支持。

在这个 issue 提出来的当天,即被社区贡献者 @SSebo 认领,很快在第四天就提交了 Pull Request 并在建议优化后被合并,非常高效!这里特别感谢 @SSebo, 让 GreptimeDB 的建表语法又简化了一小步。图片图片图片

db#602 创建数据库内部健康指标的系统表

对于一个系统来讲,可以监控自己的健康状态非常重要,因此 GreptimeDB 也希望有内置的方法可以展示当前的运行情况,而最直接的实现方式就是为内部的 metrics 创建默认的系统表,类似 Databend or ClickHouse 的做法。

用户可以通过对 metrics 表做简单的 select 查询获取当前 DB 的重要运行状态。有了 metrics 表,也可以通过支持 SQL 的可视化工具或者 dashboard(比如 Grafana )来实时展示系统的运行情况。

为了完成这个功能,可能需要做以下几个事:

  • datanode 模块,创建一个叫 metrics 的表, 表的 schema 至少需要有 metric, valuedescription,如果有其他你认为有意义的列,也可以加入。同时将它注册为默认的 catalog, 类似 ScriptsTable 的做法;

  • metrics 表实现 select 功能。在这里,不用真正的将指标存储到数据库中,可以通过调用 PROMETHEUS_HANDLErender() 函数,将获得的结果(Prometheus lines)格式化为表格输出;

  • frontend 模块,创建和 datanode 模块中一样的 metrics 表。但注意,和 DistTable 不同,metrics 表不做分布式查询。

在实现过程中一定还会有其他的细节疑惑,非常欢迎大家来到这个 issue #602 讨论,也期待你的认领。

关于 Greptime

Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。

欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~

Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb

官网:https://greptime.cn/

文档:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/

加入我们的社区

获取 Greptime 最新更新,并与其他用户讨论。