各位社区小同伴们,Databend 于 2023 年 6 月 29 日迎来了 v1.2.0 版别的正式发布!相较于 v1.1.0 版别,开发者们总共新增了 600 次 commit,触及 3083 个文件变更,约 17 万 行代码修正。感谢各位社区同伴的参与,以及每一个让 Databend 变得更好的你!

在 v1.2.0 版别中,Databend 新增了 BITMAP 数据类型运用列号直接查询 CSV/TSV/NDJSON 文件AI Functions 等特性,规划并完成全新哈希表 大幅提升 Join 的功用。这个版别的发布使得 Databend 更挨近完成 LakeHouse 的愿景,能够直接读取和剖析储存在目标存储上的 CSV/TSV/NDJSON/Parquet 等格局文件,你也能够在 Databend 内部对这些文件进行 ETL 操作,然后做一些更高功用的 OLAP 剖析。

一起,Databend 也规划并完成了 核算列VACUUM TABLEServerless Background Service 等企业级特性,感兴趣的小同伴能够联系 Databend 团队 了解晋级信息,或许访问 Databend Cloud 即时体会。

Databend x 内核

Databend 重要新特性速览,遇到更贴近你心意的 Databend 。

数据类型:BITMAP

Databend 新增对 BITMAP 数据类型的支撑并完成了一系列相关函数

BITMAP 是一种紧缩数据结构,能够高效地存储和操作布尔值调集。它供给了快速的调集运算和聚合才能,在数据剖析和查询方面应用广泛。常见的运用场景包含:去重计数、过滤挑选和紧缩存储。 Databend 中的 BITMAP 数据类型完成采用 RoaringTreemap 。与其他位图完成相比,运用这种数据结构能够进步功用并减少内存运用。

SELECT user_id, bitmap_count(page_visits) AS total_visits
FROM user_visits
+--------+------------+
|user_id |total_visits|
+--------+------------+
|       1|           4|
|       2|           3|
|       3|           4|
+--------+------------+

假如你想要了解更多信息,请检查下面列出的资源。

  • Docs | Data Types – BITMAP
  • Docs | SQL Functions – Bitmap Functions
  • Paper | Consistently faster and smaller compressed bitmaps with Roaring

运用列号直接查询 CSV/TSV/NDJSON 文件

要想查询 CSV/TSV/NDJSON 这类没有 schema 的文件,以前需求将其加载到表中再进行查询。但是有时候用户事先并不了解文件的具体情况(例如 CSV 文件有多少列),或许只是想做临时的查询。

为此,Databend 引入了列号(column position), 运用 $N 语法来表明第 N 列。CSV/TSV 文件一切列都视作 String 类型,假如某行的列数少于运用到的列号,则会用空字符串进行补齐。NDJSON 文件只要一列 $1 , 类型是 Variant

将这一才能与 COPY 语句结合运用,能够完成按需加载部分列,并在加载一起运用函数进行数据转换。

SELECT $1 FROM @my_stage (FILE_FORMAT=>'ndjson')
COPY INTO my_table FROM (SELECT TRIM($2) SELECT @my_stage t) FILE_FORMAT = (type = CSV)

假如你想要了解更多信息,请检查下面列出的资源。

  • Docs | SELECT – Column Position

规划并完成全新哈希表以进步 Hash Join 功用

在过去,Databend 的哈希表是为了满足聚合算子的需求而专门规划的,为了进一步进步 Hash Join 的功用,咱们着手规划并完成了一种专为 Hash Join 优化的全新哈希表,经过并行化的规划,使 Databend 能够充分利用核算资源,一起在内存操控方面也变得更为精准,避免了不必要的内存开销,显著进步了 Hash Join 的功用。

商业智能剖析师 Mimoune Djouallah 评论称:Databend 功用出色,在 8 核和 32GB 内存的条件下,运转 TPCH-SF10 只需求 25 秒。他乃至撰写了一篇题为《Databend and the rise of Data warehouse as a code》的博客文章。

Databend v1.2 版本发布!Data + AI

假如你想要了解更多信息,请检查下面列出的资源。

  • Data Infra #12 | Databend’s New Hash Table for Hash Join
  • PR #11140 | feat(query): new hash table and parallel finalize for hash join

AI Functions

