현재 일부 메모리 내장 MySQL (HEAP 엔진 사용) 테이블에 액세스하는 C++ (cgicc 확장 사용)로 작성된 Apache CGI 응용 프로그램이 있습니다. 이제는 하루에 처리하는 트랜잭션의 수가 서버의 이러한 요청을 처리하는 데 필요한 쿼리를 처리하는 능력을 초과 한 시점입니다.C++ CGI 용 캐시 된 데이터 구현
성능 향상을 위해 우리가 논의한 다음 단계는 이러한 메모리 내 테이블을 CGI 프로세스에서 "로컬"로 만들고 데이터를 캐싱하기 위해 공유 메모리의 일부 형태를 사용하는 것입니다. Memcached 또는 Membase는 가능한 옵션처럼 보일 수 있지만, 우리가 사용하는 방법은 그 접근 방식과 정확하게 일치하지 않는 것 같습니다 (아니면 구현/연결이 보이지 않을 수도 있습니다).
이상적인 세계에서 우리는 데이터를 공유 메모리 객체에로드하기 위해 일종의 직렬화를 사용할 수 있습니다. 시작시 CGI는 복사본을 얻거나 공유 된 데이터 구조의 복사본을 만들 수있는 주소를 제공하고 "로컬"메모리 내 데이터 구조로 deserialize 한 다음 필요한 모든 비교를 수행합니다 그 물체로부터. 우리는 이것이 우리의 아파치/CGI 아키텍처를 완전히 재 설계하지는 않을 것이지만 대신에 MySQL 메모리 - 인 테이블 (MySQL DB는 같은 서버에 동일 위치에 위치 함)을 질의하는 문제 일뿐입니다. 아파치)를 프로세스에 "보다 지역적인"새로운 메모리 내부 데이터 구조를 사용하는 것으로 바꾸었다.
어떤 통찰력을 가지고있어 주셔서 감사합니다. 많은 이전 스레드는 Memcached/Membase 접근법을 사용하는 것이 좋으며 아마도 이것이 최선의 경로라고 생각하지만, 그것이 합의인지를보고 싶었습니다.
저는 BerkeleyDB와 같이 지루한 사전 작성 라이브러리를 사용할 수도 있다고 가정합니다. –