Postgresql 如何在分布式数据库中管理用户会话?

Postgresql 如何在分布式数据库中管理用户会话?,postgresql,session,database-design,database-replication,Postgresql,Session,Database Design,Database Replication,因为我在开发可以水平扩展的web应用程序方面没有经验,所以我需要有经验的人指导我正确的方向 我很难找到在数据库中存储登录会话的正确方法,所以我提出了一个问题:当我计划在将来使用复制时,在数据库中存储登录会话是否正确?如果不是的话,还有什么替代品 我需要不同的客户端(android、Windows等)通过与同一用户相关的各自会话连接到服务器,并且我正在使用: 1分操作系统作为操作系统 2-PostgreSQL作为数据库管理系统 3-TOME作为HTTP服务器和Servlet容器 4-分区表(Pos

因为我在开发可以水平扩展的web应用程序方面没有经验,所以我需要有经验的人指导我正确的方向

我很难找到在数据库中存储登录会话的正确方法,所以我提出了一个问题:当我计划在将来使用复制时,在数据库中存储登录会话是否正确?如果不是的话,还有什么替代品

我需要不同的客户端(android、Windows等)通过与同一用户相关的各自会话连接到服务器,并且我正在使用:

1分操作系统作为操作系统

2-PostgreSQL作为数据库管理系统

3-TOME作为HTTP服务器和Servlet容器

4-分区表(PostgreSQL中的继承表),以提高性能、内存中索引扫描的机会、防止碎片等

我的问题来自这样一个事实:我需要检查从客户端收到的每个请求中的会话可用性(每个会话都有自己的加密密钥),并且可能有数百万个会话,在分布式环境中,我无法确保创建的会话在正确的时间在复制数据库中可用


感谢您的帮助

在RDBMS中存储用户会话将最终降低应用程序的性能。您应该了解用于存储和读取用户会话的分布式缓存机制。我强烈推荐用于用户会话的NoSQL数据库解决方案,如Redis,它使您能够在内存中存储键值对,并以非常高的速度响应。此外,您可以调整配置文件,以便将内存中的键值对存储到磁盘以进行持久化。您还需要关注键值对在多个NoSQL实例和内部数据结构(如HashMaps)之间的分布。您可以使用自己的散列算法在多个实例上分发键值对,这将使您具有高可用性。您应该记住,水平共享数据会导致一些问题,您可以参考前面的详细信息