prototype: scalable VOSI-tables-1.1

Mark Taylor m.b.taylor at bristol.ac.uk
Thu May 21 12:56:23 CEST 2015


Pat et al.,

FYI, I've implemented a GUI client for this proposed protocol.
It works, though I still have my reservations about the 
<service-url>/tables/<schema-name>/<table-name> URL scheme
for the resources.

The TOPCAT TAP client now has a pluggable metadata acquisition
component that can pursue various strategies to get the table
metadata, currently:

   - standard /tables endpoint
   - multiple TAP_SCHEMA queries
   - VizieR-flavour non-standard multi-level /tables endpoint
   - CADC-flavour non-standard multi-level /tables endpoint

By default it picks one it thinks will do the best job ("Auto").

Both the VizieR and CADC /tables endpoints pull all schemas and tables
at first, and then get per-table content only as required.

If you want to see it working, you can find a pre-release version
here:

   ftp://andromeda.star.bris.ac.uk/pub/star/topcat/pre/topcat-full_tap.jar

To get the TAP window, use the "Table Access Protocol (TAP) Query"
menu item in the top-level "VO" menu, or the equivalent toolbar button.
The "TAP|Metadata Reading" menu item in that window allows you to
choose which metadata acquisition strategy is in use (changing the
value triggers a metadata reload).  You can run with -verbose
or -verbose -verbose to get a bit more information about what
queries are going on under the hood.

Mark

On Mon, 4 May 2015, Patrick Dowler wrote:

> 
> I have implemented a prototype VOSI-tables-1.1 resource to deal with the
> issues that came up in the TAP discussion in Banff: some services have many
> tables and many columns and the top-level VOSI-tables document can be very
> large.
> 
> 
> The basic aproach is to define a RESTful resource tree following the
> VODataService model: tableset, schema, table. All the example URLs below work
> but note that the table names are fully qualified because that is how it works
> in TAP right now. There are separate discussions on that so it isn't really
> relevant here.
> 
> The VOSI-tables-1.0 resource returns a <tableset> document, so the "tables"
> resource name really means "the tableset". This remains unchanged:
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables
> 
> Any schema name can be used as a child; this returns a <schema> document:
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA
> 
> Any table name found in a schema can be used as a child; this returns a
> <table> document:
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA/TAP_SCHEMA.tables
> 
> There is no REST binding to get a single <column> within  a <table> as I don't
> see the use case for that. The abvoe by itself is nice but doesn't solve the
> scalability problem. For that we need to ask for less than "all the details"
> of VOSI-tables-1.0 using the "detail" parameter (name taken from the VOSpace
> spec as it seems to be the same sort of thing: ask for a certain amount of
> detail. The default (as the above
> URLs show) is to get all the details below the resource. The detail parameter
> can taken two values: schema, table.
> 
> To get a <tableset> document with a list of <schema> only:
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables?detail=schema
> 
> To get a <tableset> docuemnt with <schema> and <table> (no <column>):
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables?detail=table
> 
> Somewhat useless*: get a <schema> document without the <table>(s):
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA?detail=schema
> 
> To get a <schema> doccument with only the list of <table> (no <column>):
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA?detail=table
> 
> To get a <table> document (a single table):
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA/TAP_SCHEMA.tables
> 
> Somewhat useless*: get a <table> document without the <column>(s):
> 
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA/TAP_SCHEMA.tables?detail=table
> 
> * it was simpler to implement this response than to come up with some logic
> for denying such a request; it can check the existence of the schema or table.
> 
> Given the size of the documents when detail=schema or detail=table is used
> (very small), I don't see an obvious need for a pagination mechanism. VOSpace
> has such a feature so we could model something on that but I'd like to see the
> practical need.
> 
> These would all return a 404 response code:
> 
> testSchemaNotFound:
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/no_such_schema
> 
> testTableNotFound:
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA/no_such_table
> 
> testExtraPathComponentNotFound (trying to get a <column>):
> http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/tables/TAP_SCHEMA/tables/table_name
> 
> The base resource complies to VOSI-tables-1.0 so 1.0 clients could use a
> VOSI-tables-1.1 resource. The only outstanding issue is how would a service
> force clients to use 1.1 and forbid them from getting the whole <tableset>
> document from the base resource? That is already an issue and right now I
> think the only compliant choice (for TAPvizier, for example) would be to
> respond with a 403 "Forbidden": only authorized callers can get the whole
> tableset in full detail. This is already how some services handle things like
> a GET to a UWS job-list. I think any oter kind of response to indicate that
> some of the requests are not supported would mess wit backwards compatibility.
> Making the default "detail" not be "all" would likewise trod on compatibility.
> Obviously, the tap capabilities would express that the VOSI-tables resource
> implemented 1.0 or 1.1 and I don't see any obvious reason to require a
> specific one in TAP-1.1 (at least).
> 
> The change to the VOSI-tables XSD is to add <schema> and <table> as valid
> document root elements with types taken from VODataService-1.1 xsd.
> 
> 
> 
> -- 
> 
> Patrick Dowler
> Canadian Astronomy Data Centre
> National Research Council Canada
> 5071 West Saanich Road
> Victoria, BC V9E 2E7
> 
> 250-363-0044 (office) 250-363-0045 (fax)
> 

--
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor at bris.ac.uk +44-117-9288776  http://www.star.bris.ac.uk/~mbt/


More information about the grid mailing list