Norbert Nemec created COUCHDB-3280:
--------------------------------------

             Summary: Computed Indices in Mango Query Server
                 Key: COUCHDB-3280
                 URL: https://issues.apache.org/jira/browse/COUCHDB-3280
             Project: CouchDB
          Issue Type: Wish
          Components: Mango
            Reporter: Norbert Nemec


The Mango Query Server aims at offering a simpler alternative to MapReduce 
queries. As it stands now, it is also fundamentally limited in terms of 
expressiveness an performance. Indices can be defined only over a plain set of 
fields with none of the possibilities that a map function offers. Selectors 
allow powerful combinations, but require to perform much of the computational 
effort at query time. The $regex operator, for example even contains a warning 
about this in the documentation.

My proposal would be to add an alternative way to define indices by explicitly 
providing a design document map function. The 'fields' argument of such a 
"computed index" would not have to exist as an actual field in the database, 
but would be made available as a "computed field" for regular use in subsequent 
find requests.

Ultimately, this approach would bridge the gap between the simple-but-limited 
Mango queries and the powerful-but-unwieldy MapReduce queries. Rather than 
having to decide between both approaches, developers could start with the 
simple Mango approach and then just learn one more concept if they need the 
full power.

(It is my understanding that the currently recommended approach is to add 
computed fields to the documents directly at creation time. Though this is a 
workaround for the limitations of selectors, it does not offer any guarantees 
for internal consistency of a database and mixes the concerns of content 
creation with those of retrieval.) 



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

Reply via email to