【问题标题】:HOW TO Create new databases or database instances on the application for each user?如何在应用程序上为每个用户创建新的数据库或数据库实例?
【发布时间】:2013-03-23 14:02:07
【问题描述】:

如您所知,当您拥有像博客这样的应用程序时,用户可以发布文章、画廊、创建静态页面、编辑器编辑它们...

你有这样的表:

  • 文章
  • 作者
  • 编辑
  • 画廊
  • 静态页面 等等。

如果您想创建一个每个用户都可以创建自己的博客的博客服务怎么办?

当我们再次查看上面的示例时,我们必须在每个表上创建一些额外的表和字段。

部分用户可以订阅我们的服务,并创建他们的博客:

订阅者 博客 订阅者 ID 作者 blog_id 编辑 blog_id 画廊 blog_id 静态页面 blog_id

你必须检查每个请求,如果用户拥有该博客,是否被授权等等。

如您所见,这让一个简单的博客软件极其复杂。

除此之外,是否有任何应用程序或云服务可以在我的软件上使用它的 api 并使用应用程序 sql 以及当我的用户注册并开始使用他们的服务时创建一个全新的干净数据库实例?

我现在非常坚持...任何帮助将不胜感激。

【问题讨论】:

  • 您仍然可以允许用户使用一个数据库创建自己的博客。如果您想使用单独的 API,则必须管理用户登录该服务的详细信息以及相关的密钥(这可能违反也可能不违反 API 的服务条款)
  • 听起来您正在尝试学习如何编程和设计数据库。在这种特殊情况下,可能值得您花时间搜索与您想要的功能相似的开源软件 - 看看他们是如何做到的。一本关于数据库设计/规范化的基础书籍肯定会有所帮助。

标签: php mysql cakephp partitioning multi-tenant


【解决方案1】:

我有点困惑。

  1. 您想拥有一个博客服务,人们可以在其中注册并访问自己的博客网站?
  2. 您想将每个新的博客用户放在一个单独的数据库中吗?

除非您计划拥有数十万用户,否则您实际上只需要 1 个数据库即可启动。

我认为您不需要创建额外的表格或字段。所有链接到作者的表都应该已经有一个 author_id 字段或一个连接表。

所以.. 博主在注册时会被归为作者。

作者将在那里包含 ID。

所有其他表都将通过 id 字段或连接表与该 id 相关。因此,如果您从文章、画廊等中选择... 你会做的

SELECT * FROM 文章 WHERE author_id=1234

【讨论】:

  • 这是最好的方法。基本上你想要的是 access 受到创建它们的用户的限制。即当前登录的用户应该只被允许编辑他/她自己的帖子。这样,您仍然可以分配允许编辑/删除 any 用户的帖子的“管理员”用户,例如审核帖子。要查看特定用户的帖子,您可以通过 url 传递博客用户(例如 www.mydomain.com/posts/user1/article123),或为每个用户使用“子域”用户并将其用于过滤(例如 user1.mydomain.com、user2.mydomain.com)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多