| <<O>> Difference Topic AISIdeas (r1.9 - 02 May 2006 - JamesGallagher) |
The AIS | ||||||||
| Line: 21 to 21 | ||||||||
|---|---|---|---|---|---|---|---|---|
| What about devising a URL syntax so that each item can be addressed as part of the URL. That is, instead of a projection CE, add the variable names to the URL like 'http://test/dap/data/nc/fnoc1.nc/u'. This would provide a way for RDF to attach metadata to each variable since each would appear as a thing in the web. That said, the existing syntax might be good enough because "... by generalizing the concept of a "Web resource", RDF can also be used to represent information about things that can be identified on the Web, even when they cannot be directly retrieved on the Web."RDF Primer. This doesn't mean that each variable has to be accessible, just name-able. | ||||||||
| Added: | ||||||||
| > > |
Update: At some point RDF & OWL, or something like them, may be important in handling metadata. Whether they are is afunction of how easy it is to use them to build sets of rules that can be reliably appiled to data sources. Right now it's too much work to use those technologies for a project that needs to build a working system in only a few months. As for THREDDS, it seems that it is not a way to blend new metadata into a data source, but a way to carry search metadata about a collection of data sources. A THREDDS catalog is not the place where information about a variable's scale factor should be encoded. -- JamesGallagher - 02 May 2006 | |||||||
| Discussion The client-side AIS is nice because it's so clean from a user's perspective. That is, it's obvious what's being done to the objects returned from the data source. But this architecture has a number of drawbacks. First, it does not scale well when the number of mappings increases because the mapping database is built anew for each virtual Connection. A way around this is to use some sort of persistence, with the most obvious being a RDB (e.g., MySQL). But that makes the clients pretty complex to configure. The mapping DB could be cached on disk using techniques similar to the HTTPCache class' method for managing the HTTP cache. So there are ways around the 'persistence problem' of this design, but they involve some significant increase in complexity on the client-side. Another issue is that this code does not work in browsers; it only works in libdap-built clients. We'll have to duplicate it in the Java and C libraries, and so will every other implementer if they want their systems to get the benefit of the AIS (which we hope they will...). That's a pretty high price to pay for this design. However, we have a client-side AIS implemented already. | ||||||||
| Line: 28 to 30 | ||||||||
| All is not lost. We can use the client-side AIS software to build an AIS server. I think that's where we should go. That way we have the client-side AIS for testing and development and a server for actual deployment. Since a server will probably be stateless, the persistence problem will still need to be solved, but there are a number of ways we can approach it. It might be that after some thought we make the AIS server a Java Servlet, in which case we can make the DB in-memory and constructed when the servlet is loaded into memory. Or we can take the approach that a servlet should use the 'copy HTTPCache' approach. We can keep going with the C++ code base for now and recode in Java once we have something with the correct mix of features. This is appealing since recoding working software is about as easy as development will ever get and we already have a prototype AIS server thing in the Server3.5 code base. This will let us tackle the design problems without mixing them up with a lot of new implementation. So that leaves some important questions unanswered. What should an AIS Server actually do! | ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Line: 38 to 40 | ||||||||
| In these diagrams I show both the data and the ancillary information (AI?) as remote from the client and on distinct machines. That might not be the case if we create an AIS that supports a folksonomy where users can 'tag' variables and attributes. In that case we might bundle the result with our new server. Some of the lines in these are missing... | ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Added: | ||||||||
| > > |
Update:
Here are two more diagrams which present two different ways of handling the mapping information the AIS needs. In the first one a database (of some sort, not necessarily a RDB) is used to store mappings between the AIS 'virtual' data space, the ancillary information and the data source. In the second figure the URL fed to the AIS holds the information about both of the information sources. All the AIS needs to do is merge them. This is simpler to configure on a URL-by-URL basis, but would be a drag for the user.
* Figure 1. AIS with a data base of mappings between data source and ancillary data URLS:
* Figure 2. AIS with both parts of the merge in the URL:
| |||||||
| -- JamesGallagher - 13 Dec 2005 Updated with new diagrams. This does not contain any text about AIS servers getting data and applying server-side functions. Also, consider operations of variable names equivalent to attributes now that both are held in the same response. | ||||||||
| Added: | ||||||||
| > > |
Suggestion: There are two risks associated with this system that are directly affected by its architecture:
| |||||||
-- JamesGallagher - 02 May 2006
| ||||||||
| Line: 55 to 71 | ||||||||
| Added: | ||||||||
| > > |
| |||||||
| <<O>> Difference Topic AISIdeas (r1.8 - 02 May 2006 - JamesGallagher) |
The AIS | ||||||||
| Line: 39 to 39 | ||||||||
|---|---|---|---|---|---|---|---|---|
In these diagrams I show both the data and the ancillary information (AI?) as remote from the client and on distinct machines. That might not be the case if we create an AIS that supports a folksonomy where users can 'tag' variables and attributes. In that case we might bundle the result with our new server. Some of the lines in these are missing...
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| -- JamesGallagher - 13 Dec 2005 | ||||||||
| Added: | ||||||||
| > > |
Updated with new diagrams. This does not contain any text about AIS servers getting data and applying server-side functions. Also, consider operations of variable names equivalent to attributes now that both are held in the same response. -- JamesGallagher - 02 May 2006 | |||||||
| Added: | ||||||||
| > > |
| |||||||
| <<O>> Difference Topic AISIdeas (r1.7 - 06 Feb 2006 - JamesGallagher) |
The AIS | ||||||||
| Line: 23 to 23 | ||||||||
|---|---|---|---|---|---|---|---|---|
| Discussion | ||||||||
| Changed: | ||||||||
| < < |
The client-side AIS is nice because it's so clean from a user's perspective. That is, it's obvious what's being done to the objects returned from the data source. But this architecture has a number of drawbacks. First, it does not scale well when the number of mappings increases because the mapping database is built anew for each virtual Connection. A way around this is to use some sort of persistence, with the most obvious being a RDB (e.g., MySQL). But that makes the clients pretty complex to configure. The mapping DB could be cached on disk using techniques similar to the HTTPCache class' method for managing the HTTP cache. So there are ways around the 'persistence problem' of this design. Another issue is that this code does not work in browsers; it only works in libdap-built clients. We'll have to duplicate it in the Java and C libraries, and so will every other implementer if they want their systems to get the benefit of the AIS (which we hope they will...). That's a pretty high price to pay for this design. However, we have a client-side AIS implemented already. | |||||||
| > > |
The client-side AIS is nice because it's so clean from a user's perspective. That is, it's obvious what's being done to the objects returned from the data source. But this architecture has a number of drawbacks. First, it does not scale well when the number of mappings increases because the mapping database is built anew for each virtual Connection. A way around this is to use some sort of persistence, with the most obvious being a RDB (e.g., MySQL). But that makes the clients pretty complex to configure. The mapping DB could be cached on disk using techniques similar to the HTTPCache class' method for managing the HTTP cache. So there are ways around the 'persistence problem' of this design, but they involve some significant increase in complexity on the client-side. Another issue is that this code does not work in browsers; it only works in libdap-built clients. We'll have to duplicate it in the Java and C libraries, and so will every other implementer if they want their systems to get the benefit of the AIS (which we hope they will...). That's a pretty high price to pay for this design. However, we have a client-side AIS implemented already. | |||||||
| All is not lost. We can use the client-side AIS software to build an AIS server. I think that's where we should go. That way we have the client-side AIS for testing and development and a server for actual deployment. Since a server will probably be stateless, the persistence problem will still need to be solved, but there are a number of ways we can approach it. It might be that after some thought we make the AIS server a Java Servlet, in which case we can make the DB in-memory and constructed when the servlet is loaded into memory. Or we can take the approach that a servlet should use the 'copy HTTPCache' approach. We can keep going with the C++ code base for now and recode in Java once we have something with the correct mix of features. This is appealing since recoding working software is about as easy as development will ever get and we already have a prototype AIS server thing in the Server3.5 code base. This will let us tackle the design problems without mixing them up with a lot of new implementation. | ||||||||
| <<O>> Difference Topic AISIdeas (r1.6 - 23 Dec 2005 - JamesGallagher) |
The AIS | ||||||||
| Line: 19 to 19 | ||||||||
|---|---|---|---|---|---|---|---|---|
| How much of this general task can be done using THREDDS? RDF? OWL? | ||||||||
| Changed: | ||||||||
| < < |
What about devising a URL syntax so that each item can be addressed as part of the URL. That is, instead of a projection CE, add the variable names to the URL like 'http://test/dap/data/nc/fnoc1.nc/u'. This would provide a way for RDF to attach metadata to each variable since each would appear as a thing in the web. | |||||||
| > > |
What about devising a URL syntax so that each item can be addressed as part of the URL. That is, instead of a projection CE, add the variable names to the URL like 'http://test/dap/data/nc/fnoc1.nc/u'. This would provide a way for RDF to attach metadata to each variable since each would appear as a thing in the web. That said, the existing syntax might be good enough because "... by generalizing the concept of a "Web resource", RDF can also be used to represent information about things that can be identified on the Web, even when they cannot be directly retrieved on the Web."RDF Primer. This doesn't mean that each variable has to be accessible, just name-able. | |||||||
| Discussion | ||||||||
| <<O>> Difference Topic AISIdeas (r1.5 - 23 Dec 2005 - JamesGallagher) |
The AIS | ||||||||
| Line: 19 to 19 | ||||||||
|---|---|---|---|---|---|---|---|---|
| How much of this general task can be done using THREDDS? RDF? OWL? | ||||||||
| Added: | ||||||||
| > > |
What about devising a URL syntax so that each item can be addressed as part of the URL. That is, instead of a projection CE, add the variable names to the URL like 'http://test/dap/data/nc/fnoc1.nc/u'. This would provide a way for RDF to attach metadata to each variable since each would appear as a thing in the web. | |||||||
| Discussion The client-side AIS is nice because it's so clean from a user's perspective. That is, it's obvious what's being done to the objects returned from the data source. But this architecture has a number of drawbacks. First, it does not scale well when the number of mappings increases because the mapping database is built anew for each virtual Connection. A way around this is to use some sort of persistence, with the most obvious being a RDB (e.g., MySQL). But that makes the clients pretty complex to configure. The mapping DB could be cached on disk using techniques similar to the HTTPCache class' method for managing the HTTP cache. So there are ways around the 'persistence problem' of this design. Another issue is that this code does not work in browsers; it only works in libdap-built clients. We'll have to duplicate it in the Java and C libraries, and so will every other implementer if they want their systems to get the benefit of the AIS (which we hope they will...). That's a pretty high price to pay for this design. However, we have a client-side AIS implemented already. | ||||||||
| <<O>> Difference Topic AISIdeas (r1.4 - 14 Dec 2005 - JamesGallagher) |
The AIS | ||||||||
| Line: 14 to 14 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
| Added: | ||||||||
| > > |
||||||||
| These four architectures are not exclusive of each other. One implementation might include all four ideas. | ||||||||
| Added: | ||||||||
| > > |
How much of this general task can be done using THREDDS? RDF? OWL? | |||||||
| Discussion The client-side AIS is nice because it's so clean from a user's perspective. That is, it's obvious what's being done to the objects returned from the data source. But this architecture has a number of drawbacks. First, it does not scale well when the number of mappings increases because the mapping database is built anew for each virtual Connection. A way around this is to use some sort of persistence, with the most obvious being a RDB (e.g., MySQL). But that makes the clients pretty complex to configure. The mapping DB could be cached on disk using techniques similar to the HTTPCache class' method for managing the HTTP cache. So there are ways around the 'persistence problem' of this design. Another issue is that this code does not work in browsers; it only works in libdap-built clients. We'll have to duplicate it in the Java and C libraries, and so will every other implementer if they want their systems to get the benefit of the AIS (which we hope they will...). That's a pretty high price to pay for this design. However, we have a client-side AIS implemented already. | ||||||||
| <<O>> Difference Topic AISIdeas (r1.3 - 13 Dec 2005 - JamesGallagher) |
The AISAttributes and Variables | ||||||||
| Changed: | ||||||||
| < < |
The current AIS implementation is limited to Attributes. Add support for variables. What does that mean exactly? | |||||||
| > > |
The current AIS implementation is limited to Attributes. Add support for variables. What does that mean, exactly?
| |||||||
Possible Architectures
| ||||||||
| Line: 13 to 16 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
| Added: | ||||||||
| > > |
Discussion
The client-side AIS is nice because it's so clean from a user's perspective. That is, it's obvious what's being done to the objects returned from the data source. But this architecture has a number of drawbacks. First, it does not scale well when the number of mappings increases because the mapping database is built anew for each virtual Connection. A way around this is to use some sort of persistence, with the most obvious being a RDB (e.g., MySQL). But that makes the clients pretty complex to configure. The mapping DB could be cached on disk using techniques similar to the HTTPCache class' method for managing the HTTP cache. So there are ways around the 'persistence problem' of this design. Another issue is that this code does not work in browsers; it only works in libdap-built clients. We'll have to duplicate it in the Java and C libraries, and so will every other implementer if they want their systems to get the benefit of the AIS (which we hope they will...). That's a pretty high price to pay for this design. However, we have a client-side AIS implemented already.
All is not lost. We can use the client-side AIS software to build an AIS server. I think that's where we should go. That way we have the client-side AIS for testing and development and a server for actual deployment. Since a server will probably be stateless, the persistence problem will still need to be solved, but there are a number of ways we can approach it. It might be that after some thought we make the AIS server a Java Servlet, in which case we can make the DB in-memory and constructed when the servlet is loaded into memory. Or we can take the approach that a servlet should use the 'copy HTTPCache' approach. We can keep going with the C++ code base for now and recode in Java once we have something with the correct mix of features. This is appealing since recoding working software is about as easy as development will ever get and we already have a prototype AIS server thing in the Server3.5 code base. This will let us tackle the design problems without mixing them up with a lot of new implementation.
So that leaves some important questions unanswered. What should an AIS Server actually do!
| |||||||
| Some Deployment Diagrams In these diagrams I show both the data and the ancillary information (AI?) as remote from the client and on distinct machines. That might not be the case if we create an AIS that supports a folksonomy where users can 'tag' variables and attributes. In that case we might bundle the result with our new server. Some of the lines in these are missing... | ||||||||
| <<O>> Difference Topic AISIdeas (r1.2 - 13 Dec 2005 - JamesGallagher) |
The AIS | ||||||||
| Line: 12 to 11 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
| Deleted: | ||||||||
| < < |
||||||||
| These four architectures are not exclusive of each other. One implementation might include all four ideas. | ||||||||
| Added: | ||||||||
| > > |
Some Deployment Diagrams
In these diagrams I show both the data and the ancillary information (AI?) as remote from the client and on distinct machines. That might not be the case if we create an AIS that supports a folksonomy where users can 'tag' variables and attributes. In that case we might bundle the result with our new server. Some of the lines in these are missing...
| |||||||
| -- JamesGallagher - 13 Dec 2005 | ||||||||
| Added: | ||||||||
| > > |
||||||||
| <<O>> Difference Topic AISIdeas (r1.1 - 13 Dec 2005 - JamesGallagher) |
| Line: 1 to 1 | ||||||||
|---|---|---|---|---|---|---|---|---|
| Added: | ||||||||
| > > |
The AISAttributes and Variables The current AIS implementation is limited to Attributes. Add support for variables. What does that mean exactly? Possible Architectures
| |||||||
* Figure 2. AIS with both parts of the merge in the URL: