[ 
https://issues.apache.org/jira/browse/TAJO-1041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14135292#comment-14135292
 ] 

Hyunsik Choi commented on TAJO-1041:
------------------------------------

I'm designing push model iteration model instead of traditional pull-based 
model. Its advantages is to reduce memory copy and reuse allocated row block.

The description is as follows:

h3. RowBlock allocations
* Each physical executor will have its in/out row blocks, which are allocated 
once and are reused during a task.
* Each physical executor which bypasses tuples will have an output row block. 
* Each physical executor like join, projection, and scan, which builds new 
tuple will have input row block and output row block.
  * We call this kind of physical executor *projectable executor*.
  * An output row block of one physical executor is the input row block of its 
parent physical executor.
* Each physical executor which plays a role of filter will not have any row 
block.
  * We call this kind of physical executor *selectable executor*. Having and 
Selection are this type.
* RowBlock interface will have selection IDs, which indicate rows matched to 
filter conditions of descendant nodes.

h3. Iteration model
h4. Projectable executors
* A projectable executor will call its child node (or nodes) with its input row 
block.
* Then, a projectable executor will fill its output row block with processed 
rows.

h4. Selectable executors
  * A selectable executor will use only its output row block, which actually is 
an input row block of its parent row block.
  * It will add indices of qualified rows of its filter condition to the row 
block.

> Change tuple-at-a-time execution model to block iteration.
> ----------------------------------------------------------
>
>                 Key: TAJO-1041
>                 URL: https://issues.apache.org/jira/browse/TAJO-1041
>             Project: Tajo
>          Issue Type: Improvement
>            Reporter: Hyunsik Choi
>              Labels: block_iteration
>
> Currently, our physical executor is based on a tuple-at-a-time model. It is a 
> traditional model and is well known that it is not inefficient in terms of 
> CPU costs.
> Also, I think that we can design integrated interface for row block with 
> considering row block and vectorized row block. I'll add some possibility to 
> extend row block iteration model to be vectorized.
> This is an umbrella issue, which is to change current execution model to 
> block iteration model.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to