Difference between revisions of "MetadataSearch"
Briancline (talk | contribs) (Fleshed out part of design summit content) |
Briancline (talk | contribs) (Filled out part of proposed structure from Lincoln's talk... more to come) |
||
Line 1: | Line 1: | ||
− | + | =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. | 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. | ||
− | Etherpad: https://etherpad.openstack.org/p/icehouse-swift-metadata-search | + | Blueprint: https://blueprints.launchpad.net/swift/+spec/searchable-metadata<br/> |
+ | Etherpad: https://etherpad.openstack.org/p/icehouse-swift-metadata-search<br /> | ||
+ | Session: http://icehousedesignsummit.sched.org/event/66176e0859c0fc933d50988b5dc89c12<br /> | ||
− | + | * Existing implementations | |
+ | ** SoftLayer: http://sldn.softlayer.com/article/API-Operations-Search-Services | ||
+ | ==Search API Version== | ||
* Extends base Swift API | * Extends base Swift API | ||
* Doesn't affect existing base request handling | * Doesn't affect existing base request handling | ||
* Search API Version independent of base API version, e.g.: | * 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): <code>/acct1/cont2/obj3</code> | ||
+ | * A container (and all of its objects): <code>/acct1/cont2</code> | ||
+ | * An account (and all of its containers and objects): <code>/acct1</code> | ||
+ | * The entire object store (across all accounts): <code>[/]</code> | ||
− | + | ==Search criteria== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[&query=[(]<query expr1>[ [AND|OR] <query expr2>][)][ [AND|OR]...] ] | [&query=[(]<query expr1>[ [AND|OR] <query expr2>][)][ [AND|OR]...] ] | ||
− | |||
...where: | ...where: | ||
− | |||
query expr=<query attr><operator><query value> | query expr=<query attr><operator><query value> | ||
− | |||
...and `<operator>` is one of: | ...and `<operator>` is one of: | ||
− | |||
=, !=, <, <=, >, >=, ~ | =, !=, <, <=, >, >=, ~ | ||
Line 36: | Line 33: | ||
* Services request shows whether simple (ANDs only) or complex supported | * Services request shows whether simple (ANDs only) or complex supported | ||
− | + | ===Searching across accounts=== | |
− | + | ==="Authorized Searchers" feature=== | |
− | + | ===Search live and recently deleted items=== | |
− | + | ==Complete URI structure== | |
− | + | ==List of attributes to return== | |
− | + | ==Filter parameters== | |
− | + | ==Output format parameters== |
Revision as of 22:46, 9 November 2013
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