StarRocks目前有哪些缺点?

StarRocks 目前有哪些不支持的场景?比较中立的说有哪一些缺点呢?
查看论坛目前StarRocks vs Clickhouse vs TiDB 等等,在clickhouse文档中有明确说自己不适用的场景,那么StarRocks 呢?

感谢您的提问, StarRocks 目前还有很多不足之处,涉及场景和问题我们也会进行总结和梳理,后期会不断的去完善,也感谢各位在使用过程中的批评和建议,我们一起携手只为给您带来更优的体验和创造更高的价值,共同努力使 StarRocks 成为全球领先的数据库产品!

目前的话 我们不适合做大规模的批处理,当前版本由于是全内存计算,所以面对大规模数据的复杂ETL容易内存不足,后续的版本正在优化当中。

建议推出类似clickhouse的窗口漏斗函数

收到,我们会根据需求不断进行完善,感谢您的支持与建议!

目前我们业务场景会涉及历史数据修数的问题,希望支持 insert overwrite语句,或者类似CK的分区卸载、装载,跨表分区移动等功能

1赞

目前不支持insert overwrite,可以用truncate+insert into代替
truncate和insert into支持partition操作
具体语法如下:
TRUNCATE TABLE tbl PARTITION(p1, p2);

INSERT INTO table_name
[ PARTITION (p1, ...) ]
[ WITH LABEL label]
[ (column [, ...]) ]
[ [ hint [, ...] ] ]
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }

详情操作可以参考官方文档

1赞

另外有原子替换的操作

比如

  1. 创建一张新表

create table2 like table1

  1. 使用stream load / broker load /insert into 等方式导入table2

  2. 然后table1与table2原子替换

ATER TABLE table1 SWAP WITH table2

同样可以用导入临时分区的方式进行替换

  1. 创建临时分区

ALTER TABLE tbl1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN(“2020-02-01”);

  1. 然后向临时分区导入数据

  2. 进行原子替换

ALTER TABLE tbl1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);

这样可以导入数据后做一定的验证以后再替换

insert overwrite的需求我们也会记录下来,后续补充该功能

2赞

面对大规模数据的复杂ETL容易内存不足,这个新版本有解决吗

因为ETL操作需要落盘,所以短期内还没有进行解决容易内存不足的问题,但这方面的需求已经有所记录,是我们之后会进行研发的一个方向, 目前 StarRocks 只能做到简单的ETL。

@yuchen1019 不适合大规模这个规模如何度量?比如单表1000亿 或者多表join这个量级大致多少?目前查询到资料是到千万级别,应该是不准确的。

现在发现时间精度不能支持毫秒呀,请问这个有计划优化吗?

嗯,目前是还不支持,当前请先使用 int 类型处理

目前看string是有长度限制的 ,最多只能支持65533, 请问大概什么时候能支持不限制长度的呀

还不确定,这块长字符串实现上会有些内存问题,还得后面设计设计

请问还支持每隔5分钟 这种的 统计吗? 目前没找到相关函数

decimal类型精度
(
DECIMAL(M[,D])
M的范围是[1,27], D的范围[1, 9], 另外,M必须要大于等于D的取值。默认的D取值为0
)
与mysql精度
(
M的范围是[1,65], D的范围[0, 30],另外,M必须要大于等于D的取值
)
不一致,为何会有如此差异呢?

这个和我们内部实现有关,StarRocks的decimal 性能更好, 我们的decimal v3实现是 0<M<=38, 0<=D<=M,您可以参考下文档

尽管如此,比如帆软通过mysql jdbc 读取表时,该字段精度不一致,会报转换异常 :rofl:

机器配置和适合处理的数据量有参考标准吗