上周,Apache Doris(incubating) 通过社区投票,成功发布 0.10.0 版本。
Doris 是什么
Doris(原百度 Palo)是一款基于大规模并行处理技术的分布式 SQL 数据库,由百度在开源,进入 Apache 孵化器。
Doris 的主要特性
1.兼容MySQL协议,支持包括多表Join、子查询、窗口函数、CTE在内的丰富的SQL语法。支持诸多常见BI报表系统,能极大降低用户的学习和迁移成本。
2.支持高并发点查询和高吞吐的多维分析查询场景。通过分区裁剪、预聚合、谓词下推、向量化执行等技术,以及高效的列式存储引擎即数据压缩算法,满足不同业务场景下的延迟和吞吐需求。
3. 特有的数据预聚合功能。支持预聚合表和基准表同步原子更新,为报表场景提供更快速的查询响应。
4.提供强大的扩展性和高可用特性。所有数据都采用多副本的方式保证数据的高可靠。同时提供全自动的副本选择、均衡和修复功能,为用户提供7*24 小时的高可用数据库系统。
5.提供友好的在线表结构变更功能,能有效应对业务上的需求变化。
6. 提供两级数据划分功能以及分层存储功能。用户可以更灵活的对数据进行管理和维护。
Doris在百度内部已应用于包括百度凤巢、百度统计等200多个业务线。最大单一业务数据量超过500TB。同时在百度智能云和toB业务中也获得了高度认可。自开源以来,已有包括小米、美团、搜狐、新浪微博、瓜子、链家、上海绎维、零售魔方、量化派在内的十多家公司将 Doris 使用在生产环境中。
0.10.0版本新特性一览
1. 例行导入支持
用户可以通过简单的命令,配置一个例行导入作业。该作业会自动从指定数据源将数据源源不断的导入到 Doris 系统中。Doris 当前支持对 Kafka 系统配置例行导入作业。一个简单的示例如下:
CREATE ROUTINE LOAD example_db.test1 ON example_tbl
COLUMNS(k1, k2, k3, v1, v2, v3 = k1 * 100),
WHERE k1 > 100 and k2 like "%doris%"
PROPERTIES
(
"desired_concurrent_number"="3",
"max_batch_interval" = "20",
"max_batch_rows" = "300000",
"max_batch_size" = "209715200"
)
FROM KAFKA
(
"kafka_broker_list" = "broker1:9092,broker2:9092,broker3:9092",
"kafka_topic" = "my_topic",
"kafka_partitions" = "0,1,2,3",
"kafka_offsets" = "101,0,0,200"
);
Doris 提供对 Kafka 数据Exactly Once的导入语义保证,可以做到对数据的不丢不重。不仅如此,Doris 还支持在例行导入作业中,对源数据进行数据转换或条件过滤,使得用户能够方便的导入未清理的数据。同时,例行导入功能可以通过调整并发数和子任务的处理时间,达到50-100MB/s 的导入吞吐,或者秒级的导入延迟。
更多细节,可以参阅 [例行导入文档]
(http://doris./Docs/cn/administrator-guide/load-data/routine-load-manual.html)
2. Doris On Elasticsearch
Doris 现在可以通过外部表的方式,直接访问 Elasticsearch。一个简单的示例如下:
CREATE EXTERNAL TABLE `es_table` (
`id` bigint(20) COMMENT "",
`k1` bigint(20) COMMENT "",
`k2` datetime COMMENT "",
`k3` varchar(20) COMMENT "",
`k4` varchar(100) COMMENT "",
`k5` float COMMENT ""
) ENGINE=ELASTICSEARCH
PARTITION BY RANGE(`id`)
()
PROPERTIES (
"host" = "http://192.168.0.1:8200,http://192.168.0.2:8200",
"user" = "root",
"password" = "root",
"index" = "tindex”,
"type" = "doc"
);
Doris 提供了一个全新的esquery()函数,可以直接在其中输入 ES 的 Json 查询语法,使得没写 SQL 无法表达的 ES 查询得以实现:
select * from es_table where esquery(k4, '{
"geo_shape": {
"location": {
"shape": {
"type": "envelope",
"coordinates": [
[
13,
53
],
[
14,
52
]
]
},
"relation": "within"
}
}
}');
借助 Doris 强大的 MPP 查询框架,该功能为用户提供一站式的数仓服务。
更多细节可参阅 [Doris On ES 文档]
(http://doris./Docs/cn/extending-doris/doris-on-es.html)
3. UDF/UDAF
Doris 现在支持 UDF/UDAF。用户可以通过 C++ 语言变现自定义函数来扩展 Doris 的查询功能。
更多细节可以参阅 [UDF 文档]
(http://doris./Docs/cn/extending-doris/user-defined-function.html)
4. 地理位置函数
通过引入Google S2 函数库,Doris 现在支持了丰富的地理位置函数。
更多细节可以参阅 [地理位置函数文档]
(http://doris./Docs/cn/sql-reference/sql-functions/spatial-functions/index.html)
5. 新的文档框架
在一版本中,Doris 重新组织了文档架构。目前所有的文档都可以在docs/目录下找到。同时,用户可以通过简单的命令在本地不是 Doris 文档站点,方便文档的查找和阅读。
6. 稳定性和易用性改进
修复了大量 BUG,以及多项易用性的提升。帮助用户更好的在生产环境使用 Doris。
后续版本
目前也有越来越多的开发者加入Doris社区。Doris团队非常感谢用户的支持,将一如既往的努力,推进Doris向着更开放、合作、商业化更友好、周边工具更丰富的方向不断前进。
在6月29号的 Doris 线下沙龙中,我们已经对 Doris 0.11.0 版本进行了预览。包括重构的存储引擎框架、统一的后端导入框架、对 Spark 生态的打通等众多重量级功能将很快跟大家见面,敬请期待!
同时,我们也维护了 Doris 的百度分支。百度分支将会与社区分支保持同步,并更快速的修复 Bug,且更加频繁的进行版本发布。用户可以将百度分支的发布版本用于生产环境以保证更加稳定的线上服务。
欢迎扫码关注:
Apache Doris(incubating)官方公众号
相关链接:
Apache Doris官方网站:
http://doris.
ApacheDorisGithub:
/apache/incubator-doris
Apache Doris Wiki:
/apache/incubator-doris/wiki
Apache Doris开发者邮件组:
dev@
本文分享自微信公众号 - ApacheDoris(gh_80d448709a68)。
如有侵权,请联系 support@ 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。