Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

官方地址:https://databend.rs/

Databend 特性

表现
  • 对象存储上超快的数据分析。
  • 利用数据级并行性和指令级并行性技术最佳性能。
  • 无需构建索引,无需手动调整,也无需计算分区或分片数据。
数据处理
  • SELECT支持、INSERT、DELETE、UPDATE、 、REPLACE、COPY等原子操作MERGE。
  • 提供时间旅行和多目录(Apache Hive / Apache Iceberg)等高级功能。
  • 支持摄取各种格式的半结构化数据,例如 CSV、JSON 和 Parquet。
  • 支持ARRAY、MAP 和 JSON等半结构化数据类型。
  • 支持类似Git的MVCC存储,方便历史数据的查询、克隆和恢复。
对象存储
  • 支持各种对象存储平台。单击此处查看支持平台的完整列表。
  • 允许即时弹性,使用户能够根据其应用程序需求进行扩展或缩小。

Databend 架构

Databend 的架构由:元服务层、查询层 和 存储层。

元服务层

Databend通过其元服务层有效支持多个租户,这在系统中起着至关重要的作用:

  • 元数据管理:处理数据库、表、集群、事务等的元数据。
  • 安全性:管理安全环境的用户身份验证和授权。
查询层

Databend 中的查询层处理查询计算,由多个集群组成,每个集群包含多个节点。每个节点是查询层的核心单元,由以下部分组成:

  • Planner:使用以下元素制定 SQL 语句的执行计划关系代数,包含投影、过滤器和限制等运算符。
  • 优化器:基于规则的优化器应用预定义的规则,例如“谓词下推”和“修剪未使用的列”,以实现最佳查询执行。
  • 处理器:按照 Pull&Push 方法,根据规划器指令构建查询执行管道。处理器互连,形成可以跨节点分布的管道以增强性能。
存储层

Databend 采用 Parquet(一种开源列式格式),并引入了自己的表格式来提高查询性能。主要特点包括:

  • 二级索引:加速跨各个分析维度的数据定位和访问。
  • 复杂数据类型索引:旨在加速半结构化数据等复杂类型的数据处理和分析。
  • 分段:Databend有效地将数据组织成分段,提高数据管理和检索效率。
  • 集群:在段内采用用户定义的集群键来简化数据扫描。
Databend 社区向数据专业人士、学生以及任何对云数据仓库充满热情的人开放。欢迎点击下面的链接来参与其中:

Slack: https://link.databend.rs/join-slack
GitHub: https://github.com/datafuselabs/databend
Twitter: https://twitter.com/DatabendLabs
LinkedIn: https://www.linkedin.com/company/datafuselabs
YouTube: @DatabendLabs"target="_blank"">https://www.youtube.com/@DatabendLabs

服务部署

Docker and Local Deployments:https://databend.rs/doc/deploy/deploying-local

Docker Hub: https://hub.docker.com/r/datafuselabs/databend

docker run \
    -p 8000:8000 \
    -p 3307:3307 \
    -v meta_storage_dir:/var/lib/databend/meta \
    -v query_storage_dir:/var/lib/databend/query \
    -v log_dir:/var/log/databend \
    -e QUERY_DEFAULT_USER=databend \
    -e QUERY_DEFAULT_PASSWORD=databend \
    -e QUERY_STORAGE_TYPE=s3 \
    -e AWS_S3_ENDPOINT=http://172.17.0.2:9000 \
    -e AWS_S3_BUCKET=databend \
    -e AWS_ACCESS_KEY_ID=ROOTUSER \
    -e AWS_SECRET_ACCESS_KEY=CHANGEME123 \
    datafuselabs/databend

Deploying a Cluster on Kubernetes: https://databend.rs/doc/deploy/cluster/deploying-databend-on-kubernetes

databend.yaml

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: databend-cm
  annotations:
    kubesphere.io/creator: admin
data:
  databend.query.config.file: ''
  databend.query.storage.type: 's3'
  databend.default.user: 'databend'
  databend.default.password: 'databend'
  databend.aws.s3.endpoint: ''
  databend.aws.s3.bucket: 'databend'
  databend.aws.access-key: ''
  databend.aws.access-secret: ''
  databend.minio.enabled: false
---
apiVersion: v1
kind: Service
metadata:
  name: databend-svc
  annotations:
    kubesphere.io/alias-name: Databend 数仓服务
    kubesphere.io/description: Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓
spec:
  ports:
    - name: tcp-8000
      port: 8000
      protocol: TCP
      targetPort: 8000
    - name: tcp-9000
      port: 9000
      protocol: TCP
      targetPort: 9000
    - name: tcp-3307
      port: 3307
      protocol: TCP
      targetPort: 3307
    - name: tcp-8124
      port: 8124
      protocol: TCP
      targetPort: 8124
  selector:
    app: databend
  type: NodePort
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: databend-deploy
  annotations:
    kubesphere.io/alias-name: Databend 数仓服务
    kubesphere.io/description: Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓
spec:
  replicas: 1
  selector:
    matchLabels:
      app: databend
  template:
    metadata:
      labels:
        app: databend
    spec:
      containers:
        - name: databend
          image: 'datafuselabs/databend'
          ports:
            - name: http-8000
              containerPort: 8000
              protocol: TCP
            - name: http-9000
              containerPort: 9000
              protocol: TCP
            - name: http-3307
              containerPort: 3307
              protocol: TCP
            - name: http-8124
              containerPort: 8124
              protocol: TCP
          env:
            - name: QUERY_CONFIG_FILE
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.query.config.file
            - name: QUERY_STORAGE_TYPE
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.query.storage.type
            - name: QUERY_DEFAULT_USER
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.default.user
            - name: QUERY_DEFAULT_PASSWORD
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.default.password
            - name: AWS_S3_ENDPOINT
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.aws.s3.endpoint
            - name: AWS_S3_BUCKET
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.aws.s3.bucket
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.aws.access-key
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.aws.access-secret
            - name: MINIO_ENABLED
              valueFrom:
                configMapKeyRef:
                  name: databend-cm
                  key: databend.minio.enabled
          imagePullPolicy: Always
作者:Jeebiz  创建时间:2023-12-07 11:30
最后编辑:Jeebiz  更新时间:2024-07-10 22:56