代码之家  ›  专栏  ›  技术社区  ›  rkj

同一MySQL数据库中的多个站点

  •  1
  • rkj  · 技术社区  · 16 年前

    类似于这样的结构: cms_pages cms模块

    我一直在想,这些表中的每一个都应该有一个customer_id列,这样我就可以很容易地选择和调用给定客户的行。但是,在加载时间、内存使用和所有这些方面,这是最好的方法吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Vinko Vrsalovic    16 年前

    在性能方面,拥有大量数据的客户将影响拥有较少数据的客户的性能(因为索引扫描时间将与页面总量成比例增长,即使可以通过使用多列索引来缓解这种情况。)

    因此,为每个客户建立一个单独的数据库并为此付出代价是有意义的,除非你确定这些网站是流量不大的小型网站,他们都是朋友,或者永远不会找到自己的数据库用户名:-)。

        2
  •  1
  •   Kimble    16 年前

    这被称为多租户架构。有几种方法可以实现这一点。如果你投入一些时间开发一个合适的数据库库,你可以(理想情况下)重写所有查询,在所有查询中注入tenantId条件。这样,您就知道每个租户只能访问他们的数据(只要您创建的db-lib传递了所有查询)。

    另一个挑战是创建适当的数据库索引。您通常必须使用customerId/tenantId列+所查找的字段创建多列索引。