[Monetdb-developers] MAPI wire protocol?
Hello, I'm working on a C#/.NET client library to connect to a MonetDB server. I've mapped most of the libMapi.dll api calls so that I can call the C library from .NET but this presents a few problems: 1. There's a performance penalty to interface native code libraries to .NET 2. There's a lot of overhead of marshaling UTF8 strings between .NET and the C library, and potential problems with NULL parameters. 3. There's a portability problem with using the native libraries (trouble deploying to the Mono runtime) I think the client library would be better off implementing the MAPI wire protocol rather than interfacing with the C library, but I cannot find any documents that detail the protocol. Is there somewhere this is published, or did I just not Google the right stuff? Also if anyone is interested in giving me a hand you can find the Google Code workspace of the aforementioned project at this link: http://code.google.com/p/monetdb-net/ -Tim Gebhardt tim@gebhardtcomputing.com
Tim Gebhardt wrote:
Hello, Hello Tim,
thanks for your interest in MonetDB and your effort on the Windows platform. We greatly appreciate it, because windows experts are a scarce resource in a mostly Linux world.
I'm working on a C#/.NET client library to connect to a MonetDB server. I've mapped most of the libMapi.dll api calls so that I can call the C library from .NET but this presents a few problems:
1. There's a performance penalty to interface native code libraries to .NET 2. There's a lot of overhead of marshaling UTF8 strings between .NET and the C library, and potential problems with NULL parameters. 3. There's a portability problem with using the native libraries (trouble deploying to the Mono runtime)
I think the client library would be better off implementing the MAPI wire protocol rather than interfacing with the C library, but I cannot find any documents that detail the protocol. Is there somewhere this is published, or did I just not Google the right stuff?
The MAPI wire protocol has been developed and is used for a very long time, way before XML became fashionable. It is purposely in UTF8, for it greatly simplified debugging, portability, interfacing,... Moreover, the same protocol is used in all our APIs (php, python,java,perl,...) which eases maintenance. We are aware of the corresponding overhead, but consider it less of a priority, knowing that most of the effect goes in communication itself and db core activity. So, from our side we are first and foremost interested in the 1) and 3) wrt your issues 1) does it amount to loading time only, or each call. And how bad is it? 2) what problems do you foresee with NULL parameters? 3) can you a bit more specific regards, martin
Also if anyone is interested in giving me a hand you can find the Google Code workspace of the aforementioned project at this link: http://code.google.com/p/monetdb-net/ http://code.google.com/p/monetdb-net/
-Tim Gebhardt tim@gebhardtcomputing.com mailto:tim@gebhardtcomputing.com ------------------------------------------------------------------------
------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ ------------------------------------------------------------------------
_______________________________________________ Monetdb-developers mailing list Monetdb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-developers
On 06-11-2007 20:48:42 -0600, Tim Gebhardt wrote:
I think the client library would be better off implementing the MAPI wire protocol rather than interfacing with the C library, but I cannot find any documents that detail the protocol. Is there somewhere this is published, or did I just not Google the right stuff?
There is no official documentation of this protocol. However, most of the protocol, I have documented in the Java MCL sources, used by the JDBC driver. In particular these are a good starting point: http://homepages.cwi.nl/~fabian/MonetDB/Java%20Package.html/nl/cwi/monetdb/m... http://homepages.cwi.nl/~fabian/MonetDB/Java%20Package.html/nl/cwi/monetdb/m... http://homepages.cwi.nl/~fabian/MonetDB/Java%20Package.html/nl/cwi/monetdb/m... You can get easily confused by all other classes in the package, so primarily focus on these, and for an example how to use it, look into the JDBC driver's MonetConnection class.
participants (3)
-
Fabian Groffen
-
Martin Kersten
-
Tim Gebhardt