[pgpool-hackers: 4339] Re: Proposal: Add user_redirect_preference_list

Bo Peng pengbo at sraoss.co.jp
Tue May 23 15:45:12 JST 2023


Ishii-san,

Thank you!
 
> > > I would like to add a new GUC parameter "user_redirect_preference_list" to 4.5
> > > to allow routing queries to a specific backend node for a specific user connection.
> > > 
> > > Currently, we have database_redirect_preference_list and app_name_redirect_preference_list,
> > > which allow routing queries to a specific backend node for a specific database connection or
> > > a specific client application connection.
> > > 
> > > I think the use case, which uses a connection user based load balance, is also needed.
> > > 
> > > For example, an application has GUI management console and server daemon,
> > > which connect to the same database. GUI management console mainly issues SELECT
> > > and server daemon mainly issues INSERT.
> > > In such case, users may want to route all queries issued by GUI management console
> > > to standby servers to reduce the load on primary server.
> > > 
> > > To handle such case, normally we can use app_name_redirect_preference_list.
> > > However, in some applications the application name may not be configurable.
> > > 
> > > That is the reason why I want to add this feature.
> > > 
> > > Any comments?
> > 
> > Sounds like a useful feature. However, if it's implemented, now we
> > have
> > database_redirect_preference_list. app_name_redirect_preference_list
> > and user_redirect_preference_list. I feel a little bit redudant. I
> > think we can unify all of them. For example:
> > 
> > redirect_preference_list = 'selector:user,user0:primary,user[1-4]:1,user[5-9]:standby'
> > 
> > where "selector" is one of "user", "app_name" and "database". In the
> > example above, it means that:
> > 
> > - user0 is redirected to primary
> > - user1 to user4 are redirected to db node 1
> > - user5 to user9 are redirected to one of standby servers
> > 
> > What do you think?
> 
> Thank you!
> 
> Yes. I think it is a good idea to unify them.
> 
> If we add this new parameter like "redirect_preference_list",
> I think we should also keep the backward compatibility to make sure
> the old parameters can work with the new major version.

I think if we unify the setteing by using a single parameter, such as  "redirect_preference_list", only one of database, user, app_name can be set.

Currently, we can set both of datanase and app_name.

For example:

  database_redirect_preference_list = 'test:standby'
  app_name_redirect_preference_list = 'psql:primary'

For compatibility with this feature, I think we need to
add a new parameter "user_redirect_preference_list".

Any ideas?

-- 
Bo Peng <pengbo at sraoss.co.jp>
SRA OSS LLC
https://www.sraoss.co.jp/


More information about the pgpool-hackers mailing list