- Створіть
archive_tablespace
(якщо хочете, ви можете розділити апаратне забезпечення в архіві)
Створюйте таблиці. Наприклад, ми хочемо архівувати записи таблиці.
create table posts_all ( LIKE public.posts) ;
create table posts_archive () inherits ( public.posts_all) ;
alter table public.posts inherits ( public.posts_all ) ;
Після цього у нас з’являться 2 нові таблиці: public.posts_all (з тими ж стовпцями, що й у публікаціях) для запиту всіх публікацій (архіву та виробництва) та public.posts_archive для запиту всіх публікацій архіву. Public.posts буде успадковано від posts_all.
Вставки повинні надходити по-старому (до таблиці public.posts), якщо ви не будете писати тригери на posts_all для перенаправлення вставок до таблиці повідомлень. Якщо у вас є перегородка, це буде складніше. З робочим додатком та перед міграцією старих даних вам не потрібно нічого змінювати в коді програми, щоб працювати з цим підходом.
Створіть архів схем для логічного поділу. Моя пропозиція полягає в тому, щоб, за можливості, відокремити дані архіву на певний період часу (рік або місяць) (archive_2005).
Створіть таблиці архівів у схемі archive_year
create table archive_2005.posts (
check(record_date >= '2005-01-01 00:00:00'::timestamp
and record_date < '2006-01-01 00:00:00'::timestamp)
) inherits (posts_archive) tablespace archive_tablesapce;
Після цього у вас з'являться нові записи таблиці в архіві схеми_2005, і планер postgresql буде знати, що дані існують лише у розроблений період часу. Якщо ви запитуєте інший часовий період, у цій таблиці не буде здійснюватися пошук postgresql.
Створіть функції / процедури / тригери для переміщення даних до архівних таблиць.
- Зробіть архів один раз на часовий проміжок (рік тут) і відпиліть стару таблицю або зробіть це автоматично за допомогою тригерів (важче на автовакуумі). В обох методів є багато переваг і недоліків.
Це загальна техніка, і ви повинні адаптувати її до своїх потреб. Будь-які пропозиції щодо покращення цього?
Create tables (table posts example):
. Чи можете ви пояснити той конкретний крок щодо того, скільки таблиць є загалом і як успадкування між таблицями пов'язане між собою?