支持日志导入:使用 Elastic Ingest Pipelines 配置来处理和转换日志数据,将带有类型信息的数据通过 Schemaless 的方式导入到数据库表中
实现 SHOW CREATE FLOW:通过支持 SHOW CREATE FLOW,GreptimeFlow 正在逐渐完善生态
简化 Parquet Writer:通过去除 Arrow 与 OpenDAL/S3 之间的冗余 Writer,减少 6% 的 Parquet 文件写入耗时
我们发布了 Grafana GreptimeDB 插件(基于 Grafana Prometheus 插件修改)。该插件实现了对 GreptimeDB 更友好的交互和功能支持,支持 GreptimeDB 的多值模型。目前可以通过本地安装使用,具体见:
在过去的两周里,GreptimeDB 共合并了 55 个 PR,其中有 5 位独立贡献者,累计 6 个 PR 被成功合并,还有很多待合并的 PR。
@cjwcommuny (db#4117)
@irenjj(db#4040)
@realtaobo (db#4088)
@WL2O2O (dashboard#433)
@yuanbohan (db#4121 db#4123)

#4014
举例说明,我们可以创建一个如下的 Pipeline:
curl -X "POST" "http://localhost:4000/v1/events/pipelines/test" \
-H 'Content-Type: application/x-yaml' \
-d 'processors:
- date:
field: time
formats:
- "%Y-%m-%d %H:%M:%S%.3f"
ignore_missing: true
transform:
- fields:
- id1
- id2
type: int32
- fields:
- type
- log
- logger
type: string
- field: time
type: time
index: timestamp
'
该接口同样支持将 Pipeline 内容放到一个文件中并直接上传整个文件。现在一个名为 test 的 Pipeline 在 greptime_private.pipelines 表中就创建好了。然后我们可以在数据库中插入一些日志数据:
curl -X "POST" "http://localhost:4000/v1/events/logs?db=public&table=logs1&pipeline_name=test" \
-H 'Content-Type: application/json' \
-d '[
{
"id1": "2436",
"id2": "2528",
"logger": "INTERACT.MANAGER",
"type": "I",
"time": "2024-05-25 20:16:37.217",
"log": "ClusterAdapter:enter sendTextDataToCluster\\n"
}
]'
该日志数据是 JSON 格式的。新的 /v1/events/logs 接口会查找 pipeline_name 参数指定的 Pipeline 来处理 Payload 数据。可以注意到日志数据的字段和定义的 Pipeline 相互关联。最后一个名为 logs1 的表就创建好了,带有类型信息的数据被插入到了该表中。
mysql> show create table logs1;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| logs1 | CREATE TABLE IF NOT EXISTS `logs1` (
`id1` INT NULL,
`id2` INT NULL,
`type` STRING NULL,
`log` STRING NULL,
`logger` STRING NULL,
`time` TIMESTAMP(9) NOT NULL,
TIME INDEX (`time`)
)
ENGINE=mito
WITH(
append_mode = 'true'
) |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> select * from logs1;
+------+------+------+---------------------------------------------+------------------+----------------------------+
| id1 | id2 | type | log | logger | time |
+------+------+------+---------------------------------------------+------------------+----------------------------+
| 2436 | 2528 | I | ClusterAdapter:enter sendTextDataToCluster
| INTERACT.MANAGER | 2024-05-25 20:16:37.217000 |
+------+------+------+---------------------------------------------+------------------+----------------------------+
1 row in set (0.03 sec)
#4040
现在,我们可以在创建 Flow 后使用 SHOW CREATE FLOW。例如,如果我们创建了如下 Flow:
mysql> CREATE FLOW IF NOT EXISTS my_flow
-> SINK TO my_sink_table
-> EXPIRE AFTER INTERVAL '1 hour'
-> AS
-> SELECT count(1) FROM monitor;
Query OK, 0 rows affected (0.04 sec)
我们可以使用 SHOW CREATE FLOW my_flow 来检查创建的语句:
mysql> SHOW CREATE FLOW my_flow;
+---------+-----------------------------------------------------------------------------------------------------------------------+
| Flow | Create Flow |
+---------+-----------------------------------------------------------------------------------------------------------------------+
| my_flow | CREATE OR REPLACE FLOW IF NOT EXISTS my_flow
SINK TO my_sink_table
EXPIRE AFTER 3600
AS SELECT count(1) FROM monitor |
+---------+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
https://github.com/GreptimeTeam/greptimedb/blob/main/docs/benchmarks/tsbs/README.md
关键词:Information Schema
难度:简单
在 information_schema.region_peers 中存储了 region_id 的情况下,即使有多个 region peers,似乎只返回了一个 region_id。现在需要查明是否在组装 information_schema.region_peers 的返回值时存在 bug 并修复它。
点击下方链接🔗关注 GreptimeDB,了解更多技术干货👇
关于 Greptime
Greptime 格睿科技专注于为物联网(如智慧能源、智能汽车等)及可观测等产生大量时序数据的领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前主要有以下三款产品:
GreptimeDB 是一款用 Rust 语言编写的开源时序数据库,具有云原生、无限水平扩展、高性能和融合分析等特点,帮助企业实时读写、处理和分析时序数据的同时,降低长期存储的成本。我们提供 GreptimeDB 企业版,支持更多企业特性和定制化服务,如有需要欢迎联系我们:15310923206(同微信)。
边云一体方案专为更高效地解决物联网中边缘存储和计算问题而设计,解决了物联网企业数据呈几何倍数增长后的实际业务痛点。它通过将多模式边缘数据库与云端的GreptimeDB 企业版相结合,大幅降低了流量、计算和存储成本,同时提升了数据及时性和商业洞察力。
GreptimeCloud 是一款全托管的云上数据库即服务(DBaaS)解决方案,基于开源时序数据库 GreptimeDB 打造,能够高效支持可观测、物联网、金融等领域的应用。

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/
往期精彩文章:


👇 点击下方阅读原文,立即体验 GreptimeDB!





