SPLWare/esProc

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

Jetol opened this issue · 3 comments

Jetol commented

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

72dfbb1f020ece1fe6510809f85f703

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

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

Jetol commented

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

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

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