【问题标题】:SaaS application on shared server with multiple databases具有多个数据库的共享服务器上的 SaaS 应用程序
【发布时间】:2017-11-19 12:57:59
【问题描述】:

我打算用 PHP 创建一个 SaaS 应用程序。在该应用程序中,用户可以创建和管理多个表以扩展功能。用户完成应用程序后,他可以下载 php 代码和数据库。

我们还将提供 sql 导入功能,以便用户可以从 (.sql) 文件创建架构。

我在谷歌上搜索但没有找到任何合适的解决方案。您可以在此处考虑 sqlfiddle 功能。

我有两个选择,但需要更好的解决方案: 1)对于创建多个数据库及其表,使用表前缀作为解决方案 2)将mysql转换为sqlite。在下载时创建导出为 mysql (.sql) 文件。

它可以有 aprox。 10,000 个用户/数据库。请提出一个解决方案,为每个用户提供一个单独的数据库(如果有)。

如果共享服务器无法运行,我将购买 VPS。主要要求是为每个用户提供自己的数据库。

【问题讨论】:

  • 一个明显的解决方案是为每个用户创建一个 sqlite 文件。您是否有理由不能采用最简单的解决方案?
  • 谢谢。可能有 10k 个 sqlite 文件。普通服务器可以吗?如果购买VPS应该是什么配置?
  • 10k 个文件不算什么。如果您的 VPS 可以处理负载,我无法告诉您。与您的 VPS 供应商交谈,也许准备好概念验证。编写一个打开 10k 文件并并行执行语句的 30 行程序应该不会太难。看看它是如何工作的。
  • 我很抱歉这个简单的问题。您的用户是否在您的服务器上运行项目?这意味着您服务器上的数据库有任何数据还是只有元数据?
  • 是的,用户将在我们的服务器上运行项目。可以自定义代码和一些数据库模式。完成后,用户可以下载项目文件和数据库并在自己的服务器上运行。

标签: mysql database sqlite mariadb saas


【解决方案1】:

我将选择 sqlite 作为 db 的选择。在做了一些基准测试之后,sqlite 似乎是 DDL 和 DML 操作的不错选择。

我将使用 mysql 到 sqlite .sql 转换器:https://github.com/sutara79/convert-mysql-to-sqlite

为了提高速度,我遵循以下 stackoverflow 帖子: Improve INSERT-per-second performance of SQLite?

【讨论】:

    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 2016-03-17
    • 2014-10-25
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多