Создаю индекс, используя RediSearch в мультитенантном приложении, которое имеет:
- 150 000 арендаторов
- Каждый арендатор имеет в среднем 3500 клиентов
- У каждого клиента есть 10 полей, которые будут добавлены к индексу
- Все поля
TextFields
.
Вопрос в том, что было бы лучше1016 * (производительность, память / хранилище, гибкость) в таком случае?
Должен ли я создать один customer_index
с полем tenant_code
, чтобы помочь определить, какие данные принадлежат какому арендатору, или я должен создать индекс, специфичный для арендатора?
Исходя из моего текущего опыта и понимания, индекс конкретного арендатора будет означать много индексов, но с меньшим количеством данных, а также даст мне возможность отбрасывать и воссоздавать индекс для конкретного арендатора?
В Python код будет выглядеть следующим образом:
Индекс одного клиента
client = Client(`customer_index`)
client.create_index(
[
TextField('tenant_code'), TextField('last_name'), TextField('first_name'),
TextField('other_name'),
]
)
Индекс конкретного клиента
client = Client(`tenant_code_customer_index`)
client.create_index(
[
TextField('last_name'), TextField('first_name'), TextField('other_name'),
]
)