Один многопользовательский пожарный магазин или много однопользовательских пожарных? - PullRequest
0 голосов
/ 14 февраля 2020

Я создаю систему SaaS, которая позволяет пользователям определять свои собственные модели данных и вводить данные в соответствии с этими моделями. Это немного похоже на воздушный стол.

Один пользователь может моделировать книжный магазин и будет иметь модель Book с полями заголовка и ISBN. Другой пользователь может смоделировать медицинские записи и иметь в качестве поля «дату последнего посещения».

В случае книжного магазина я хочу, чтобы пользователи могли выполнять поиск по названию и ISBN. В случае с медицинскими записями я хочу, чтобы пользователи могли выполнять поиск по дате последнего посещения.

Я использую Firestore в качестве своей базы данных.

Для Firestore требуется индекс, чтобы включить поиск. Таким образом, этот подход не будет масштабироваться по мере увеличения числа клиентов.

Поэтому я подумал о том, чтобы иметь экземпляр Firestore для каждого клиента, и эти указанные c экземпляры будут иметь необходимые индексы.

Хотя я уверен, что в этом есть и недостатки.

Что бы люди посоветовали лучше всего решить эту проблему?

1 Ответ

0 голосов
/ 15 февраля 2020

То, что вы пытаетесь достичь, является чем-то странным, поскольку вы не предоставите хотя бы несколько стандартных общих свойств для каждого пользователя вашего книжного магазина.

Когда вы хотите выполнить поиск в облаке База данных Firestore, вам нужно точное имя свойства, по которому вы хотите искать. Наличие динамических c свойств может не помочь вам решить функцию поиска. Однако вы можете создать документ со свойством типа array, который может содержать имя всех свойств, выбранных пользователями, и выполнить поиск по каждому свойству, но это решение будет слишком дорогим.

В моем случае По мнению экспертов, возможное решение может состоять в том, чтобы создать хотя бы несколько общих свойств, чтобы вы могли иметь свойства, по которым можно осуществлять поиск. Когда кто-то создает, например, книжный магазин, вы можете в начале отобразить все доступные свойства, которые может выбрать пользователь. Создав магазин, вы можете иметь разных пользователей с разными свойствами магазина. Это означает, что если пользователь не выбирает свойство, при выполнении поиска по этому свойству результаты не будут содержать его / ее продукты. Это будет работать, только , если у вас есть предопределенные свойства.

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