在运行时按需创建架构和表

时间:2019-06-18 04:40:37

标签: java database spring hibernate spring-boot

因此,正如标题所示-我需要创建一个应用程序(最好是Spring Boot),该应用程序将根据用户输入创建模式和表。基本上,其余的端点将提供给客户端,以便客户端以json格式上传数据模型。我将在运行时解析json并构造db构件(模式和表)。创建完所有表后,请向客户端提供一个休息端点(具有唯一标识符),以在其架构上执行CRUD操作。

我目前正在考虑的方法是-

  1. 在db中创建一个超级用户,然后再部署具有特权的应用程序以创建新的架构和数据库

  2. 创建准备好的语句以按需调用模式/表创建。准备好的语句将具有占位符以采用模式名称和表定义。

  3. 经过正确身份验证后,允许用户将其数据模型定义上传到json中。

  4. 清理json并调用架构/表创建的准备好的语句。

我想到的几个问题-

  1. 由于所有这些数据库操作都将从单个超级用户帐户中调用,因此安全吗?

  2. 将使用本地SQL查询而不是Hibernate的ORM功能来实现模式和表。安全/有效吗?

  3. 对于CRUD操作,是否可以将数据库连接从超级用户切换到前面步骤中创建的客户端特定模式?还是应该继续对CRUD操作使用同一超级用户? 如果可以在运行时使用Hibernate / Spring-Boot切换架构,那就太好了。

我想要的是解决此问题的一般方法。我不需要任何代码

1 个答案:

答案 0 :(得分:0)

  1. 一个典型的Web应用程序已经具有为所有用户删除所有数据的权限。
  2. JPA使查询变慢,而不是变快。 JPA可以帮助缓存,但似乎您不需要它。
  3. 是的,在Spring Boot中可以有多个数据源。看看这个例子:https://www.baeldung.com/spring-abstract-routing-data-source

请注意,您的数据库可能不喜欢拥有数百万个表。查询计划,维护作业,备份等均会导致性能下降。基本上,数据库不是为您的用例设计的。