MetadataSearch
Revision as of 22:46, 9 November 2013 by Briancline (talk | contribs) (Filled out part of proposed structure from Lincoln's talk... more to come)
Contents
Proposed Metadata Search API
This document is a work in progress used to define the proposed API for searching account, container, and object metadata in Swift/Object Storage. It was discussed in a design summit session on 7 November 2013 at the Ice House summit in Hong Kong.
Blueprint: https://blueprints.launchpad.net/swift/+spec/searchable-metadata
Etherpad: https://etherpad.openstack.org/p/icehouse-swift-metadata-search
Session: http://icehousedesignsummit.sched.org/event/66176e0859c0fc933d50988b5dc89c12
- Existing implementations
Search API Version
- Extends base Swift API
- Doesn't affect existing base request handling
- Search API Version independent of base API version, e.g.:
GET /<object storage API version>[/<account>[/<container>[/<object>]]]?<search API version>/...
Search scopes
- An object (unlikely to be used):
/acct1/cont2/obj3
- A container (and all of its objects):
/acct1/cont2
- An account (and all of its containers and objects):
/acct1
- The entire object store (across all accounts):
[/]
Search criteria
[&query=[(]<query expr1>[ [AND|OR] <query expr2>][)][ [AND|OR]...] ]
...where:
query expr=<query attr><operator><query value>
...and `<operator>` is one of:
=, !=, <, <=, >, >=, ~
- Note: Generating SQL query for complex boolean expressions across multiple tables may be complex! (If using SQL)
- Simpler: support only AND (multiple ANDs OK)
- Services request shows whether simple (ANDs only) or complex supported