首页 > 解决方案 > 如何为多个子域上使用的项目设置数据库以及最好使用哪种技术?

问题描述

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

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

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

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

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

  3. 将 PHP 用于服务器是否仍然很常见,或者 PHP 对于新项目的创建已经死了?/或者好用JavaScript(node.js)?

我试图找到一些关于此的信息,但千人=千人意见:/

感谢您的指导和推荐。

标签: javascriptphpdatabasesettingsproject

解决方案


一些注释,非常值得评论:

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

推荐阅读