Комментарии 2
Слишком простой пример.
В примере в одной таблице и отделы и сотрудники и ЗП и ФИО в одном поле слитно хранится.
В реальной жизни хранить в одной таблице разные сущности в общем случае не "православно" - есть же нормализации.
Интересно насколько быстрее и проще все это будет для примера, где есть несколько связанных сущностей?
Да, действительно, хранить разные сущности в одной таблице - плохой подход.
Но на самом деле код не сильно усложнится, если добавить несколько сущностей и делать "join" этих данных.
Один из вариантов примерной реализации:
-- в роли storage:
local employee = box.schema.space.create('employee', {if_not_exists = true}
employee:format(...)
-- добавляем новые спейсы, форматы и индексы
local department = box.schema.space.create('department', {if_not_exists = true}
department:format(...)
---------------------------------
-- в роле api:
local employees, err = crud.select('employee', {{'>=', 'salary', salary}})
-- получаем список отделов по названиям
local department = {}
for _, x in ipairs(employees) do
if department[x.department] ~= nil then
local dep, err = crud.get('department', department)
department[dep.name] = dep
end
end
-- возвращаем employee join department
employees = fun.iter(employees):map(function(x)
return {
employee_id = x.employee_id,
...
salary = x.salary,
department_data = department[x.department],
}
end):totable()
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем распределенное хранилище за полчаса