Отношения моделирования данных Tarantool
Я создаю приложение, которому нужна модель бизнеса. Модель выглядит примерно так:
Company: {
id (primary index)
name
description
humans: [id_human1, id_human2, id_human3],
jobs: [id_job1, id_job2, id_job3]
}
Human: {
id (primary index)
company: id
job: id
name
age
}
Job: {
id (primary index)
job_name
humans: [id_human1, id_human2, id_human3]
companies: [id_company1, id_company2, id_company3]
}
Я хотел бы иметь возможность выполнять следующие запросы: - Получить все компании, у которых job_id = 1. - Получить всех людей, которые работают для company_id = 2. - Получить все рабочие места, где company_id = 1 или - Получить всех людей, у которых job_id = 1 и company_id = 2.
Как мне смоделировать вышеуказанную информацию в tarantool и поддерживать отношения между данными, сохраняя при этом быстрые запросы?
1 ответ
Запросы о компании / работе и работе / компании были бы чрезвычайно простыми, если бы вы нормализовали наборы кортежей. Вместо массива заданий в компании добавьте новый набор кортежей с именем Company_Job {companyID, jobID}.
Затем сделайте то же самое с Company_Job_Human и создайте вторичные индексы.