Probably most of the items on this page will be either major coding efforts or will reflect some probable change in the genome mapping community or computing industry (e.g. the rise and rise of Windows/NT ??).
In the longer term serious consideration needs to be given to the long term support of windows platforms. This could be done in a number of phases:
Currently there is no part of acedb code that is threaded. The only place that "overlapping" execution takes place is in the acedb server when a client makes a very large request. In this case the server chops up the request and only executes and returns a portion at a time to the client.
There are three major reasons for threading an application:
There are two major parts to threading acedb code:
The major reasons for threading the kernel are to increase throughput and perhaps to make some of the handling of multiple clients conceptually easier. Note that throughput may be servicing a large request for one particular client (e.g. a large query search in parallel) or lots of smaller requests for multiple clients. For the acedb GUI applications the major reason would be to allow the GUI to remain responsive while perhaps waiting for data from a network connection.
Threading will require a number of preliminary steps:
Currently acedb is written in C, this is because work on acedb was started before robust implementations of C++ were generally available on a wide variety of platforms. Work has continued to be in C and there is some sense to this in that the standard ANSI C library is available on all unix platforms, windows and some versions of the MAC, providing a constant programming environment. C++ libraries are not usually available unless the C++ compiler has been installed. Perhaps even more importantly the C++ Standard Template Library (STL), which would provide a major incentive for swopping to C++ is even less generally available. Never the less C++ has much to offer that acedb could make use of. Large parts of the acedb code use 'object' like concepts and deal with 'object' like data that could more usefully become fully fledged objects, blah, blah, blah. Currently this is all pipe dreams, there aren't the resources/experience to do much about this....pity.
Currently there are two models for applications accessing databases:
It may simplify coding/maintenance etc. to have only one model, the client/server one. Performance issues could be solved by providing different methods of communication between the client and server: if both are on the same machine, shared memory could be used for speed, if on different machines then sockets or whatever could be used.
Should acedb be replaced with oracle ? should users be able to keep their data in an Oracle database but have a transaction supplied which extract acedb like data, this way oracle would deal with concurrency/backups/disasters etc but the front end could still work on acedb like data.