我正在尝试开始开发一个大型Web项目,该项目应该用于多个子域,其中子域代表客户端。我面临着一个问题,我不知道此类项目的最佳或推荐解决方案。
项目(逻辑)应该是类似于 slack.com 的东西。子域表示客户端(clientAlpha.slack.com、clientBeta.slack.com 等)。问题是,我可以想象多种解决方案,所有这些解决方案都有很多缺点。
所有数据将存储在我的服务器上 - 客户端仅进行注册
-
如何为多个客户端组织数据库结构?
- 每个客户端都有自己的数据库,以一些前缀命名。但是某种"超级数据库"存在问题,导致需要多数据库连接。多个数据库 = 数据库结构更新期间的丑陋作业。
- 一个数据库,每个客户端有一些"超级表"和许多相同的表。我这是最丑陋的解决方案。与上述相同的结构更新问题。
- 具有"正常"表的"正常"数据库,其中客户端由foreign_key表示。此解决方案会影响数据库的速度。
-
哪种类型的数据库最好使用?我的意思是数据(行)的数量是否有任何限制?我在MySQL和MongoDB方面有很好的实践。没有GPS,没有斑点 - 只有"纯"数据将存储在表格中(数字,字符串,布尔值,文本)
使用 PHP用于服务器还是PHP已经死了,用于新项目创建?/或者使用 JavaScript (node.js)好吗?
我试图找到一些信息,但是一千人=一千个意见:/
感谢您的指导和建议。
一些注释,很多评论:
- 打开的数据库连接不仅可以访问默认数据库。使用
datbase.table
访问其他数据库。 - 使用不同(和唯一)前缀或不同的数据库。不要将它们混合。
- 如果使用不同的数据库,请对全局数据(超级表)使用一个特殊数据库。
- 始终存在数据库限制。最好是估计您的需求,将它们乘以 10 并查看数据库描述。无论如何,大多数磁盘和内存空间都是限制。
- 使用最佳成员进行干净的数据库布局(例如,如果仅存储 0 到 1000 之间的值,请选择
smallint
),为您的数据库访问创建原理图以确定键。在开始实施之前,请同时执行这两项操作。