Я проектирую 2 таблицы.Предложение по разбиению таблиц в POSTGRES
user_table (userid username)
100K записей ожидается
transaction_table(transactionid, date, description, userid)
5 миллиардов записей ожидаемых. Ожидается почти 50 тыс. Транзакций на одного пользователя.
transaction_table
магазины совершают сделки. В этой таблице редко имеются операции UPDATE
или DELETE
. Существуют значительные операции SELECT
и INSERT
, но все они основаны на userid
. Таким образом, либо я вставляю транзакцию пользователя в таблицу, либо возвращаю транзакции, сделанные определенным пользователем.
Имеет ли смысл разбиение на разделы transaction_table
?
Это потому, что будут 100 тыс. Таблиц разделов, для каждого пользователя. Это хорошо в каком-то смысле?
Какие еще варианты у меня есть, чтобы сделать INSERT
и SELECT
операциями быстро на transaction_table
?
Какие запросы вы ожидаете на transaction_table? Разделение по идентификатору пользователя имеет смысл, если вам нужно получить ВСЕ транзакции для определенного пользователя. Для запросов, таких как «100 последних транзакций пользователя», достаточно индекса (userid, date). –
Я ожидаю таких запросов, как - (1). «top X (скажем, 100) транзакций пользователя». (2) «следующие X транзакций пользователя» (3) «все транзакции с 1-JAN-2015 до 1-MAY-2015 пользователя» и т. Д. – Ani