Let SQL executor running command one by one is good to me.

One logic-sql will be routed to multi-actual SQLs, then executed in 
sharding-sphere execute-engine.
A actual SQL will be wrapped as a SQL execute-callback in sharding-sphere.
We could provide a SPI for this SQL execute-callback. 
For integrated with saga, we could implement a saga execute-callback, it will 
wrap event sourcing logic like saga-actuator task have done.


> On May 1, 2019, at 5:06 PM, Willem Jiang <willem.ji...@gmail.com> wrote:
> 
> We could do some enhancement on it.
> From my understanding, We could create a calling graph which has three
> sub graph of it, or we could let the SQL executor running the command
> one by one.
> Any thoughts?
> 
> Willem Jiang
> 
> Twitter: willemjiang
> Weibo: 姜宁willem
> 
> On Wed, May 1, 2019 at 4:29 PM zhaojun <zhaoju...@126.com> wrote:
>> 
>> But saga-actuator don’t support 3 logic SQL is a global transaction while 
>> you submit 3 times separately.
>> 
>> ------------------
>> Zhao Jun
>> Apache Sharding-Sphere & ServiceComb
>> 
>>> On May 1, 2019, at 8:38 AM, Willem Jiang <willem.ji...@gmail.com> wrote:
>>> 
>>> Willem Jiang
>>> 
>>> Twitter: willemjiang
>>> Weibo: 姜宁willem
>>> 
>>> On Mon, Apr 29, 2019 at 7:58 PM zhaojun <zhaoju...@126.com> wrote:
>>>> 
>>>> Hi, Willem
>>>> 
>>>> Saga actuator could not compatible with ShardingSphere currently,  there 
>>>> are 2 main problem exist.
>>>> 1. If sql execute in saga transport instead of ShardingSphere, we can not 
>>>> see the result of logic-sql even in one transaction, it is like this:
>>>>       update t_order set status=’start’ where usr_id=’tom’;
>>>>       select status from t_order where usr_id=’tom’;                      
>>>> —> we can’t query ’start’ record as actuator haven’t executed.
>>>>       Insert into t_order values(?,?,?) ;
>>> 
>>> I think we can break the whole SQL interactions into smaller steps,
>>> and let saga-actuator do the job one by one.
>>> In this case, you can break the whole calling graph into several sub
>>> calling graphs.
>>> Any thought?
>>> 
>>>> 2. If logic-sql execute in ShardingSphere, we cannot handle recovery 
>>>> before submit graph result, as event log only wrote at saga engine.
>>>> 
>>>> so we should integrate saga-transaction like omega send event log step by 
>>>> step.
>>>> It is better to make every instance do recovery Independently, instead of 
>>>> providing another coordinator center service.
>>>> I feel that embed saga should have following  capability.
>>>> 1).It can provide service in jar package independent
>>>> 2).each embed saga only recovery their own transaction-data of this 
>>>> instance.
>>>>      If one instance crashed, we can introduce external service to do 
>>>> failover.
>>>> 
>>>> so we consider about exending saga-acutator, if it can support submit task 
>>>> step by step in one transaction, it is a good choice.
>>>> of course, there have many things we should do.
>>>> 
>>>> ------------------
>>>> Zhao Jun
>>>> Apache Sharding-Sphere & ServiceComb
>>>> 
>>>>> On Apr 29, 2019, at 5:17 PM, Willem Jiang <willem.ji...@gmail.com> wrote:
>>>>> 
>>>>> First Saga actuator need to build up the calling grapha before sending
>>>>> out the request.  I don't think you can do the step by step SQL
>>>>> invocation with Saga actuator.
>>>>> If you want to call the SQL execution step by step , you may need to
>>>>> switch to ServiceComb Pack project which has a coordinator to take
>>>>> care of the distributed transaction. But that introduce another
>>>>> endpoint(Alpha) to shardingsphere.
>>>>> 
>>>>> From my understanding, Saga actuator is most efficient way to execute
>>>>> the SQL across different data nodes.
>>>>> 
>>>>> 
>>>>> Willem Jiang
>>>>> 
>>>>> Twitter: willemjiang
>>>>> Weibo: 姜宁willem
>>>>> 
>>>>> On Fri, Apr 26, 2019 at 6:41 PM zhaojun <zhaoju...@126.com> wrote:
>>>>>> 
>>>>>> Hi, all
>>>>>> 
>>>>>> currently, we have integrated with saga using graph based engine in 
>>>>>> shardingsphere[1]
>>>>>> it need us to collect all participated actual SQL, then submit to saga 
>>>>>> actuator in commit/rollback phase.
>>>>>> if application crashed before invoking saga actuator, undo log of branch 
>>>>>> transaction SQL will not be saved,
>>>>>> so recovery thread will not be executed correctly.
>>>>>> 
>>>>>> it's better that encapsulating every actual SQL as a saga task in 
>>>>>> shardingsphere side,
>>>>>> then submit to saga actuator realtime instead of batch processing all 
>>>>>> the SQLs at commit/rollback phase.
>>>>>> this architecture will make the boundary more clear between 
>>>>>> shardingsphre and saga, currently we have done some additional works for 
>>>>>> integrating saga.
>>>>>> 
>>>>>> any thought?
>>>>>> 
>>>>>> [1]:https://github.com/sharding-sphere/shardingsphere-spi-impl/tree/master/sharding-transaction-spi-impl/sharding-transaction-base-spi-impl/sharding-transaction-base-saga
>>>>>>  
>>>>>> <https://github.com/sharding-sphere/shardingsphere-spi-impl/tree/master/sharding-transaction-spi-impl/sharding-transaction-base-spi-impl/sharding-transaction-base-saga>
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ------------------
>>>>>> Zhao Jun
>>>>>> Apache Sharding-Sphere & ServiceComb
>>>>>> 
>>>> 
>> 

Reply via email to