Databend v1.2 版本發(fā)布!Data + AI

各位社區(qū)小伙伴們,Databend 于 2023 年 6 月 29 日迎來(lái)了 v1.2.0 版本的正式發(fā)布!相較于 v1.1.0 版本,開(kāi)發(fā)者們一共新增了 600 次 commit,涉及 3083 個(gè)文件變更,約 17 萬(wàn) 行代碼修改。感謝各位社區(qū)伙伴的參與,以及每一個(gè)讓 Databend 變得更好的你!
在 v1.2.0 版本中,Databend 新增了 BITMAP 數(shù)據(jù)類型 、 使用列號(hào)直接查詢 CSV/TSV/NDJSON 文件 、AI Functions 等特性,設(shè)計(jì)并實(shí)現(xiàn)全新哈希表 大幅提升 Join 的性能。這個(gè)版本的發(fā)布使得 Databend 更接近實(shí)現(xiàn) LakeHouse 的愿景,能夠直接讀取和分析儲(chǔ)存在對(duì)象存儲(chǔ)上的 CSV/TSV/NDJSON/Parquet 等格式文件,你也可以在 Databend 內(nèi)部對(duì)這些文件進(jìn)行 ETL 操作,從而做一些更高性能的 OLAP 分析。
同時(shí),Databend 也設(shè)計(jì)并實(shí)現(xiàn)了 計(jì)算列 、VACUUM TABLE 和 Serverless Background Service 等企業(yè)級(jí)特性,感興趣的小伙伴可以聯(lián)系 Databend 團(tuán)隊(duì)(https://www.databend.cn/contact-us)? 了解升級(jí)信息,或者訪問(wèn) Databend Cloud (http://app.databend.cn/) 即時(shí)體驗(yàn)。
Databend x 內(nèi)核
Databend 重要新特性速覽,遇到更貼近你心意的 Databend 。
數(shù)據(jù)類型:"BITMAP"
Databend 新增對(duì) "BITMAP"
數(shù)據(jù)類型的支持并實(shí)現(xiàn)了一系列相關(guān)函數(shù)。
"BITMAP"
是一種壓縮數(shù)據(jù)結(jié)構(gòu),可以高效地存儲(chǔ)和操作布爾值集合。它提供了快速的集合運(yùn)算和聚合能力,在數(shù)據(jù)分析和查詢方面應(yīng)用廣泛。常見(jiàn)的使用場(chǎng)景包括:去重計(jì)數(shù)、過(guò)濾選擇和壓縮存儲(chǔ)。
Databend 中的 "BITMAP"
數(shù)據(jù)類型實(shí)現(xiàn)采用 "RoaringTreemap"
。與其他位圖實(shí)現(xiàn)相比,使用這種數(shù)據(jù)結(jié)構(gòu)可以提高性能并減少內(nèi)存使用。
如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
Docs | Data Types - BITMAP (https://databend.rs/doc/sql-reference/data-types/data-type-bitmap)
Docs | SQL Functions - Bitmap Functions (https://databend.rs/doc/sql-functions/bitmap-functions/)
Paper | Consistently faster and smaller compressed bitmaps with Roaring (https://arxiv.org/pdf/1603.06549.pdf)
使用列號(hào)直接查詢 CSV/TSV/NDJSON 文件
要想查詢 CSV/TSV/NDJSON 這類沒(méi)有 schema 的文件,以前需要將其加載到表中再進(jìn)行查詢。但是有時(shí)候用戶事先并不了解文件的具體情況(例如 CSV 文件有多少列),或者只是想做臨時(shí)的查詢。
為此,Databend 引入了列號(hào)(column position), 使用 "$N"
語(yǔ)法來(lái)表示第 "N"
列。CSV/TSV 文件所有列都視作 "String"
類型,如果某行的列數(shù)少于使用到的列號(hào),則會(huì)用空字符串進(jìn)行補(bǔ)齊。NDJSON 文件只有一列 "$1"
, 類型是 "Variant"
。
將這一能力與 COPY 語(yǔ)句結(jié)合使用,可以實(shí)現(xiàn)按需加載部分列,并在加載同時(shí)使用函數(shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
Docs | SELECT - Column Position (https://databend.rs/doc/sql-commands/query-syntax/query-select#column-position)
設(shè)計(jì)并實(shí)現(xiàn)全新哈希表以提高 Hash Join 性能
在過(guò)去,Databend 的哈希表是為了滿足聚合算子的需求而專門設(shè)計(jì)的,為了進(jìn)一步提高 Hash Join 的性能,我們著手設(shè)計(jì)并實(shí)現(xiàn)了一種專為 Hash Join 優(yōu)化的全新哈希表,通過(guò)并行化的設(shè)計(jì),使 Databend 能夠充分利用計(jì)算資源,同時(shí)在內(nèi)存控制方面也變得更為精準(zhǔn),避免了不必要的內(nèi)存開(kāi)銷,顯著提高了 Hash Join 的性能。
商業(yè)智能分析師 Mimoune Djouallah 評(píng)論稱:Databend 性能出色,在 8 核和 32GB 內(nèi)存的條件下,運(yùn)行 TPCH-SF10 只需要 25 秒。他甚至撰寫(xiě)了一篇題為《Databend and the rise of Data warehouse as a code (https://datamonkeysite.com/2023/05/22/databend-and-the-rise-of-data-warehouse-as-a-code/)》的博客文章。

如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
PR #11140 | feat(query): new hash table and parallel finalize for hash join (https://github.com/datafuselabs/databend/pull/11140)
AI Functions
Databend 在 v1.2.0 版本引入了強(qiáng)大的 AI 功能,實(shí)現(xiàn)了 Data 與 AI 的無(wú)縫融合,我們可以通過(guò) SQL 來(lái)實(shí)現(xiàn):
自然語(yǔ)言生成 SQL
Embedding 向量化并存儲(chǔ)
相似度計(jì)算
文本生成
自然語(yǔ)言生成 SQL
比如,如果你在一個(gè) nginx log 的數(shù)據(jù)庫(kù)中提問(wèn):"What are the top 5 IP addresses making the most requests",運(yùn)用 Databend 的 "AI_TO_SQL"
函數(shù),你將直接得到相應(yīng)的 SQL 語(yǔ)句,使用非常便捷。

Embedding 向量化
借助 Databend 的 "AI_EMBEDDING_VECTOR"
函數(shù),我們可以實(shí)現(xiàn)數(shù)據(jù)的向量化,并將其保存在 Databend 的 "ARRAY"
類型中。這樣一來(lái),Databend 事實(shí)上變成了一個(gè)向量數(shù)據(jù)庫(kù)。

相似度計(jì)算
在向量化表示下,可以計(jì)算兩個(gè)詞語(yǔ)、句子或文檔的相似度。 例如,假設(shè)我們有 "dog" 和 "puppy" 兩個(gè)詞語(yǔ)(也可以是句子),我們首先將它們各自轉(zhuǎn)化為向量 v1 和 v2,然后使用余弦相似度來(lái)計(jì)算它們的相似度。
Databend 中的 "COSINE_DISTANCE"
函數(shù)就是對(duì)這個(gè)公式的實(shí)現(xiàn)。

文本生成
文本生成在很多場(chǎng)景下非常有用,現(xiàn)在你可以在 SQL 中使用 "AI_TEXT_COMPLETION"
函數(shù)來(lái)完成。

目前,我們已經(jīng)利用以上 Data + AI 能力,對(duì) https://databend.rs 的所有文檔進(jìn)行了 Embedding 處理,并將其存儲(chǔ)到 Databend 中,構(gòu)建了一個(gè)智能問(wèn)答網(wǎng)站:https://ask.databend.rs 。 在這個(gè)網(wǎng)站上,你可以提問(wèn)關(guān)于 Databend 的任何問(wèn)題。
Databend 企業(yè)級(jí)特性
全新企業(yè)級(jí)特性上線啦!了解 Databend 如何推動(dòng)更具價(jià)值的數(shù)據(jù)分析服務(wù)。
計(jì)算列
計(jì)算列(Computed Columns)是一種通過(guò)表達(dá)式從其他列計(jì)算生成數(shù)據(jù)的列,使用計(jì)算列可以將表達(dá)式的數(shù)據(jù)存儲(chǔ)下來(lái)加快查詢速度,同時(shí)可以簡(jiǎn)化一些復(fù)雜的查詢的表達(dá)式。計(jì)算列包括存儲(chǔ)(STORED)和虛擬(VIRTUAL)兩種類型。
存儲(chǔ)計(jì)算列在每次插入或更新時(shí)生成數(shù)據(jù)并存儲(chǔ)在磁盤,在查詢時(shí)不需要重復(fù)計(jì)算,可以更快的讀取數(shù)據(jù)。
虛擬計(jì)算列不存儲(chǔ)數(shù)據(jù),不占用額外的空間,在每次查詢時(shí)實(shí)時(shí)進(jìn)行計(jì)算。
計(jì)算列對(duì)讀取 JSON 內(nèi)部字段的數(shù)據(jù)特別有用,通過(guò)將常用的內(nèi)部字段定義為計(jì)算列可以大大減少每次查詢過(guò)程中提取 JSON 數(shù)據(jù)的耗時(shí)操作。例如:
如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
Docs | CREATE TABLE - COMPUTED COLUMNS (https://databend.rs/doc/sql-commands/ddl/table/ddl-create-table#computed-columns)
VACUUM TABLE
"VACUUM TABLE"
命令通過(guò)從表中永久刪除歷史數(shù)據(jù)文件來(lái)釋放存儲(chǔ)空間,有助于優(yōu)化系統(tǒng)性能。刪除的文件包括:
與表相關(guān)的快照及其關(guān)聯(lián)的 segments 和 blocks 。
孤立文件。在 Databend 中,孤立文件指不再與該表關(guān)聯(lián)的快照、segments 和 blocks 。孤立文件可能由各種操作和錯(cuò)誤生成,例如在數(shù)據(jù)備份和還原期間,并且隨著時(shí)間的推移會(huì)占用寶貴的磁盤空間并降低系統(tǒng)性能。
如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
Docs | VACUUM TABLE (https://databend.rs/doc/sql-commands/ddl/table/vacuum-table)
Serverless Background Service
Databend 的內(nèi)置存儲(chǔ)引擎 "FuseTable"
是一種與 Apache Iceberg 類似的日志結(jié)構(gòu)表,在數(shù)據(jù)持續(xù)寫(xiě)入的過(guò)程中,需要定期執(zhí)行表壓縮、重聚類和清理以合并小數(shù)據(jù)塊。小數(shù)據(jù)塊合并的過(guò)程會(huì)涉及按聚類鍵排序數(shù)據(jù)或清理不需要的分支等階段。
為了自動(dòng)化執(zhí)行這一過(guò)程需要使用不同的驅(qū)動(dòng),增加了基礎(chǔ)設(shè)施的復(fù)雜性。而且必須部署和維護(hù)其他服務(wù)來(lái)觸發(fā)驅(qū)動(dòng)事件。為簡(jiǎn)化這一過(guò)程,Databend 設(shè)計(jì)并實(shí)現(xiàn)了 Serverless Background Service ,能自動(dòng)發(fā)現(xiàn)數(shù)據(jù)寫(xiě)入之后需要壓縮、重排序、清理的表,無(wú)需其他服務(wù),也無(wú)需用戶手動(dòng)操作,自動(dòng)觸發(fā)對(duì)應(yīng)表的維護(hù)工作,降低了用戶維護(hù)的負(fù)擔(dān),提升了表查詢的性能,也降低了數(shù)據(jù)在對(duì)象存儲(chǔ)中的成本。
Databend x 生態(tài)
Databend 的生態(tài)版圖得到了進(jìn)一步的完善。是時(shí)候?qū)?Databend 引入你的數(shù)據(jù)洞見(jiàn)工作流啦!
databend 的 Python 綁定
Databend 現(xiàn)在提供 Python 綁定,為在 Python 中執(zhí)行 SQL 查詢提供了新選擇。該綁定內(nèi)置 Databend ,無(wú)需部署實(shí)例即可使用。
從 databend 導(dǎo)入 "SessionContext"
并創(chuàng)建會(huì)話上下文即可開(kāi)始使用:
結(jié)果 DataFrame 可以使用?"to_py_arrow()"
或 "to_pandas()"
轉(zhuǎn)換為 PyArrow 或者 Pandas 格式:
現(xiàn)在行動(dòng)起來(lái),將 Databend 集成到你的數(shù)據(jù)科學(xué)工作流中。
databend · PyPI (https://pypi.org/project/databend/)
BendSQL - Databend 原生命令行工具
BendSQL 是一款專為 Databend 設(shè)計(jì)的原生命令行工具,現(xiàn)在已經(jīng)用 Rust 語(yǔ)言重寫(xiě),并且同時(shí)支持 REST API 和 Flight SQL 協(xié)議。
使用 BendSQL ,你可以輕松高效地管理 Databend 中的數(shù)據(jù)庫(kù)、表和數(shù)據(jù),并輕松執(zhí)行各種查詢和運(yùn)算。
我們期待與你分享更多關(guān)于 BendSQL 的更新!歡迎試用并給我們反饋。
Docs | SQL Clients - BendSQL (https://databend.rs/doc/sql-clients/bendsql)
Crates.io - bendsql (https://crates.io/crates/bendsql)
Github - datafuselabs/databend-client | Rust(https://github.com/datafuselabs/databend-client)
數(shù)據(jù)集成和 BI 服務(wù)
Apache DolphinScheduler
Apache DolphinScheduler 是一個(gè)分布式和可擴(kuò)展的開(kāi)源工作流協(xié)調(diào)平臺(tái),具有強(qiáng)大的DAG可視化界面。支持 30+ 的任務(wù)類型,包括像 Flink SQL、DataX、HiveCli 等。能夠高并發(fā)、高吞吐量、低延遲和穩(wěn)定地執(zhí)行百萬(wàn)個(gè)量級(jí)任務(wù),可以根據(jù)計(jì)劃時(shí)間(特殊日期范圍或特殊的日期列表)批量執(zhí)行任務(wù),而且在不影響工作流模板的情況下,工作流實(shí)例支持修改、回滾和重新運(yùn)行。

DolphinScheduler 現(xiàn)已支持 Databend 數(shù)據(jù)源,可以使用 DolphinScheduler 管理 DataX 任務(wù)實(shí)現(xiàn)從 MySQL 到 Databend 異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)同步。
Apache Flink CDC
Apache Flink CDC(Change Data Capture)是指 Apache Flink 使用基于 SQL 的查詢從各種來(lái)源捕獲和處理實(shí)時(shí)數(shù)據(jù)更改的能力。CDC 允許監(jiān)視和捕獲數(shù)據(jù)庫(kù)或流系統(tǒng)中發(fā)生的數(shù)據(jù)修改(插入、更新和刪除),并對(duì)這些更改進(jìn)行實(shí)時(shí)響應(yīng)。
Databend 現(xiàn)在提供 Flink SQL Connector (https://github.com/databendcloud/flink-connector-databend),可以將 Flink 的流處理能力與 Databend 集成。通過(guò)對(duì)連接器進(jìn)行配置,可以以流的形式從各種數(shù)據(jù)庫(kù)中捕獲數(shù)據(jù)更改,并將其載入到 Databend 中以進(jìn)行實(shí)時(shí)處理和分析。
如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
Docs | Loading Data with Tools - Flink CDC (https://databend.rs/doc/load-data/load-db/flink-cdc)
Tableau
Tableau 是一款流行的數(shù)據(jù)可視化和業(yè)務(wù)智能工具。它提供了直觀、交互式的方式來(lái)探索、分析和呈現(xiàn)數(shù)據(jù),幫助用戶更好地理解數(shù)據(jù)的意義和洞察。
參考 Other Databases (JDBC) (https://help.tableau.com/current/pro/desktop/en-us/examples_otherdatabases_jdbc.htm),將 databend-jdbc 放置在 Tableau 驅(qū)動(dòng)路徑下,就可以使用 Tableau 分析 Databend 中的數(shù)據(jù)。

如果你想要了解更多信息,請(qǐng)查看下面列出的資源。
Blog | Databend x Tableau?(https://databend.rs/blog/2023-06-01-tableau)
下載使用
如果你對(duì)我們新版本功能感興趣,歡迎訪問(wèn) https://github.com/datafuselabs/databend/releases/tag/v1.2.0-nightly 頁(yè)面查看全部的 changelog 或者下載 release 體驗(yàn)。
如果你還在使用舊版本的 Databend,我們推薦升級(jí)到最新版本,升級(jí)過(guò)程請(qǐng)參考:
https://databend.rs/doc/operations/upgrade
意見(jiàn)反饋
如果您遇到任何使用上的問(wèn)題,歡迎隨時(shí)通過(guò) GitHub issue 或社區(qū)用戶群中提建議
GitHub: https://github.com/datafuselabs/databend/