Я думаю об использовании упругого поиска для ускорения моих запросов.Мои данные хранятся в базе данных отношений.Как и у многих других, у меня проблема в том, что небольшие изменения в реляционной базе данных приводят к огромным обновлениям в денормализованном упругом поиске.
Так, например, это простые роли и права здесь.Если я хочу дать normaluser права на запись данных CIRCLE, мне нужно обновить все данные в упругом поиске, где type = CIRCLE и role_id = 1001. Это может быть миллионы строк.Я предполагаю, что администратору ролей нужно будет ждать минуты после каждого изменения, которое он делает, что недопустимо.
Существует ли быстрый способ определения типа столбца в упругом поиске, в котором хранилище столбца прав каким-то образом сжато, потому что вариантов содержимого не так много?Например "сжатый JSON"
-- DATA ----------------------------
id name type
------------------------------------
1 A BOX
2 B CIRCLE
3 C BOX
4 D CIRCLE
5.....
10000000 ABCDEF... CIRCLE
-- ROLE_ASSIGNMENT -----------------
role_id type read write
------------------------------------
1000 BOX yes yes
1000 CIRCLE yes yes
1001 BOX yes no
1001 CIRCLE yes no
-- ROLE ----------------------------
id name
------------------------------------
1000 admin
1001 normaluser
-- ELASTIC -------------------------
id name type rights
------------------------------------
1 A BOX rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
2 B CIRCLE rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
3 B BOX rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
4 D CIRCLE rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
......
100000000