Earth Cubed

Distributed Climate Science and Computing

Database and Platform Independence

Originally my intent was to use Microsoft access and visual basic as the primary development environment. This is convenient because because Microsoft Access databases are easy to edit and work with. Also visual basic is built into Microsoft access.

When I got thinking about the project further this might be an okay, solution for a personal computer but would not be a good idea for a distributed application. This is because I don’t want to limit the project so that the program can only run on one computer. Therefore, cross platform support is important.

Well, databases have many functionalities, the primary purpose of a database is a store of information. Information can be stored in a database, a spreadsheet, a text file, or a serialized object.  If the information could be potentially stored across many databases, why limit the storage of data just to databases?

The nice thing about Access databases is the built in support for visual basic functions. This makes a database more like an application then just a simple store of information. Databases retrieve information, functions return values, in essence they are not that different. In a way a function or an application, is a generalization of a database. Therefore, rather then think about databases, we should think about entities that provide services.

These entities may have at least one of the following functions

-Retrieve Information

-Refine Information

-Store Information

The entities themselves, can be platform specific, but the arceteture which supports them should not. Therefore, I am thinking of using Java as the primary tool to links these entities together, in a distributed multiplatform fassion.

There will be an abstract class called entityContainer. This class will have functions, that we need to retrieve, store and refine information. One of the information refinement methods will be intialize. The abstract class does not know how information will be intialized but knows the database may need to be intialized.

Other classes will involve the retrieval of  information. For instance, there will be a function called getPressure(coordinate), which will either return the pressure. An isntance of this function may be implemented by calling a macro from inside a database. Alternatively, it could connect to access though an ODB connection. The function may even be implemented to call a perl script file which reads the infromation from a text file.

The Java program could maintain a list of these entity containers in a three dimensional array. Knowing the coordinate, the Java program would select the entity which is most appropriate to retrieve the information. Each entity container could have multiple sources it could retrieve this information from.  The entity container would rank these sources and if it failed to get information from the first source it would try the second source and so on.

Thus at a high level, the Java program would decide what task to preform, well at a lower level separate entities (which could be platform specific and do not need to reside on the same computer) decide how to handle this task.

In this way alot of the data could be built using microsoft access but not limit the overal arcetecuture to a single platform.

August 6, 2009 - Posted by | Computer Science and Modeling

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: