Github user cestella commented on the issue:

    https://github.com/apache/metron/pull/636
  
    Looking at this implementation and working a bit on the PoC for index data 
mutation, I think the abstraction here isn't in the right place.  It's too 
bound-up in the REST layer whereas data access has traditionally existed 
further down in the abstraction layer.  It's a smell that metron-rest has to 
depend on ES at all.  That dependency should be provided at runtime entirely.  
Also, we're going to need data access in batch as well and I'd like a sensible 
abstraction in place to enable that (e.g. merging modified records when reading 
as part of a Spark or MR job).
    
    It seems to me that we need a DAO abstraction living in `metron-writer` or 
even `metron-indexing` for interacting with indices with the concrete 
implementations existing in `metron-elasticsearch` and `metron-solr` for ES and 
Solr respectively.  I think `metron-rest` should work entirely on abstract 
classes.  The REST layer should choose the DAO implementation via reflection 
and we should adjust the classpath in the shell script to include one of 
`metron-elasticsearch` or `metron-solr`.  In essence, I'm recommending 
something similar to how JDBC works where you choose your driver implementation 
via reflection (often) and work with base JDBC classes from there.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to