Apache Doris(Incubating) 0.12.0 已经发布了,这是 Doris 进入 Apache 孵化器后第四个正式版本。

此版本带来的新功能包括:

全新的存储格式SegmentV2

此版本对底层的数据文件格式进行了完全重构。原有的存储格式是类似orcfile的列存格式,存在诸多的设计问题,如按字节流的读取方式效率低下、大量随机读问题、不支持字典压缩、不支持数据块的缓存、结构不清晰难以扩展等。

新的SegmentV2存储格式参考了Parquet的设计思路,引入了基于Page的最小数据存储单元,并将数据文件划分为数据区、索引区和元数据区三个部分。针对不同的列类型、索引格式实现了不同的Page编码方式,显著提升了数据的读写效率,并增强了数据格式的可扩展性。

在SegmentV2的基础上,0.12版本实现了如下重要功能:

· 字典压缩编码

原有的存储格式中,字符串类型都是采用Plain Text的格式进行存储的,这种朴素的方式在某些低基数字符串列的场景下,会极大地浪费存储空间。

SegmentV2通过Dictionary Page,实现了字典压缩编码,在不同基数的情况下可以节省数倍的存储空间。

· 基于Bitmap的二级索引

之前版本的Doris只支持基于BloomFilter的二级索引,只能过滤block级别的数据,并且在某些低基数列上的效果欠佳。在0.12版本中,支持了基于Bitmap的倒排索引,可以在任意Key列上创建。通过倒排索引,可以更精准地进行数据查询和检索。测试中,通过倒排索引,可以提升数倍的查询性能。

· Page Cache和内存表

Page是SegmentV2格式中,最小的数据单元,一个Page会被完整的解压并读取到内存中。Page一旦生成,是不可变更的,根据这个特性,此版本增加了Page Cache功能,通过在内存中缓存解压后的Page数据,可以避免大量的重复IO,降低磁盘IO。

同时基于Page Cache功能,也提供了一种内存表的实现方式。用户可以在建表时指定表的属性“in_memory”=“ true”,则系统会尽可能的保证该表的数据Page保留在Page Cache中,从而提升数据的访问效率。

· 延迟物化

全新的存储格式提供了更清晰的数据读取逻辑,使得Doris能够支持延迟物化这种更高效的数据读取能力。延迟物化的含义,举例来说,当用户需要读取A、B、C三列的数据,并且在A列上有过滤条件时,系统会先读取A列并进行过滤,根据过滤后的行号再去读取B、C两列,这样可以显著减少B、C两列的读取数据量。根据测试,在某些场景下,延迟物化功能可以带来几十倍的性能提升。

Spark on Doris

此版本实现了Spark Doris Connector,用户可以直接通过Spark对Doris中存储的数据进行查询。从Doris的角度看,将其数据引入Spark,可以使用Spark一系列丰富的生态产品,扩宽了Doris的想象力,也使得Doris和其他数据源的联合查询成为可能。

明细模型上的物化视图功能

在之前的版本中,Doris仅支持在聚合模型(Aggregate Key)上创建上卷表(Rollup),而如果用户创建的是明细模型(Duplicate Key)表,则无法使用该功能。在新版本中,Doris支持了在明细模型上创建物化视图的功能。该功能使得用户可以更加灵活地进行数据建模。

当前该功能仅支持SUM、MIN、MAX三种上卷聚合方式,更多的聚合方式如HLL、BITMAP_UNION、AVG、COUNT等将在后续的3位版本迭代中陆续推出。

支持ORC格式数据的导入

在0.11版本中支持了Parquet文件格式,而在0.12版本中,进一步支持了ORC格式的数据文件的导入,进一步降低了用户的使用门槛,可以更加方便地从不同数据源中导入数据。

动态分区

在之前的版本中,数据表的分区(Partition)需要手动创建。对于一些例行任务场景,用户需要维护额外的脚本或服务来定期地增加新的分区或删除旧的分区。在新版本中,支持了动态分区的定义和创建,分区可以按照定义定期地进行创建和删除,用户无需再担心因分区未及时创建而导致数据无法导入的问题了。

差集、交集、Grouping Set

0.12版本支持了更丰富的SQL语法和算子。其中差集(Expect)和交集(Intersect)算子避免了用户通过改写Join来获取想要的结果,同时也带来了查询性能的提升。

Grouping Set功能能够让用户更便捷地通过简单的SQL语法获取不同纬度的聚合查询结果,进一步降低了SQL的复杂度。

更多增强特性

除了以上主要功能更新外,0.12版本也做了诸多性能和功能方面的改进。

· 插件框架和审计日志插件

0.12版本分别实现了FE端和BE端的插件框架。该框架支持用户对一些功能组件进行定制化的开发和安装。目前该功能还处于实验阶段。系统提供了一个FE端的审计日志插件供使用,通过该插件,用户可以直接通过Doris的查询能力来分析Doris系统内的查询请求情况。

· 显著提升了Doris On Elasticsearch的性能

