gpt4 book ai didi

mysql - 如何为rails/mysql使用多个结构相同但每个用户内容不同的数据库?

转载 作者:行者123 更新时间:2023-11-29 12:45:51 25 4
gpt4 key购买 nike

嗯,我知道这听起来有点奇怪,但这正是我想做的。

我有一个 Rails 应用程序,其中有 8 个表。其中之一,设备创建的表,名为:“partners”。

我将每个用户存储在该表中。但除此之外,其他表格内容对于每个合作伙伴来说应该是唯一的。我想在身份验证后使用某种方法并将数据库设置为 db_"#{parentName}",但我不知道如何继续。如何创建和使用这些具有相同结构的不同数据库?

最佳答案

SAAS

您正在查看的是 multi tenancy :

enter image description here

这基本上意味着您为众多用户拥有一组不同的数据库(不仅仅是数据表)。您通常会拥有一组中央“公共(public)”数据(例如用户和选项),然后是一系列“租户”数据库,其中将容纳您需要的所有表

Rails Multi-Tenancy 才真正实现 with PostgreSQL schemas之前:

enter image description here

但是,MYSQL还是有希望的:)

<小时/>

MYSQL Multi-Tenancy

MYSQL(真正的) Multi-Tenancy 的问题有几个方面:

  1. Creating DataBASEes programatically is only possible with the "right" hosts
  2. Rails can only support one schema - meaning if you want "Tenant" DB's, you need to create functionality for multiple schemas
  3. You need a way to bind the creation of your databases with the creation of Accounts etc (probably with Resque)

我们现在实际上已经解决了第一个问题 - 我们的主机 RackSpace 实际上 provides an API for its MYSQL database instances 。在与他们的一位出色的开发人员(Evan Light)合作后,我们设法为其建立了一个可以动态创建 MYSQL 数据库的系统。完全合法且程序化:)

下一个问题是我们仍在研究的问题 - 多个模式。这有点棘手,因为 Rails 似乎依赖于每次执行迁移时在 db/schema.rb 中创建架构。对于真正的 Multi-Tenancy ,您需要能够处理租户数据库以及“主”数据库的架构。不幸的是,我现在没有任何资源可以提供给您

最后,您需要能够将它们链接在一起。如果您尝试“同步”创建数据库,这将是非常低效的 - 这意味着您在与应用程序相同的流程中处理它。您需要“异步”(在后台)处理它,从而释放应用程序的进程。这最好通过排队机制来完成,例如 Resque

关于mysql - 如何为rails/mysql使用多个结构相同但每个用户内容不同的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25443369/

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