Thread: creating a custom server

creating a custom server

From
Victor Ivanov
Date:
    Hi!

    First, sorry if this is off topic.  Second, WARNING: broken english
ahead :)

    Is it possible to create a 'custom' server which can accept normal
connections from normal clients, but use different language (or just
'proxy' the queries to the real server)?  A friend of mine told me this
is a feature of some commercial sql server.  What I acutaly want to do
is to add another layer between the client and the server.

    For example, a client connects and issues a query like 'show sessions'.
My server checks if the client has permission (according to a table in
postgres) and then 'translates' the query to 'select * from sessions' or
something else.  The result is then sent back to the client (possibly
modified).

    Another way to do this is to get the communication library and use
it in my application...

    Any ideas/hints/etc will be appreciated.

--
Players win and winners play
Have a lucky day

Re: creating a custom server

From
Keary Suska
Date:
Off the top of my head, I don't recall any specific 'middleware'
implementations that do this exactly, but it wouldn't be entirely difficult
to make one of your own. If you are familiar with Perl or Python, making a
parallel processing network server is not rocket science, and you have
complete control over the desired protocol.

Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"

> From: Victor Ivanov <v0rbiz@icon.bg>
> Date: Thu, 18 Oct 2001 12:17:00 +0300
> To: pgsql-general@postgresql.org
> Subject: [GENERAL] creating a custom server
>
> Hi!
>
> First, sorry if this is off topic.  Second, WARNING: broken english
> ahead :)
>
> Is it possible to create a 'custom' server which can accept normal
> connections from normal clients, but use different language (or just
> 'proxy' the queries to the real server)?  A friend of mine told me this
> is a feature of some commercial sql server.  What I acutaly want to do
> is to add another layer between the client and the server.
>
> For example, a client connects and issues a query like 'show sessions'.
> My server checks if the client has permission (according to a table in
> postgres) and then 'translates' the query to 'select * from sessions' or
> something else.  The result is then sent back to the client (possibly
> modified).
>
> Another way to do this is to get the communication library and use
> it in my application...
>
> Any ideas/hints/etc will be appreciated.
>
> --
> Players win and winners play
> Have a lucky day
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>


Re: creating a custom server

From
Alex Pilosov
Date:
On Thu, 18 Oct 2001, Keary Suska wrote:

> > First, sorry if this is off topic.  Second, WARNING: broken english
> > ahead :)
> >
> > Is it possible to create a 'custom' server which can accept normal
> > connections from normal clients, but use different language (or just
> > 'proxy' the queries to the real server)?  A friend of mine told me this
> > is a feature of some commercial sql server.  What I acutaly want to do
> > is to add another layer between the client and the server.
> >
> > For example, a client connects and issues a query like 'show sessions'.
> > My server checks if the client has permission (according to a table in
> > postgres) and then 'translates' the query to 'select * from sessions' or
> > something else.  The result is then sent back to the client (possibly
> > modified).
What your friend is talking about is probably Sybase Open Server.

This is usually done using some sort of middleware, but in case of
postgresql, you can do something similar to it using plperl.

The idea here is not just translation of queries, but providing
higher-level abstraction for client-server interaction, not just a query
taking a finite number of arguments that returns recordset, but a request
containing serialized data structure returning another serialized data
structure. Each structure can be arbitrarily complex (hash of array of
hashes, for example), as long is it can be serialized and deserialized.

pl/perl is a perl programming language for postgresql, you can write a
stored procedure that will accept a binary string that represents a
serialized structure, and returns the same.


Let me know if I can explain it further.

-alex