Jump to: navigation, search

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)

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

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

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