This page describes the various strategies for executing queries in MetaModel.

Native vs greedy execution

Of particular interest is to specify in which cases MetaModel can delegate (aka "push down") query execution to a native query engine vs. having to execute the query in memory (often a greedy approach - Java code supplied by MetaModel).

The following table documents the execution capability in specific modules of MetaModel. Each column represents a query type. The query types are:

Plain FROM

Simple COUNT

Simple WHERE

Primary key lookup

Groups and aggregates

MetaModel-csv

streaming

greedy when exact
native when approximated

client-side

no PK

greedy

MetaModel-jdbc

streaming

native (incl. all variants)

native

native

native

MetaModel-excel

streaming .xlsx
in-memory .xls

native

client-side

no PK

greedy

MetaModel-pojo

in-memory

native

client-side

no PK

greedy

MetaModel-couchdb

streaming

native

native

native

greedy

MetaModel-mongodb

streaming

native (incl. WHERE)

native

native

greedy

MetaModel-elasticsearch

paged

native

client-side*

native

greedy

MetaModel-hbase

streaming

native

client-side*

native

greedy

MetaModel-cassandra

paged

native

client-side*

greedy

greedy

MetaModel-json

streaming

greedy

client-side

no PK

greedy

MetaModel-xml

streaming SAX
in-memory DOM

greedy

client-side

greedy

greedy

MetaModel-salesforce

paged

native (incl. WHERE)

native

native

greedy*

MetaModel-sugarcrm

paged

native

native

greedy

greedy

* = improvement is possible (even within the scope of MetaModel)

QueryExecutionStrategies (last edited 2014-11-11 17:52:33 by KasperSorensen)