24. A method for application-layer monitoring of communication between one or more database clients and one or more database servers, the method comprising: at a decoding layer above a network layer on a database device at a first network location between one or more database clients residing at one or more second network locations distinct from the first network location and one or more database servers residing at one or more third network locations distinct from both the first network location and the one or more second network locations: using one or more decoders on the database device for receiving database messages communicated over the network from any of the database clients residing at the one or more second network locations and intended for the database servers at the one or more third network locations and database messages communicated from the database servers and intended for the database clients; decoding the database messages, wherein decoding the database messages comprises decoding a protocol generated as an output of a database connectivity driver in response to an input by a database application residing at an application layer, wherein decoding the database messages comprises decoding database messages of database implementations different from each other and, wherein the database connectivity driver is utilized by the one or more database clients to communicate with the database serve; and extracting query-language statements from the database messages, wherein the query-language statements are created by the database application at one or more of the database clients and provided as input to the database connectivity driver and the database connectivity driver generate the database message as an output based on the query-language statement; and at an application layer above the decoding layer at the first network location, using a monitoring application on the database device for receiving query-language statements extracted at the decoders and recording observations on the database messages based at least in part on the query-language statements extracted at the decoding layer.
24. A method for application-layer monitoring of communication between one or more database clients and one or more database servers, the method comprising: at a decoding layer above a network layer on a database device at a first network location between one or more database clients residing at one or more second network locations distinct from the first network location and one or more database servers residing at one or more third network locations distinct from both the first network location and the one or more second network locations: using one or more decoders on the database device for receiving database messages communicated over the network from any of the database clients residing at the one or more second network locations and intended for the database servers at the one or more third network locations and database messages communicated from the database servers and intended for the database clients; decoding the database messages, wherein decoding the database messages comprises decoding a protocol generated as an output of a database connectivity driver in response to an input by a database application residing at an application layer, wherein decoding the database messages comprises decoding database messages of database implementations different from each other and, wherein the database connectivity driver is utilized by the one or more database clients to communicate with the database serve; and extracting query-language statements from the database messages, wherein the query-language statements are created by the database application at one or more of the database clients and provided as input to the database connectivity driver and the database connectivity driver generate the database message as an output based on the query-language statement; and at an application layer above the decoding layer at the first network location, using a monitoring application on the database device for receiving query-language statements extracted at the decoders and recording observations on the database messages based at least in part on the query-language statements extracted at the decoding layer. 35. The method of claim 24 , wherein a single nonblocking control thread drives the decoding layer and the application layer according to message events in an event queue.