SPLWare / esProc

esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.
http://doc.scudata.com/esproc/
Apache License 2.0
4.58k stars 332 forks source link

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

Open Jetol opened 1 year ago

Jetol commented 1 year ago

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

72dfbb1f020ece1fe6510809f85f703

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

jbx1279 commented 1 year ago

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

Jetol commented 1 year ago

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

jbx1279 commented 1 year ago

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

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