Как управлять настраиваемыми полями для конкретных клиентов (брендинг)

Мы разрабатываем корпоративное приложение, которое предоставляет облачные сервисы хранения для своих клиентов (через Software As A Service). Некоторые из наших клиентов хотят отслеживать пользователей, приходящих со своего веб-портала (целевой страницы), добавляя некоторые настраиваемые поля, специфичные для этого клиента (например, тип лицензии, ключ, серийный номер и т. Д.). На данный момент у нас есть только один клиент, который использует наше приложение и предоставляет услуги своим конечным пользователям, но мы ведем переговоры с новым клиентом, который также будет использовать наш сервис в ближайшем будущем.

На данный момент у нас есть таблица реляционной базы данных (MySql), специфичная для этого первого клиента, которую мы используем для обработки пользовательских полей этого клиента, и мы не хотим создавать таблицы, специфичные для пользовательских полей нового клиента, поскольку для этого потребуется изменить схема базы данных каждый раз, когда мы добавляем нового клиента в наше приложение.

Наше исследование показало, что есть несколько методов, которые мы могли бы использовать для нашей реляционной базы данных, чтобы решить нашу проблему. Они (Источник: http://www.percona.com/live/mysql-conference-2013/sites/default/files/slides/Extensible%20Data%20Modeling.pdf):

  1. Добавление дополнительных столбцов (в таблице пользовательских полей)
  2. Сущность - Атрибут - Модель стоимости
  3. Модель наследования таблиц классов
  4. Сериализованные LOB и инвертированные индексы

Наш вопрос: как зрелые компании (в частности, Salesforce, NetSuite и т. Д.) Хранят пользовательские поля в базе данных архитектурно и как мы должны их хранить?

Любая помощь / указатели в правильном направлении будут полезны. Благодарю.

0 ответов

Другие вопросы по тегам