Databend 开源周报第 122 期
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。
What's On In Databend
探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。
支持链式函数调用
Databend 现在提供实验性的 SQL 方言,以支持链式函数调用。
如果想要尝试这一特性,请执行下面 SQL 语句:
set sql_dialect = 'experimental';
对应的语法如下:
🐳 :) with t(f) as (select '11|open|22|ai|33|is nothing without sam'.split('|')
.array_filter(x -> try_cast(x as int) is not null ).array_apply(x -> x::int ).array_apply(x -> x::int64 ))
select f.array_reduce('sum'), f.array_reduce('max'), f.array_reduce('min') from t;
┌──────────────────────────────────────────────────────────────────────────┐
│ array_reduce(f, 'sum') │ array_reduce(f, 'max') │ array_reduce(f, 'min') │
│ Nullable(Int64) │ Nullable(Int64) │ Nullable(Int64) │
├────────────────────────┼────────────────────────┼────────────────────────┤
│ 66 │ 33 │ 11 │
└──────────────────────────────────────────────────────────────────────────┘
如果您想了解更多信息,欢迎联系 Databend 团队,或查看下面列出的资源。
Code Corner
一起来探索 Databend 和周边生态中的代码片段或项目。
使用 Query ID 和 Nginx 进行负载均衡
Databend JDBC 在每次发起请求都会携带一个名为 X-DATABEND-QUERY-ID
的 HTTP Header,如果想要实现同一客户端,多个请求分散打到不同后端实例的效果,可以基于该 HTTP Header 来做 Nginx 的 Hash Key,以达到负载均衡的效果。
下面的 Nginx 配置文件展示了如何为端口分别位于 8000 和 8009 的两个 databend-query 实例实现基于 Query ID 的负载均衡:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$http_x_databend_query_id "$time_local" $host "$request_method $request_uri $server_protocol" $status $bytes_sent "$http_referer" "$http_user_agent" $remote_port $upstream_addr $scheme $gzip_ratio $request_length $request_time $ssl_protocol "$upstream_response_time"';
access_log /opt/homebrew/var/log/nginx/access.log main;
map $http_x_query_id $backend {
default backend1;
}
upstream backend1 {
hash $http_x_databend_query_id consistent;
server localhost:8000;
server localhost:8009;
}
server {
listen 8085;
location / {
proxy_pass http://$backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-DATABEND-QUERY-ID $http_x_databend_query_id;
}
}
}
Highlights
以下是一些值得注意的事件,也许您可以找到感兴趣的内容。
- 支持
QUALIFY
子句 。 CONNECTION
支持载入指定role_arn
的访问凭据。- MERGE INTO 分离 matched-only 和 insert-only Pipeline 。
- 阅读文档 Docs | Stream 了解 Databend 的最新企业级特性。
What's Up Next
我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。
支持使用贪心算法计算 JOIN ORDER
目前 Databend 使用动态规划完成 JOIN ORDER 计算。如果 DPhpy 在这一过程中花费太多时间,有必要从动态规划算法切换到贪婪算法以最小化整体查询时间。
Issue #13884 | Feature: Support join order greedy algorithm
如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运!
Changelog
前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。
地址:https://github.com/datafuselabs/databend/releases
Contributors
非常感谢贡献者们在本周的卓越工作。
Connect With Us
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。