Databend 在 v1.2.0 版别引入了强壮的 AI 功用,完成了 Data 与 AI 的无缝融合,咱们能够经过 SQL 来完成:

  1. 自然语言生成 SQL
  2. Embedding 向量化并存储
  3. 类似度核算
  4. 文本生成

自然语言生成 SQL

比方,假如你在一个 nginx log 的数据库中提问:”What are the top 5 IP addresses making the most requests”,运用 Databend 的 AI_TO_SQL 函数,你将直接得到相应的 SQL 语句,运用十分便捷。

Databend v1.2 版本发布!Data + AI

Embedding 向量化

借助 Databend 的 AI_EMBEDDING_VECTOR 函数,咱们能够完成数据的向量化,并将其保存在 Databend 的 ARRAY 类型中。这样一来,Databend 现实上变成了一个向量数据库。

Databend v1.2 版本发布!Data + AI

类似度核算

在向量化表明下,能够核算两个词语、语句或文档的类似度。 例如,假定咱们有 “dog” 和 “puppy” 两个词语(也能够是语句),咱们首先将它们各自转化为向量 v1 和 v2,然后运用余弦类似度来核算它们的类似度。

cos_sim = dot(v1, v2) / (norm(v1) * norm(v2))

Databend 中的 COSINE_DISTANCE 函数就是对这个公式的完成。

Databend v1.2 版本发布!Data + AI

文本生成

文本生成在许多场景下十分有用,现在你能够在 SQL 中运用 AI_TEXT_COMPLETION 函数来完成。

Databend v1.2 版本发布!Data + AI

现在,咱们已经利用以上 Data + AI 才能,对 databend.rs 的一切文档进行了 Embedding 处理,并将其存储到 Databend 中,构建了一个智能问答网站:ask.databend.rs 。 在这个网站上,你能够提问关于 Databend 的任何问题。

Databend 企业级特性

全新企业级特性上线啦!了解 Databend 如何推动更具价值的数据剖析服务。

核算列

核算列(Computed Columns)是一种经过表达式从其他列核算生成数据的列,运用核算列能够将表达式的数据存储下来加速查询速度,一起能够简化一些复杂的查询的表达式。核算列包含存储(STORED)和虚拟(VIRTUAL)两种类型。

  • 存储核算列在每次插入或更新时生成数据并存储在磁盘,在查询时不需求重复核算,能够更快的读取数据。
  • 虚拟核算列不存储数据,不占用额外的空间,在每次查询时实时进行核算。

核算列对读取 JSON 内部字段的数据特别有用,经过将常用的内部字段界说为核算列能够大大减少每次查询进程中提取 JSON 数据的耗时操作。例如:

CREATE TABLE student (
    profile variant,
    id int64 null as (profile['id']::int64) stored,
    name string null as (profile['name']::string) stored
);
INSERT INTO student VALUES ('{"id":1, "name":"Jim", "age":20}'),('{"id":2, "name":"David", "age": 21}');
SELECT id, name FROM student;
+------+-------+
| id   | name  |
+------+-------+
|    1 | Jim   |
|    2 | David |
+------+-------+

假如你想要了解更多信息,请检查下面列出的资源。

  • Docs | CREATE TABLE – COMPUTED COLUMNS

VACUUM TABLE

VACUUM TABLE 指令经过从表中永久删去历史数据文件来释放存储空间,有助于优化体系功用。删去的文件包含:

  • 与表相关的快照及其相关的 segments 和 blocks 。
  • 孤立文件。在 Databend 中,孤立文件指不再与该表相关的快照、segments 和 blocks 。孤立文件或许由各种操作和过错生成,例如在数据备份和复原期间,并且跟着时间的推移会占用名贵的磁盘空间并降低体系功用。

假如你想要了解更多信息,请检查下面列出的资源。

  • Docs | VACUUM TABLE

Serverless Background Service

Databend 的内置存储引擎 FuseTable 是一种与 Apache Iceberg 类似的日志结构表,在数据继续写入的进程中,需求定期履行表紧缩、重聚类和整理以兼并小数据块。小数据块兼并的进程会触及按聚类键排序数据或整理不需求的分支等阶段。

为了主动化履行这一进程需求运用不同的驱动,增加了基础设施的复杂性。并且必须布置和保护其他服务来触发驱动事件。为简化这一进程,Databend 规划并完成了 Serverless Background Service ,能主动发现数据写入之后需求紧缩、重排序、整理的表,无需其他服务,也无需用户手动操作,主动触发对应表的保护作业,降低了用户保护的担负,提升了表查询的功用,也降低了数据在目标存储中的本钱。

