[ 
https://issues.apache.org/jira/browse/SOLR-4799?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikhail Khludnev updated SOLR-4799:
-----------------------------------
    Description: 
DIH is mostly considered as a playground tool, and real usages end up with 
SolrJ. I want to contribute few improvements target DIH performance.

This one provides performant approach for joining SQL Entities with miserable 
memory at contrast to 
http://wiki.apache.org/solr/DataImportHandler#CachedSqlEntityProcessor  

The idea is:

* parent table is explicitly ordered by it’s PK in SQL
* children table is explicitly ordered by parent_id FK in SQL
* children entity processor joins ordered resultsets by ‘zipper’ algorithm.

*example usage* for what's committed:
{code}
<dataConfig>
        <document>
                <entity name="parent" processor="SqlEntityProcessor" 
query="SELECT * FROM PARENT ORDER BY id">          
                        <entity name="child_1" processor="SqlEntityProcessor"
                                where="parent_id=parent.id" query="SELECT * 
FROM CHILD_1 ORDER BY parent_id" join="zipper" >
                        </entity>                       
                </entity>
        </document>
</dataConfig>
{code} 
mind about:
# *ordering* both sides
# specifying *join="zipper"* at children entity
# note that it works with *any entity processors* 
 

  was:
DIH is mostly considered as a playground tool, and real usages end up with 
SolrJ. I want to contribute few improvements target DIH performance.

This one provides performant approach for joining SQL Entities with miserable 
memory at contrast to 
http://wiki.apache.org/solr/DataImportHandler#CachedSqlEntityProcessor  

The idea is:

* parent table is explicitly ordered by it’s PK in SQL
* children table is explicitly ordered by parent_id FK in SQL
* children entity processor joins ordered resultsets by ‘zipper’ algorithm.

Do you think it’s worth to contribute it into DIH?

cc: [~goksron] [~jdyer]


> DIH: join="zipper" aka merge join for nested EntityProcessors 
> --------------------------------------------------------------
>
>                 Key: SOLR-4799
>                 URL: https://issues.apache.org/jira/browse/SOLR-4799
>             Project: Solr
>          Issue Type: New Feature
>          Components: contrib - DataImportHandler
>            Reporter: Mikhail Khludnev
>            Assignee: Noble Paul
>            Priority: Minor
>              Labels: DIH, dataimportHandler, dih
>             Fix For: 5.0, Trunk
>
>         Attachments: SOLR-4799.patch, SOLR-4799.patch, SOLR-4799.patch, 
> SOLR-4799.patch, SOLR-4799.patch
>
>
> DIH is mostly considered as a playground tool, and real usages end up with 
> SolrJ. I want to contribute few improvements target DIH performance.
> This one provides performant approach for joining SQL Entities with miserable 
> memory at contrast to 
> http://wiki.apache.org/solr/DataImportHandler#CachedSqlEntityProcessor  
> The idea is:
> * parent table is explicitly ordered by it’s PK in SQL
> * children table is explicitly ordered by parent_id FK in SQL
> * children entity processor joins ordered resultsets by ‘zipper’ algorithm.
> *example usage* for what's committed:
> {code}
> <dataConfig>
>       <document>
>               <entity name="parent" processor="SqlEntityProcessor" 
> query="SELECT * FROM PARENT ORDER BY id">          
>                       <entity name="child_1" processor="SqlEntityProcessor"
>                               where="parent_id=parent.id" query="SELECT * 
> FROM CHILD_1 ORDER BY parent_id" join="zipper" >
>                       </entity>                       
>               </entity>
>       </document>
> </dataConfig>
> {code} 
> mind about:
> # *ordering* both sides
> # specifying *join="zipper"* at children entity
> # note that it works with *any entity processors* 
>  



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to