esProc icon indicating copy to clipboard operation
esProc copied to clipboard

【强力建议】开发分布式与微服务平台,希望组表支持并发,这样每个服务调用不用加锁了

Open Jetol opened this issue 2 years ago • 3 comments

问题:并行实时调用集算器在同一个组表append()追加数据时,出现主键变为null,组表打不开或其它问题: 653fed9c8c188b6a2f12dfde2d28818

72dfbb1f020ece1fe6510809f85f703

强力建议:支持并发就更好了,也不用加锁,也提高效率;

Jetol avatar Feb 22 '23 07:02 Jetol

组表是大数据,需要整理的数据,不适合在应用运行过程中维护数据,通常要在专门的ETL过程来更新数据。提供随时更新数据能力会降低读取和运算性能,权衡的结果是暂不提供(看情况可以考虑增加选项)。 不能把组表完全当数据库用(至少在写的方面),设计适应它的存储机制。我们不推荐在应用端加锁避开这个问题后实现并发写(读)。

jbx1279 avatar Feb 22 '23 08:02 jbx1279

我们是使用专门的ETL过程的数据,通过微服务多实例调用集算器插入同一个组表就报错了。

Jetol avatar Feb 22 '23 08:02 Jetol

ETL过程还会有并发写?没考虑过这种场景。 多进程并发,SPL就识别不了,也没法加锁(除非加到硬盘上,那成本确实高了)。多线程时可以用lock函数加锁控制并发。自动加锁的事,要再权衡一下成本(导致读和算的性能损失)和收益。

另外,组表通常要有序,并发写不可能保证这个了,即使提供这种能力,似乎也用处不大。

jbx1279 avatar Feb 22 '23 11:02 jbx1279