gpt4 book ai didi

python - 跨多个站点共享表

转载 作者:行者123 更新时间:2023-11-29 18:19:50 25 4
gpt4 key购买 nike

这更多的是一个架构问题,我无法正确解决这个问题,因为我对这种架构没有足够的经验......我目前正在使用运行解决方案PythonSqlAlchemy,但问题是通用的,答案不必涉及这些技术。

我将尝试以公共(public)图书馆的示例来解释它。想象一下有一个公共(public)图书馆,服务器保存着所有书籍、扫描件(大型二进制图像)和用户的 table 。我已经制作了一个客户端和服务器部分,它们工作得很好,但在本地用于单个库。

现在我想为另一个公共(public)图书馆(以及以后更多的公共(public)图书馆)提供服务器和客户端。每个图书馆都需要有一个本地服务器,因为需要在本地服务器之间传输大量数据。

复杂性来自于能够在图书馆之间共享用户(及其成员(member)卡)的要求 - 如果用户来到图书馆 A 并注册,他应该能够去图书馆 B 而无需重新注册。不需要能够看到他最初没有注册的库中的其他用户数据,只需查看他的成员(member)帐户(ID、登录名和密码)。

简单的解决方案是:

  • 本地服务器上有大量数据
  • 在云上拥有用户(互联网上的某些公共(public)服务器)

问题是存在查询(用于统计、 View 等),这些查询在本地服务器上运行并且需要访问用户,所以我不能在不同的服务器和数据库上拥有用户,因为我不能然后在这样的架构上选择+加入。

以前的开发人员留下的、其他开发人员认为错误的解决方案是将用户表设置为复制表(MariaDB + Galera) ,因此最终会让用户在云和每个图书馆站点上建立相同的表,因此之前的代码将像所有内容都在本地一样工作,同时与其他图书馆在后台共享用户。

问题之一是我们的数据库(MariaDB)的当前版本不支持(或已损坏)部分复制(仅某些表或某些数据库),因此需要修补 MariaDB 并分发这个修补版本的数据库服务器到云和其他站点,现在和将来当新版本的 MariaDB 出现时,这会带来各种问题。

在站点之间共享这些用户,同时保留进行本地选择和连接用户表的能力的正确方法是什么?

(也许有一个已知的设计/架构模式,但我只是不知道要搜索什么,因为我是新手。)

谢谢,米罗

schema - sharing table between sites

最佳答案

从用户注册的单一事实来源开始。这是某处(总部、云中,任何地方)的一个服务器(或 Galera 集群,用于 HA)。登录查询远程访问该服务器。

想想您登录的任何地方 - 您将前往某个中心引用。我的观点是,这就是每个人都这样做的方式,因为在当今的网络中,它快速、可靠、高效等。

接下来,图像等呢?如果它们在您的网站上共享,您也可以以相同的方式进行操作。看看过去二十年的任何搜索引擎——图像(等)都是从单个站点获取的。 (实际上是少量站点,用于冗余等)。即使是最大的网络提供商也可能不超过十几个数据中心来为全世界提供服务。

之后,您需要决定是使用云还是专用(甚至运行您自己的数据中心)。

对于 HA,云提供商做了很多工作。对于自己动手,有各种复制场景,Galera 是最好的之一(目前)。对于真正的 HA,您需要在地理上分开的数据的两个副本 - 以防止飓风、火灾、洪水、地震等。考虑 Galera 的 WAN 部署,或一些异步复制(甚至可能在两个 Galera 集群之间)。

另一个选择是“用户”表和“图像”表是否需要位于不同的服务器上。只有当流量和规模很大时才需要考虑将它们分开。对于一个巨大的图像库,您可能需要大量的服务器,此时,它们可能应该驻留在服务器上,其唯一目的是传递图像 - 没有用户,没有 HTML 页面等。即使是有关的“元”信息图像可能位于 MySQL 的其他位置;图像位于文件中,并且只是一个调整为传递图像的网络服务器运行。 (我能想到有多个“大佬”这样做过。)

关于python - 跨多个站点共享表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46684242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com