通过更精细的谓词下推、以及API接口的改进,显著提升了Doris On ES性能。

· Bitmap聚合方式支持64位整型

Bitmap聚合方式从支持32位整型扩展到了64位,使得可以在更多场景实现快速精确去重能力。

· 更多的列类型转换

支持Float转Double,Date和Datetime的互转、Integer转Date/Datetime,以及Varchar转换为整型、浮点和日期类型等。通过更丰富的列类型转换,使得用户能够更灵活地应对业务场景的变更。

· 基于NIO模型的MySQL协议连接层

通过XNIO框架(https://xnio.jboss.org/),Doris的连接层现在可以支持百万量级的连接请求。新的连接层框架可以在高并发场景降低Doris在连接协议上的开销和负载。

该功能可以通过添加FE的配置项:mysql_service_nio_enabled=true开启。

此外官方还透露,下一版本将支持更好的物化视图功能、Spark导入功能,并且对查询引擎性能做进一步地优化。

mysqlsql varchar类型只取前四个_Apache Doris0.12.0 发布,进入 Apache 孵化器后第四个正式版本...相关推荐

  1. mysql数据库:varchar类型可以存储多少个汉字,多少个数字

    在设计数据库的时候会考虑给字段设置什么类型,设置多少长度合适,之前一直认为varchar(2)可以存储一个汉字,或者一个数字,通过今天无意间的查询,发现了这个错误,来记下来 其实varchar类型可以 ...

  2. MySQL中varchar类型在5.0.3后的变化

    1.mysql varchar类型变化: mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 ...

  3. sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议

    前言 本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助. 1.查询SQL尽量不要使用select *,而是select具体字段. 反例子: sel ...

  4. mysql5.0varchar_MySQL中varchar类型在5.0.3后的变化

    1.mysql varchar类型变化: mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 ...

  5. MySql中的varchar类型

    1.varchar类型的变化 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以 ...

  6. MySql学习之varchar类型

    MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定),在 MySQL5.0以上的版本中,varchar数据 ...

  7. MySQL之char、varchar类型简析

    我们都知道,MySQL中关于字符,有char和varchar两种常用的类型,可能在平时的使用过程中,大家不会去关心这两种类型的区别,只是会用就可以了,或者说看到过一些它们的区别,但是没有时间去测试,今 ...

  8. MySQL中对varchar类型排序问题的解决

    mysql数据库,把数值型的写成varchar类型 ,其实应该建为int的.因为我只允许输出数字.发现排序有问题.下面简单说一下MySQL的varchar排序问题. 下面,我从数据库里面以number ...

  9. mysql相同姓名只显示第一条_SQL中遇到多条相同内容只取一条的最简单实现方法...

    SQL中经常遇到如下情况,在一张表中有两条记录基本完全一样,某个或某几个字段有些许差别, 这时候可能需要我们踢出这些有差别的数据,即两条或多条记录中只保留一项. 如下:表timeand 针对time字 ...

最新文章

  1. 【经典算法必读】图片分类系列之(一): 你真的了解图片分类(Image Classification)吗?...
  2. CSS3 里添加自定义字体
  3. linux操作系统分析实验—基于mykernel的时间片轮转多道程序实现与分析
  4. linux检查是否安装proc编译器,编译安装 GCC 4.9并验证使用
  5. c语言opencv所用库函数,Py之cv2:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略...
  6. 一个java小程序运行结果图_编写以下程序,并上传源代码和运行结果截图,附件中上传java源程序。...
  7. 创造思维方法训练_数学思维方法训练课程:每日一题11.24
  8. jzoj3854-分组【树状数组,线段树】
  9. 违规停放共享单车 319人被纳入限制骑行“黑名单”
  10. 第四周课程总结实验报告二
  11. BZOJ 3897: Power
  12. 黑客购买恶意软件攻击航空航天和交通行业,潜伏5年+
  13. python读取qq客户端消息_使用 Python 读取 QQ 消息
  14. 图像缩放之双三次插值法
  15. 插入移动硬盘提示格式化怎么办?数据还有机会找回吗
  16. shell子串截取的三种用法:
  17. 水瓶座的女人,生活中不只需要代码(转帖)
  18. vue项目中扫码枪收款
  19. 产品引流如何设计引流诱饵?引流如何选择诱饵?
  20. 李文卓:揭秘美丽说数据体系建设三部曲

热门文章

  1. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...
  2. 谈题库系统(Samplx)项目之进展
  3. 模生物嗅觉的神经算法,能让电脑芯片识别气味
  4. 2019年全国各地房价排名50强
  5. OpenCV的cv::cvtColor函数之“CV_RGB2GRAY”: 未声明的标识符错误解决方法
  6. Kotlin与Java的几种单例模式
  7. 字节流和字符流复制文件内容实例
  8. mybatis框架使用generator的快速搭建
  9. 018_Spring+ActiveMQ(消息中间件)
  10. 052_CSS3 appearance属性