Databend x 生态

Databend 的生态地图得到了进一步的完善。是时候将 Databend 引入你的数据洞见作业流啦!

databend 的 Python 绑定

Databend 现在供给 Python 绑定,为在 Python 中履行 SQL 查询供给了新挑选。该绑定内置 Databend ,无需布置实例即可运用。

pip install databend

从 databend 导入 SessionContext 并创立会话上下文即可开始运用:

from databend import SessionContext
ctx = SessionContext()
df = ctx.sql("select number, number + 1, number::String as number_p_1 from numbers(8)")

结果 DataFrame 能够运用 to_py_arrow()to_pandas() 转换为 PyArrow 或许 Pandas 格局:

df.to_pandas() # Or, df.to_py_arrow()

现在行动起来,将 Databend 集成到你的数据科学作业流中。

  • databend PyPI

BendSQL – Databend 原生指令行东西

BendSQL 是一款专为 Databend 规划的原生指令行东西,现在已经用 Rust 语言重写,并且一起支撑 REST APIFlight SQL 协议。

运用 BendSQL ,你能够轻松高效地办理 Databend 中的数据库、表和数据,并轻松履行各种查询和运算。

bendsql> select avg(number) from numbers(10);
SELECT
  avg(number)
FROM
  numbers(10);
┌───────────────────┐
│    avg(number)    │
│ Nullable(Float64) │
├───────────────────┤
│ 4.5               │
└───────────────────┘
1 row in 0.259 sec. Processed 10 rows, 10B (38.59 rows/s, 308B/s)

咱们期待与你分享更多关于 BendSQL 的更新!欢迎试用并给咱们反馈。

  • Docs | SQL Clients – BendSQL
  • Crates.io – bendsql
  • Github – datafuselabs/databend-client | Rust

数据集成和 BI 服务

Apache DolphinScheduler

Apache DolphinScheduler 是一个分布式和可扩展的开源作业流协调平台,具有强壮的DAG可视化界面。支撑 30+ 的使命类型,包含像 Flink SQL、DataX、HiveCli 等。能够高并发、高吞吐量、低延迟和稳定地履行百万个量级使命,能够根据计划时间(特别日期规模或特别的日期列表)批量履行使命,并且在不影响作业流模板的情况下,作业流实例支撑修正、回滚和重新运转。

Databend v1.2 版本发布!Data + AI

DolphinScheduler 现已支撑 Databend 数据源,能够运用 DolphinScheduler 办理 DataX 使命完成从 MySQL 到 Databend 异构数据库数据同步。

Apache Flink CDC

Apache Flink CDC(Change Data Capture)是指 Apache Flink 运用基于 SQL 的查询从各种来历捕获和处理实时数据更改的才能。CDC 允许监督和捕获数据库或流体系中发生的数据修正(插入、更新和删去),并对这些更改进行实时响应。

Databend 现在供给 Flink SQL Connector,能够将 Flink 的流处理才能与 Databend 集成。经过对连接器进行装备,能够以流的方式从各种数据库中捕获数据更改,并将其载入到 Databend 中以进行实时处理和剖析。

假如你想要了解更多信息,请检查下面列出的资源。

  • Docs | Loading Data with Tools – Flink CDC

Tableau

Tableau 是一款流行的数据可视化和事务智能东西。它供给了直观、交互式的方式来探索、剖析和呈现数据,帮助用户更好地舆解数据的含义和洞悉。

参阅 Other Databases (JDBC),将 databend-jdbc 放置在 Tableau 驱动途径下,就能够运用 Tableau 剖析 Databend 中的数据。

Databend v1.2 版本发布!Data + AI

假如你想要了解更多信息,请检查下面列出的资源。

  • Blog | Databend x Tableau

下载运用

假如你对咱们新版别功用感兴趣,欢迎访问 github.com/datafuselab… 页面检查悉数的 changelog 或许下载 release 体会。

假如你还在运用旧版别的 Databend,咱们引荐晋级到最新版别,晋级进程请参阅:

databend.rs/doc/operati…

意见反馈

假如您遇到任何运用上的问题,欢迎随时经过 GitHub issue 或社区用户群中提建议

GitHub: github.com/datafuselab…