PostgreSQL의 데이터 항목에 일종의 "만료"시간을 설정하는 방법이 있습니까? EXPIRE
Redis 와 동등한 것을 생각하고 있습니다.
타임 스탬프를 저장하고 만료 된 항목을 확인하기 위해 일종의 크론 작업을 수동으로 코딩하려는 것이 아닙니다 .
PostgreSQL에 이런 종류의 기능을 제공하는 기본 기능이 있는지 또는 향후 릴리스에서 이러한 기능을 요청하는 것이 합리적 일지 알아 보려고합니다.
PostgreSQL의 데이터 항목에 일종의 "만료"시간을 설정하는 방법이 있습니까? EXPIRE
Redis 와 동등한 것을 생각하고 있습니다.
타임 스탬프를 저장하고 만료 된 항목을 확인하기 위해 일종의 크론 작업을 수동으로 코딩하려는 것이 아닙니다 .
PostgreSQL에 이런 종류의 기능을 제공하는 기본 기능이 있는지 또는 향후 릴리스에서 이러한 기능을 요청하는 것이 합리적 일지 알아 보려고합니다.
답변:
만료 기능은 내장되어 있지 않지만, 목표가 필드를 자동으로 만료하고 데이터베이스 내에 논리를 포함하는 것 (따라서 크론 작업과 같은 외부 종속성이 없음)이라면 항상 트리거를 작성할 수 있습니다. 다음은 타임 스탬프가 1 분보다 오래된 테이블에서 행을 삭제하는 트리거의 예입니다. 동일한 테이블에 새 행이 삽입 될 때마다 실행됩니다. 필요에 따라 다른 조건과 다양한 만료 날짜에 대해 실행되도록 트리거를 분명히 설정할 수 있습니다. 이를 위해 다음 웹 사이트를 사용했습니다. http://www.the-art-of-web.com/sql/trigger-delete-old/
CREATE TABLE expire_table (
timestamp timestamp NOT NULL DEFAULT NOW(),
name TEXT NOT NULL
);
INSERT INTO expire_table (name) VALUES ('a');
INSERT INTO expire_table (name) VALUES ('b');
INSERT INTO expire_table (name) VALUES ('c');
select * from expire_table;
timestamp | name
----------------------------+------
2014-09-26 15:33:43.243356 | a
2014-09-26 15:33:45.222202 | b
2014-09-26 15:33:47.347131 | c
(3 rows)
CREATE FUNCTION expire_table_delete_old_rows() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
DELETE FROM expire_table WHERE timestamp < NOW() - INTERVAL '1 minute';
RETURN NEW;
END;
$$;
CREATE TRIGGER expire_table_delete_old_rows_trigger
AFTER INSERT ON expire_table
EXECUTE PROCEDURE expire_table_delete_old_rows();
INSERT INTO expire_table (name) VALUES ('d');
select * from expire_table;
timestamp | name
----------------------------+------
2014-09-26 15:36:56.132596 | d
(1 row)
아니요. 그러한 기능은 없습니다.
(1) "만료 된"타임 스탬프가 수행하는 작업 또는 (2) 타임 스탬프 + cron-job / pgAgent보다 더 많은 작업을 수행하는 것을 볼 수 없습니다.
코어에 추가되는 일반적인 기능처럼 들리지 않습니다. cron-job 또는 백그라운드 작업자 프로세스 에서 호출 된 틱을 사용하여 이러한 종류의 작업을 처리 하는 확장 을 아주 간단하게 코딩 할 수 있습니다.
나는 pgxn 에서 아무것도 볼 수 없으므로 아마도 아직 그것에 대한 수요가 많지 않을 것입니다.