Как агрегировать данные транзакционного приложения, чтобы сформировать моментальный снимок / представление с сохранением состояния, которое можно эффективно обновить?

Например, как включить следующие неизменные транзакции:

+------+-------+-------+----------+--------+
| From | To    | Price | Quantity | Item   |
+------+-------+-------+----------+--------+
| Tom  | Sam   | 10    | 2        | Book   |
+------+-------+-------+----------+--------+
| Sam  | Jerry | 2     | 1        | Pen    |
+------+-------+-------+----------+--------+
| Bill | Sam   | 1     | 3        | Pencil |
+------+-------+-------+----------+--------+
| Matt | Sam   | 1.5   | 4        | Pencil |
+------+-------+-------+----------+--------+

В снимок и обновляйте представление вместо того, чтобы пересчитывать его каждый раз, когда добавляется новая транзакция:

+-------+--------+----------+---------------+
| Name  | Item   | Quantity | Average Price |
+-------+--------+----------+---------------+
| Tom   | Book   | -2       | 10            |
+-------+--------+----------+---------------+
| Sam   | Book   | 2        | 10            |
+-------+--------+----------+---------------+
| Sam   | Pen    | -1       | 2             |
+-------+--------+----------+---------------+
| Jerry | Pen    | 1        | 2             |
+-------+--------+----------+---------------+
| Sam   | Pencil | 7        | 1.29          |
+-------+--------+----------+---------------+
| Bill  | Pencil | -3       | 1             |
+-------+--------+----------+---------------+
| Matt  | Pencil | -4       | 1.5           |
+-------+--------+----------+---------------+

Цель состоит в том, чтобы создать моментальный снимок в базе данных и использовать его в приложении, а не создавать его в самом приложении. Это главным образом для поддержания согласованности между транзакциями и снимками.

От некоторых исследований решение может включать в себя использование LISTEN, NOTIFY, TRIGGER а также VIEW, Я использую PostgreSQL 10 и имею возможность использовать TimescaleDB.

0 ответов

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