Создание схемы и таблиц по требованию во время выполнения - PullRequest
2 голосов
/ 18 июня 2019

Итак, как подсказывает заголовок - мне нужно создать приложение (предпочтительно Spring Boot), которое будет создавать схемы и таблицы на основе пользовательского ввода. В основном, конечная точка отдыха будет предлагаться клиентам, где они будут загружать свою модель данных в формате json. Я буду разбирать JSON и создавать артефакты БД (схемы и таблицы) во время выполнения. И как только все таблицы созданы, предоставьте клиенту конечную точку отдыха (с уникальным идентификатором) для выполнения операций CRUD над своей схемой.

Подход, который я рассматриваю в настоящее время -

  1. Создайте суперпользователя в БД, прежде чем развертывать приложение, которое будет иметь полномочия для создания новых схем, и БД

  2. Создание подготовленных операторов для запуска создания схемы / таблицы по требованию. Подготовленные операторы будут иметь заполнители, чтобы взять имя схемы и определение таблицы.

  3. После надлежащей аутентификации разрешите пользователям загружать свои определения модели данных в json.

  4. Очистите json и вызовите подготовленные операторы создания схемы / таблицы.

Несколько вопросов, которые я имел в виду -

  1. Поскольку все эти операции с БД будут вызываться из одной учетной записи суперпользователя, это безопасно?

  2. Схемы и таблицы будут реализованы с использованием собственных запросов SQL вместо возможностей ORM в Hibernate. Это безопасно / эффективно?

  3. Можно ли для операций CRUD переключить соединение БД с суперпользователя на клиентскую схему, созданную на предыдущих этапах? Или я должен продолжать использовать того же суперпользователя для операций CRUD? Было бы неплохо, если бы можно было переключать схемы во время выполнения с помощью Hibernate / Spring-Boot.

Что мне хотелось бы, так это общий подход к этой проблеме. Мне не нужен код .

1 Ответ

0 голосов
/ 18 июня 2019
  1. Типичное веб-приложение уже имеет разрешения на УДАЛЕНИЕ всех данных для всех пользователей.
  2. JPA делает ваши запросы медленнее, а не быстрее.JPA может помочь с кэшированием, но, похоже, вам это не нужно.
  3. Да, у вас может быть несколько источников данных в Spring Boot.Посмотрите на это, например: https://www.baeldung.com/spring-abstract-routing-data-source

Имейте в виду, что вашей базе данных может не понравиться наличие миллионов таблиц.Планирование запросов, работы по техническому обслуживанию, резервное копирование и т. Д. - все это снижает производительность.По сути, базы данных не предназначены для вашего случая использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...