Нужна консультация по модели данных для моего варианта использования. У меня есть два параметра для хранения: A для вещей типа T и B для вещей типа U (который установлен в T) Допустим, что каждый объект типа T имеет 2 свойства p1 и p2, теперь A = (счетчик t с p1)/(счетчик t с p1) + (счетчик t с p1)
B = (A1 + A2 +..) для своего множества T's/(число T в U).
Теперь я должен решить проблему хранения и обновления как A, так и B всякий раз, когда новый объект типа T добавлен/изменен. (Почти мгновенно)
Я решил заняться вычислением A следующим образом: для поддержания таблицы типа (T id, № p1, № p2), тем самым каждый раз, когда число изменяется, я просто обновляю 2-й или 3-й столбцы и я может рассчитывать A на лету. Но я смущен тем, как оптимизировать вычисления B?? Мои первоначальные мысли заключались в том, чтобы написать триггер над таблицей выше, чтобы всякий раз, когда что-то обновлялось, пересчитайте B для этого объекта U, но я думаю, что это дало бы мне очень низкую производительность при масштабировании, Любые предложения, что еще я могу сделать здесь?
Пример: Скажем, U - город с множеством блоков (T). Теперь, каждый блок будет говорить p1 количество ресторанов non veg и p2 число veg. Таким образом, A для каждого блока будет p1/(p1 + p2) и B для каждого города будет A1 + A2 +../count (блоки) в этом городе. Как сохранить первоначально рассчитанные A и B для всех объектов, так что когда p1 и p2 продолжают меняться, мне нужно обновить A и B почти мгновенно.
Добавление метрик, чтобы иметь более четкое представление о желаемом решении,
- У меня уже есть 100 тыс. блоков и около 1000 городов. И это число будет расти в будущем. Мое требование, когда я вычислил А и B для всех существующих данных, любое обновление к p1 и p2, которое причины изменения говорят "deltaA". Теперь этот "deltaA" должен быть легко добавлен к "A", а не пересчитывать A (аналогично для B), разве мы не можем иметь некоторую модель данных, которая может поддержать это?
-
Задержка должно быть ~ 100 мс i, e A и B должны быть доступны после изменения p1/p2.
-
Частота записи будет в шипах, это будет 100 или 1000 пишет одновременно или 3-5.