1、新版本新特性介绍
StarRocks是一种支持实时分析和查询的OLAP(联机分析处理)数据库,3.0版本于2023年3月31日发布。该版本引入了以下变化和新特性:
-
支持存算分离架构,数据可以持久化到远程对象存储/HDFS中,并使用本地盘作为缓存。这种架构可以更灵活地增加和删除节点,同时支持表级别的缓存生命周期管理。
-
升级了BDB库,但不支持回滚版本。如果需要降级,则必须使用3.0版本之后的BDB库,并按照特定步骤进行操作。
除此之外,StarRocks 3.0还提供了更多的查询语句和优化,包括列式存储引擎、向量化执行和基于内存的计算等方面的改进,以便更好地支持实时分析和查询。
2、新特性解读(选取了平常用的比较多的功能)
2.1 存算分离架构
StarRocks 3.0 版本最重要的变化是架构上支持了存算分离模式。在该模式下数据将会持久存储在远程对象存储或 HDFS 上,而将本地磁盘作为缓存使用。存算分离架构下用户可以动态添加或删除计算节点,实现秒级的扩缩容能力,并支持表级别的缓存生命周期管理;在本地缓存命中的情况下,可以获得与存算一体架构相同的性能。
2.2 支持表级别的缓存生命周期管理
StarRocks 3.0支持表级别的缓存生命周期管理。可以对某个表或者某个分区的缓存进行统一管理,比如指定缓存的最大空间、缓存时间、清理策略等。这种灵活的管理方式可以更好地适应数据访问模式的变化,提高命中率和查询性能。
2.3 升级了BDB库
在StarRocks 3.0中,BDB库也进行了升级。新版本的BDB引入了更多的特性和优化,比如多版本并发控制(MVCC)、压缩算法、空间优化等。然而,需要注意的是,StarRocks 3.0不支持回滚到旧版本的BDB库,如果需要降级,则必须使用3.0版本之后的BDB库,并按照特定步骤进行操作。
2.4 全新 RBAC 权限框架
新版本提供了完整的 RBAC(Role-based Access Control) 权限管理支持,在兼容之前的 IBAC(Identity-based Access Control) 模型基础上,RBAC 模型可以通过角色来管理一组对象权限,然后把权限赋给对应的用户,这样极大降低授权的管理成本,也可以更灵活方便的修改/回收权限。
您可以通过 StarRocks的预制角色db_admin, cluster_admin, user_admin, public 给系统管理员配置基础的权限模版。也可以自定义角色,并通过角色的继承来满足不同组织结构的需求。同时,StarRocks 支持了默认激活角色(Default Role),在用户拥有多个角色时,推荐默认激活最小角色,如遇特殊场景,手动激活高级角色,从而实现最小权限原则,防止误用。
3.0 版本新增了 40+ 种权限项,覆盖了物化视图,资源组,UDF 等多种对象,也支持了对 External catalog 进行统一的权限管理,可以像管理内部表一样管理外表的各类权限。
2.5 Primary Key 支持更丰富的 Update/Delete 语法
Primary Key 在 2.x 版本中已经逐渐打磨成熟,但更新的语法还是以导入的模式进行 Upsert 操作为主,在 3.0 版本中支持了更丰富的 update/delete 语法,包括使用 CTE(Common table expression) 和多表的引用。例如你可以通过一个 with 语句计算出子查询结果,然后选择其中的部分列来更新到另一张表中,这种通用 Update 语句可以让替换 Oracle 等传统数据库变得更加容易。
2.6 导入自动创建分区
为了提升分区创建的易用性和灵活性,StarRocks 自 3.0 版本起支持分区表达式和导入自动创建分区的功能。您只需要在包含时间函数的分区表达式中,指定一个 DATE 或者 DATETIME 类型的分区列,以及指定分区粒度(年、月、日或小时)。借助这种使用表达式(date_trunc/time_slice)分区方式,您不需要预先创建出大量分区,StarRocks 会在写入新数据时根据实际数据自动创建对应分区。
总之,StarRocks 3.0通过存算分离架构、缓存管理和BDB升级等一系列改进,为用户提供了更加高效、灵活和可靠的OLAP数据库解决方案,有望在实时分析和查询场景中得到广泛应用。