Databend 是一款开源的云原生数据仓库,专为云架构设计。它将存储和计算彻底分离,主要利用云上的对象存储服务(如阿里云OSS、亚马逊S3等)来存放数据,而计算资源则可以独立地按需弹性伸缩。这意味着你不用提前规划硬件,只为实际使用的计算和存储资源付费,极大地降低了成本和管理复杂度。
为了方便你快速了解,下面是它的核心特性和应用场景:
| 特性类别 | 具体说明 |
|---|---|
| 核心特性 | 存储与计算分离、向量化查询与极致性能、完整的SQL支持与生态兼容、半结构化数据支持 |
| 典型场景 | 实时数据分析与日志处理、交互式BI与报表、数据湖分析、作为其他应用的嵌入式分析引擎 |
🛠️ 如何安装Databend
根据你的使用场景,主要有以下几种安装方式:
1. 单机极速体验(推荐新手)
使用Docker是最快的方式,一条命令就能启动一个单机版Databend:
dockerrun-d--namedatabend-p8000:8000 datafuselabs/databend启动后,你可以通过http://localhost:8000进行连接。
2. 本地开发模式
如果你想在命令行里像使用DuckDB一样快速分析本地文件,可以使用bend-local工具。它无需部署服务,非常适合数据处理和即席查询。
# 下载二进制文件并重命名mvdatabend-query bend-localchmod+x bend-local# 分析一个在线CSV文件./bend-local--query"SELECT * FROM 'https://example.com/data.csv' (FILE_FORMAT => 'csv')"3. 生产环境部署
生产环境通常需要部署独立的元数据服务(databend-meta)和查询服务(databend-query)。推荐使用Kubernetes配合官方Helm Chart进行部署,便于管理高可用集群。
🐍 通过Python集成开发
Python是连接和扩展Databend的主要语言之一,主要通过两个官方库实现。
1. 使用databend-py进行数据操作
这是Databend官方的Python驱动,用于连接Databend服务并执行SQL。
# 安装驱动pip install databend-py# 连接并查询fromdatabend_pyimportClient client=Client(host='localhost',# 或你的Databend Cloud服务地址port=8000,user='root',password='')# 执行查询,返回结果为元组列表result=client.execute("SELECT number FROM numbers(5)")print(result)# 输出: [(0,), (1,), (2,), (3,), (4,)]# 插入数据client.execute("CREATE TABLE IF NOT EXISTS test (id INT, value VARCHAR)")client.execute("INSERT INTO test VALUES",[(1,'a'),(2,'b')])2. 使用databend-udf扩展函数
如果你想在Databend中使用Python编写自定义函数,可以使用databend-udf库来创建UDF服务。
# 安装UDF库pip install databend-udf# 创建UDF (udf_server.py)fromdatabend_udfimport*@udf(input_types=["INT","INT"],result_type="INT")defmy_gcd(x:int,y:int)->int:whiley!=0:x,y=y,x%yreturnxif__name__=='__main__':# 启动一个UDF服务server=UDFServer("0.0.0.0:8815")server.add_function(my_gcd)server.serve()# 服务启动后,需要在Databend中注册此函数在Databend中注册并使用这个Python函数:
CREATEFUNCTIONmy_gcd(INT,INT)RETURNSINTLANGUAGEpythonHANDLER='my_gcd'ADDRESS='http://你的服务器IP:8815';SELECTmy_gcd(12,18);-- 返回 6💎 总结与建议
总的来说,Databend凭借其云原生架构,在弹性、成本和管理便捷性上优势明显。你可以根据自己的需求选择合适的安装和集成方式:
- 学习和轻量使用:从Docker或
bend-local开始。 - 生产环境:规划基于Kubernetes的集群部署。
- 应用集成:使用
databend-py驱动进行连接。 - 功能扩展:通过
databend-udf用Python扩展自定义函数。