Отношения моделирования данных 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 и создайте вторичные индексы.

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