我已经知道了 我正在学习如何在Rails中创build一个多租户应用程序,该应用程序根据用于查看应用程序的域或子域来提供来自不同架构的数据。 我已经有几个回答的问题了: 你怎么能得到子域福与域的工作呢? 这里有人问你把这个博客引向你的同一个问题 。 什么数据库,以及如何构build? Guy Naor的一个很好的演讲 ,以及有关PostgreSQL和模式的好问题 。 我已经知道我的模式都将具有相同的结构。 他们将持有的数据不同。 那么, 如何运行所有模式的迁移呢? 这是一个答案 。 这三点涵盖了我需要知道的很多常规内容。 然而,在接下来的步骤中,我似乎有很多方法来实现的东西。 我希望有一个更好,更简单的方法。 最后,对我的问题 当新用户注册时,我可以轻松创build架构。 然而, 加载其余模式已经具有的结构的最好和最简单的方法是什么? 这里有一些问题/情况可能会给你一个更好的主意。 我应该把它传递给一个shell脚本 ,将公共模式转换为临时脚本 ,并将其导回到我的主数据库(很像Guy Naor在他的video中所说的)? 以下是我从freenode上有用的#postgres获得的简短摘要/脚本 。 虽然这可能会起作用,但我必须在Rails之外做很多事情,这让我有点不舒服,这也让我接下来的问题。 有没有办法直接从Ruby on Rails做到这一点 ? 就像创build一个PostgreSQL模式一样,然后将Rails数据库模式(schema.rb – 我知道这很混乱)加载到PostgreSQL模式中。 有没有一个gem/插件已经有这些东西? 诸如“create_pg_schema_and_load_rails_schema(the_new_schema_name)”之类的方法。 如果没有的话,我可能会努力创build一个,但是我怀疑所有移动部分的testing效果如何(特别是如果我最终使用shell脚本来创build和pipe理新的PostgreSQL模式)。 谢谢,我希望不会太久!
我一直沉迷于正确/最佳的方式来创build一个基于Django的多租户应用程序。 一些解释: 应用程序可以由几个租户(tenant1,tenant2,…)使用。 所有的租户个人数据必须得到保护,防止其他租户(及其用户)的访问。 租户可以为应用程序对象创build额外的自定义字段。 当然,底层硬件限制了一个“系统”上租户的数量。 1)通过例如子域分隔每个租户,并使用底层的租户特定数据库 2)使用模型中的一些租户ID分离数据库中的租户数据 我正在考虑部署过程,系统部分(networking服务器,数据库服务器,工作节点等)的性能。 什么是最好的设置? 亲和骗子在哪里? 你怎么看?
我正在开发一个旨在简化公司工作stream程和项目pipe理的PHP应用程序,让我们来说一下像Basecamp和GoPlan 。 我不确定最好的方法是数据库方式。 我应该使用单个数据库并为每个表添加客户特定的列,还是应该为每个新客户创build一个数据库? 一个重要的因素是自动化:我希望它创build一个新的客户端(也许开放自己注册的可能性)是简单的。 使用一个数据库可以考虑的可能的缺点: 缺乏可扩展性 安全问题(尽pipe错误不应该在那里 ) 你对此有什么想法? 你有什么想法上述公司最有可能select什么解决scheme?
我正在考虑使用MongoDB创build一个多租户应用程序。 对于我现在有多less租客,我没有任何猜测,但我希望能够扩大到数千人。 我可以想到三个策略: 所有租户都在同一个集合中,使用租户特定的安全领域 1每个租户收集在一个共享的数据库中 每个租户1个数据库 我脑海中的声音暗示着我select了第二种select。 想法和含义,任何人?
我们的软件目前运行在MySQL上。 所有租户的数据存储在同一个模式中。 由于我们使用Ruby on Rails,所以我们可以很容易地确定哪些数据属于哪个租户。 但是,有些公司当然担心他们的数据可能会受到影响,所以我们正在评估其他解决scheme。 到目前为止,我看到了三个select: 多数据库(每个租户都有自己的 – 每个客户的服务器几乎相同) 多模式(在MySQL中不可用,每个租户都在共享数据库中获取自己的模式) 共享模式(我们目前的方法,也许每个列都有额外的识别logging) 多架构是我最喜欢的(考虑成本)。 然而,创build一个新帐户并进行迁移似乎是相当痛苦的,因为我将不得不迭代所有模式并更改它们的表/列/定义。 问:多架构似乎被devise为每个租户有略微不同的表 – 我不想这样。 是否有任何RDBMS允许我使用多模式多租户解决scheme,其中表结构在所有租户之间共享? PS多我的意思是像超多(10.000 +租户)的东西。
在为多个客户端devise的以数据库为中心的应用程序中,我一直认为对所有客户端使用单个数据库是“更好的” – 将logging与正确的索引和键相关联。 在听Stack Overpod播客时,我听到Joel提到FogBugz每个客户端使用一个数据库(所以如果有1000个客户端,则会有1000个数据库)。 使用这种架构的优点是什么? 我明白,对于一些项目,客户端需要直接访问他们的所有数据 – 在这样的应用程序中,显然每个客户端都需要自己的数据库。 但是,对于客户端不需要直接访问数据库的项目,每个客户端使用一个数据库是否有优势? 从灵活性的angular度来看,使用单个数据库和表的单个副本要简单得多。 添加新function更容易,创build报告更容易,pipe理起来更简单。 我对“所有客户端的一个数据库”方法非常有信心,直到我听说Joel(一位有经验的开发人员)提到他的软件使用了不同的方法 – 我对他的决定有点困惑… 我曾经听到有人说数据库有大量的logging会减慢速度,但是任何有一些优点的关系数据库都不会有这个问题 – 特别是如果使用了合适的索引和键的话。 任何input,非常感谢!
考虑一个移动设备pipe理器系统,其中包含每个用户的信息,如存储他在手机上安装的应用程序的表格,审核详细信息,通知信息等。是否明智地为每个用户创build一个单独的模式? 对于单个用户来说,表格的数量是很大的,每个用户大约有30个表格。 将所有这些信息放到这些表中(反过来创build巨大的表),还是为每个用户创build一个模式,最好是有一个独立的模式? 提前致谢