Hi Kasper,

On Mon, Sep 15, 2014 at 9:06 AM, <dev-digest-h...@gora.apache.org> wrote:

>
> Glad to see that this interests you. I did look quickly into the Gora Query
> API (just the javadocs for now) and got the impression that your query
> model is mostly focused around a few specific types of queries; such as
> "get a record by it's key", "get a range of records by a key-range", "get
> records by it's timestamp". I am still no expert, so excuse me if I make
> the wrong conclusions here ... :-)
>

Nope, you're more or less absolutely right. This reflects the same way we
load data into Gora.
It is however also important for me to clarify that we also support
void *setFields
<https://builds.apache.org/view/All/job/gora-trunk/javadoc/org/apache/gora/query/Query.html#setFields%28java.lang.String...%29>*
(String
<http://download.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true>
... fieldNames)   void *setFilter
<https://builds.apache.org/view/All/job/gora-trunk/javadoc/org/apache/gora/query/Query.html#setFilter%28org.apache.gora.filter.Filter%29>*
(Filter
<https://builds.apache.org/view/All/job/gora-trunk/javadoc/org/apache/gora/filter/Filter.html>
<K
<https://builds.apache.org/view/All/job/gora-trunk/javadoc/org/apache/gora/query/Query.html>
,T
<https://builds.apache.org/view/All/job/gora-trunk/javadoc/org/apache/gora/query/Query.html>
> filter) This above operands are self explanatory. Filters are implemented
on a datastore-by-datastore basis however and not all stores implement
filters currently.


>
> I can imagine that probably this means that your execution is quite
> optimized for these few scenarios.


Somewhat. gora-hbase would ne an example of this being the case.


> If we initially compare then performance
> of MM and Gora's queries, it might be that Gora's queries run faster for
> these specific scenarios.


Possibly. This would be a useful test.


> In MetaModel the approach to developing
> datastores and query model was kinda the other way around: A very wide
> range of query patterns is supported (the majority of SQL, for any
> datastore), but it sometimes comes at a cost of performance, since
> optimizing for certain scenarios is an optional implementation detail.


For me, this is where there is value added.


> But
> should we go in and serve Gora with a query API, I of course believe that
> we should make sure that we cover your typical query scenarios with optimal
> execution strategies so that this isn't a problem.
>

+1


>
> The other big thing I notice is that your Query and Result classes have
> some generics involved - as far as I can gather this is to serve domain
> objects back into the result. So that I can have something like a
> Query<Customer> or whatever it is that I am querying.


+1


> In MM we only care
> about schemas, tables and columns with data. So all results (DataSet in MM)
> contain rows of data. As such I can then see Gora acting as a mapping layer
> between a MetaModel Row and a Gora Persistent object.
>

+1. This is where thd stength of Gora comes into it's own. This is exactly
what I have personally stuck by the technology.


>
> A final remark on the Datastore level - in MetaModel we deliver a Schema
> (contains Tables (contains Columns)) for each datastore. Sometimes the
> schema is provided natively by some metadata API or something like that. In
> other cases it is inferred by looking at the data contained in the
> datastore. I couldn't find something quite like this in Gora.
>
>
This is because there exists no such mechanism for that. We currently
define a data model in JSON which is compiled into Java.
We then provide a backend-specific XML mapping file which would map
specific object fields to the pysical backend storage structure. The XML
mapping can also define primary Key's by which we wish to repference the
object, TTL's, compaction strategies, TombStone implementations, etc, etc.
AN example would be as follows
Consider an Employee -
https://github.com/apache/gora/blob/master/gora-core/src/examples/avro/employee.json
Cassandra Mapping -
https://github.com/apache/gora/blob/master/gora-cassandra/src/test/conf/gora-cassandra-mapping.xml
HBase Mapping -
https://github.com/apache/gora/blob/master/gora-hbase/src/test/conf/gora-hbase-mapping.xml
SOlr -
https://github.com/apache/gora/blob/master/gora-solr/src/test/conf/gora-solr-mapping.xml
etc
Thanks
Lewis

Reply via email to