TL;DR

За да се справим с таблица, за която се предвижда да съдържа много данни, можем да използваме функцията за разделяне на данни на Postgres.

Тази функция ни позволява да разделим таблица на по-малки, които ще съдържат част от данните въз основа на правило, напр. първата буква на името на клиента или месеца на датата на създаване.

По този начин можем да отправим запитване към родителската таблица, използвайки правилото:

SELECT * FROM parent_table WHERE се прилага правилото, напр. created_at = „някаква дата“

и получавате данни по-бързо.

Проблемът: Таблица от база данни, която може да стане твърде голяма, за да бъде извършена ефикасна заявка.

Да приемем, че имаме таблица, която ще съдържа резултата от предварителната обработка на уеб журналите в реално време на нашата аналитична машина. Приблизителният вход към тази таблица ще бъде например ~50 GB на седмица. Така че в рамките на една година ще имаме ~2,5 TB таблица. Въпреки че това е в границите на Postgres(вижте повече в секцията за ограничения на Postgres в края), изпълнението на заявки върху такава таблица не звучи много ефективно, нали?

Възможно решение: Разделяне на данни

Какво е разделяне на данни

Разделянето на данни е като извършване на балансиране на натоварването на голямата таблица чрез насочване на редовете, които трябва да бъдат вмъкнати, към по-малки, но идентични по структура таблици.

Така, например, ако нашата customer_transactions таблица е таблицата, за която се предвижда да стане доста голяма по размер, можем да я разделим (разделим) по конкретна характеристика, напр. thecustomer_name (който вероятно трябва да се намира на клиентската маса...