TAP information schema

Doug Tody dtody at nrao.edu
Thu Oct 11 16:05:02 PDT 2007


Hi Pat -

I agree with all the stuff about O-R and this being a natural usage
for multiple schemas within the same database or catalog.  Schemas
could also be useful merely to logically group large numbers of tables
such as astronomical catalogs.

> One might be tempted to just say that in TAP "table name" mans fully
> qualified table name (eg just put $catalog.$schema.$table in there),
> but that would mean that table name in TAP is not the same thing as
> table name in ADQL, where these other things are explicitly present
> and dot is not alllowed in the table name.  I suppose it wouldn't
> be too dangerous if the VOResource contained FullyQualifiedTableName
> for unambiguous use.
> 
> For the VOSpace example, if I was implementing that I would most
> likely make vospace a database (for storage allocation purposes),
> require authentication, and give each user implicit schema
> creation privaledge. Then the uploaded VOtable would be known as
> vospace.$user.$tableName and I would have to do minimal work to make
> that happen and protect one user's tables from another.

So what do you do with MySQL (and probably others) where there is
only one catalog?  As we would like to be able to use ADQL to access
both vospace tables and data tables in the same query, the only option
(other than brute force copying tables) is to implement the vospace with
a schema ("database" in MySQL).

> As an aside, I would probably filter the metadata responses so
> that users see only tables they are allowed to query -- to save on
> subsequent permission errors and so people don't have to obfuscate
> their table names and use a fake identity to conceal their scientific
> work :)

I would guess that if a VOSpace is implemented as a schema, this
would be a schema owned by the system.  Each user would get their own
private schema would would view elements of the primary system VOSpace
schema which they own.  The sysadmin would see the whole VOSpace with
all user objects.  The user would use "vospace.$tableName" and would
never know that the physical VOSpace had other user's stuff in it
(just like a catalog).  Hence it should work out the same way.

	- Doug



More information about the dal mailing list