如何为多个子域上使用的项目设置数据库,哪种技术最好使用?



我正在尝试开始开发一个大型Web项目,该项目应该用于多个子域,其中子域代表客户端。我面临着一个问题,我不知道此类项目的最佳或推荐解决方案。

项目(逻辑)应该是类似于 slack.com 的东西。子域表示客户端(clientAlpha.slack.com、clientBeta.slack.com 等)。问题是,我可以想象多种解决方案,所有这些解决方案都有很多缺点。

所有数据将存储在我的服务器上 - 客户端仅进行注册

  1. 如何为多个客户端组织数据库结构?

    • 每个客户端都有自己的数据库,以一些前缀命名。但是某种"超级数据库"存在问题,导致需要多数据库连接。多个数据库 = 数据库结构更新期间的丑陋作业。
    • 一个数据库,每个客户端有一些"超级表"和许多相同的表。我这是最丑陋的解决方案。与上述相同的结构更新问题。
    • 具有"正常"表的"正常"数据库,其中客户端由foreign_key表示。此解决方案会影响数据库的速度。
  2. 哪种类型的数据库最好使用?我的意思是数据(行)的数量是否有任何限制?我在MySQL和MongoDB方面有很好的实践。没有GPS,没有斑点 - 只有"纯"数据将存储在表格中(数字,字符串,布尔值,文本)

  3. 使用
  4. PHP用于服务器还是PHP已经死了,用于新项目创建?/或者使用 JavaScript (node.js)好吗?

我试图找到一些信息,但是一千人=一千个意见:/

感谢您的指导和建议。

一些注释,很多评论:

  • 打开的数据库连接不仅可以访问默认数据库。使用datbase.table访问其他数据库。
  • 使用不同(和唯一)前缀或不同的数据库。不要将它们混合。
  • 如果使用不同的数据库,请对全局数据(超级表)使用一个特殊数据库。
  • 始终存在数据库限制。最好是估计您的需求,将它们乘以 10 并查看数据库描述。无论如何,大多数磁盘和内存空间都是限制。
  • 使用最佳成员进行干净的数据库布局(例如,如果仅存储 0 到 1000 之间的值,请选择smallint),为您的数据库访问创建原理图以确定键。在开始实施之前,请同时执行这两项操作。

最新更新