> Ну почитайте, возможно наведёт на мысли
> http://postgresql.ru.net/manual/ddl-partitioning.html
ну да примерно так мы и партицируем.
вот пример точки:
Схема | Имя | Тип | Владелец | Размер | Описание
--------+-------------------+--------------------+----------+------------+--------------
public | points | таблица | points | 8192 bytes | Точки от GPS
public | points_2011_10_12 | таблица | points | 16 kB |
public | points_2011_10_13 | таблица | points | 240 kB |
public | points_2011_10_14 | таблица | points | 144 kB |
public | points_2011_10_15 | таблица | points | 80 kB |
public | points_2011_10_16 | таблица | points | 104 kB |
public | points_2011_10_17 | таблица | points | 80 kB |
public | points_2011_10_18 | таблица | points | 80 kB |
public | points_2011_10_19 | таблица | points | 184 kB |
public | points_2011_10_20 | таблица | points | 1944 kB |
public | points_2011_10_21 | таблица | points | 3256 kB |
...
public | points_2012_12_10 | таблица | points | 115 MB |
public | points_2012_12_11 | таблица | points | 151 MB |
public | points_2012_12_12 | таблица | points | 164 MB |
public | points_2012_12_13 | таблица | points | 164 MB |
public | points_2012_12_14 | таблица | points | 177 MB |
public | points_2012_12_15 | таблица | points | 176 MB |
public | points_2012_12_16 | таблица | points | 93 MB |
все таблички пишутся по дню, имеют собственные индексы итп итд
обращение к общей points позволяет вообще все точки вытащить за весь
период их сбора.
вопрос тут в том что бывает что чисто исторически уже написано много
кода который делает INSERT в родительскую таблицу, тогда мы
партицируем методом переноса данных из основной в архивную
WITH "del" AS (DELETE ... RETURNING)
INSERT INTO "archive_2012_21_21" SELECT "del";
кроме VACUUM вроде никаких различий между методами :)
> FOREIGN не догма, надо разбираться для чего оно нужно, тем более что
> функциональность FOREIGN KEY долгое время поддерживалась в PostgreSQL
> с помощью триггеров, значит и вам никто не мешает написать триггеры,
> работающие с разбиениями так, как это нужно вам. Главное, что
> разбиения позволяют существенно оптимизировать скорость выполнения
> запросов.
триггеры вещь довольно неудобная в плане того что просто в консольке
сразу не видно что на что ограничивается и куда относится.
а так да триггеры можно юзать
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537