Я работаю в системе, где среди требований являются:Multitenancy с неизвестными динамическими данными на арендатор
- PHP + PostgreSQL
- Многоквартирных системы, используя единую базу данных для всех жильцов (tenantId).
данные каждого жильца неизвестна, поэтому они должны иметь возможность добавлять любые данные, которые они хотят:
- например для таблицы счетов,
арендатор 1> account_no | date_created | due_date
арендатор 2> account_holder | start_date | end_date | customer_name | ...
Единственное решение, которое я могу видеть, в этом случае используется ключ-значение структуры базы данных пары: - например,
accounts table
id | tenant_id | key | value
1 1 account_no 12345
accounts_data table
account_id | key | value
1 date_created 01-01-2014
1 due_date 30-02-2014
Жеребьевка спины я вижу для этого подхода в долгосрочной перспективе:
- Monster queries
- Inefficient with large data
- Lots of coding to handle data validation, since no data types are there and everything is saved as string
- Filtering can be lots of work
Имея, что сказал, я был бы признателен за предложения, а также, если какой-либо другой подход, который я могу использовать для достижения этой цели.
Благодарим вас за быстрый ответ. Я знаю, что я направляюсь к зверю кодирования, вопросам и работе. Все было бы проще, если бы я мог фиксировать столбцы одинаковыми для всех арендаторов, но моя ситуация здесь, арендаторы должны иметь возможность загружать любые данные, которые они хотят, а затем обрабатывать эти данные. Любые мысли о том, как я могу разместить различные данные/арендаторы в db? – aiiwa
Кстати, угадайте, ваша ссылка «Enterprisey design» не привела меня к намеченной странице. – aiiwa
@nsk Динамически таблицы 'CREATE' и' ALTER' на основе того, что им нужно, используйте 'hstore' или' json' для хранения своих строк или использования базы данных schemaless. –