2012-06-12 6 views
0

요청에 제한이있는 API를 사용하고 있습니다. API 응답은 XML로되어 있으며 일반적으로 약 8KB입니다. 간략하게 말하자면 동일한 요청을 API에 두 번 정확하게 보내려면 제거하고 싶습니다.MySQL에 대한 캐시 API 응답 - 우수 사례입니까?

해당 답변과 함께 2 백만 건이 넘는 요청이있을 수 있습니다. 그래서 MySQL의 레코드에 복사 된 양의 XML 응답을 얻을 때 쿼리 할 때 충분히 빠르게 응답 할 것입니까?

테이블 구조 : 대부분을

  • 아이디 INT PK 자동 증가 내가 MySQL의 쿼리 캐시 찾았지만, 내가 생각

  • 응답 TEXT
UNIQUE
  • REQUEST_PARAMETERS의 TEXT 유일한 편리 요청한 요청. 다른 하나는 속도가 느려질 수 있습니까? 나는 또한 Varnish를 찾았지만, HTML/코드 캐시가 많은 것 같습니다.

  • +1

    _ "내가 쿼리하면 충분히 빠르게 반응 할 것인가?"내가 그것을 보면 깨지 는가? 임의의 8KB 텍스트와 몇 가지 매개 변수로 데이터베이스를 채우는 것은 쉽게 실현 될 수 있으며, 우리가 추측 할 수있는 것보다 더 정확한 답이 될 것입니다. – CodeCaster

    +1

    왜 XML에서 배열을 가져 오지 않을까요? (나는 이미 그렇게 생각합니다) 배열을 직렬화하고 서버의 파일 시스템에 파일로 저장하십시오. 이것은 더러운 방법이지만 매우 빠릅니다. 타사 캐싱을 사용할 수도 있습니다. – Leri

    +0

    @CodeCaster 네 말이 맞아, 지금 내 노트북에 시험을 준비하고있어. 결과가 1 시간 이내에 표시됩니다. 남겨진 질문 : 이렇게 캐시하는 것이 좋습니다. 감사합니다 – DelphiLynx

    답변

    1

    나는 가정

    • 당신은 주어진 request_parameters (...WHERE request_parameters = 'some string')
    • request_parameters에서 response를 가져올 필요가

    내가 조언 (1000 자에서) 너무 오래되지 않습니다

    1. Dro ID 열. 어떤 사람들은 항상 기본 키로 정수를 사용하는 것을 권유하지만 관계형 데이터베이스를 만들려고하지는 않는다는 것을 이해합니다. 저장 용 테이블이 하나만 있으면됩니다.

    2. 으로 request_parameters 열 유형을 변경하십시오. "x"는 예상되는 매개 변수 문자열의 최대 크기입니다.

    3. request_parameters을 기본 키로 지정하십시오.

    4. PLB에서 권고 한대로 일련의 XML 응답 버전을 저장하십시오.

    2 백만 행의 이러한 데이터에는 수십 Gb와 인덱스 용 공간이 필요합니다. 시스템에 사용 가능한 많은 메모리가 있고 MySQL을 다시 시작할 때 모든 데이터를 잃어 버릴 수 있다면 MEMORY 테이블로 시도해 볼 수 있습니다.

    +0

    고마워, 내 질문에 대한 완벽한 답변 thats! – DelphiLynx