복붙노트

[REDIS] 웹 서비스 아키텍처 : 레디 스 (캐시 등) 및 지속성에 대한 PostgreSQL을

REDIS

웹 서비스 아키텍처 : 레디 스 (캐시 등) 및 지속성에 대한 PostgreSQL을

나는 자바 REST API를 개발하고 있어요하는 PostgreSQL 데이터베이스에서 사용하는 클라이언트 데이터.

숫자들: . 처음에 600 클라이언트에 대한 . 그들 중 일부는 일을 요청 몇 초마다

고객 요청에 따라 비용을 지불하기 때문에, 우리는 성공적으로 요청 자신의 번호가 자신의 한계에 도달하면 제어해야하고, 모든 요청 후 PostgreSQL의 데이터를 ( 'hitsCounter'필드의 값을 업데이트) 쿼리로 성능면에서 나쁜, 우리는 구현에 대해 생각 레디 스와 캐시 시스템.

아이디어: 클라이언트가 자신의 첫 번째 요청을 수행 한 후, 우리는 PostgreSQL의에서 자신의 데이터를 검색하고 레디 스 캐시에 저장합니다. 클라이언트가 요청을하고 중지까지의 'hitsCounter'키 값을 증가 예를 들어,이 캐시 데이터와 다음 작품. 병행하여, 몇 분 간격으로 백그라운드 프로세스 그래서 마지막에 우리가 PostgreSQL의 업데이트 된 데이터를, 레디 스에서 데이터를 DB 테이블에 캐시 지속, 우리는 미래에 그들과 거래를 할 수 있습니다.

나는 분명히 성능을 향상 생각하지만, 나는이 "백그라운드 프로세스"에 대한 확실하지 않다. 옵션은 캐시 요소의 TTL 일부 값보다 그것의 작은 (이것은 클라이언트가 요청을 수행 완료된 것을 의미)하는 경우를 확인하려면 데이터를 유지하는 것입니다.

나는 이것에 대해 어떤 의견을 듣고 싶어요. 이것은 좋은 아이디어인가? 당신은 더 좋은 대안을 알고 계십니까?

해결법

  1. ==============================

    1.완벽하게 합리적인 생각,하지만 당신은 당신이 만든 모든 측정을 언급 한 적이 없다. 대상 트랜잭션 수준의 타겟 하드웨어의 병목 현상은 무엇인가? 그것을 모른 채, 당신은 말할 수 없습니다.

    완벽하게 합리적인 생각,하지만 당신은 당신이 만든 모든 측정을 언급 한 적이 없다. 대상 트랜잭션 수준의 타겟 하드웨어의 병목 현상은 무엇인가? 그것을 모른 채, 당신은 말할 수 없습니다.

    당신은 아마도 로깅되지 않은 테이블을 사용할 수 있습니다. 그냥 모든 쿼리 행 삽입 한 다음 오래된 데이터를 삭제, 5 분마다 요약한다. 그럼 다시, HOT 업데이트를 통해, 말하기 75 % 필 팩터는 아마 업데이트가 더 효율적입니다. 나는 우리가 그것을 측정하지 않은 알고 (그리고 나 당신을)하지 않습니다.

    부족한? SSD에 자신의 테이블에 스틱.

    부족한? 자신의 VM / 기계에 스틱.

    부족한? 다만 각 프런트 엔드 상자와 배치 데이터베이스에 분 한 번 데이터를 플랫 파일에 망할 물건을 쓰기.

    또한 - 그들이 얼마나 쿼리 당 지불? 당신은 전원이 실패하고 쿼리 로그를 5 초를 분실 한 경우 상관 이죠? 당신은 원래의 내용과 타임 스탬프 각 쿼리에 대한 영수증을 재현 할 수 있어야합니까?

  2. from https://stackoverflow.com/questions/16234221/web-service-architecture-redis-as-cache-postgresql-for-persistence by cc-by-sa and MIT license