나는이 질문을 여러 번 stackoverflow에서 물어 알고 있습니다. 이 질문을 게시하여 내 디자인에 가장 적합한 것이 무엇인지 찾아야합니다. 내 직업에 대한 다음 스키마가 있습니다. 우리가이 테이블에 뭐하는 작업메모리 관계형 데이터베이스에서
_unique_key varchar(256) NULL
_job_handle varchar(256) NULL
_data varchar(1024) NULL
_user_id int(11) NULL
_server_ip varchar(39) NULL
_app_version varchar(256) NULL
_state int(11) NULL
_is_set_stopped bool
: 우리는 하나의 업데이트 및이 테이블에 10 선택 쿼리를 낳게 될 것입니다 각 작업에 대해
- . 따라서 우리는 읽기 및 쓰기에 높은 주파수가 필요합니다.
- 는
- 이
- _unique_key :
- 은 필터링을 수행하여이 테이블을 조작 많은 응용 프로그램이 있습니다 응용 프로그램 및 사용자의 유형에 따라 다릅니다.
- 응용 프로그램은 선택적 속성을 업데이트 할 수 있습니다. 우리가 생각
솔루션 :
MySQL의 InnoDB의
나는 MySQL이 높아 읽기 및 쓰기에 대한 요구 사항을 충분히 확장되지 것이라 생각합니다. 이 용액 메모리 테이블
MySQL의
문제
- 그것은 동적 필드 크기를 지원하지 않는다는 것이다. MEMORY 테이블은 고정 길이의 행 저장 형식을 사용합니다. VARCHAR와 같은 가변 길이 유형은 고정 길이를 사용하여 저장됩니다. Source http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
- select for .... 전체 테이블을 잠글니다. 나는 그것이 문제가 될 것인지 모른다.
레디 스
레디 스의 모습은 좋은 선택을 좋아한다. 하지만 내 테이블 키 값 캐시 서버에 좋지 않은 것 같아요.
- 매우 많은 데이터 유형 세트 만 지원합니다. 목록에 문자열 만 저장할 수 있습니다. 필드를 JSON 또는 다른 형식으로 저장해야합니다.
- 클라이언트가 특정 속성을 업데이트하려면 전체 값을 다운로드 한 다음 객체 구문 분석을 수행하고 서버에 다시 푸시해야합니다. 내가 잘못 했나요? 할 수있는 방법이 있습니까?
- 값을 기준으로 필터링하는 것은 불가능합니다. 내가 잘못 했나요? 할 수있는 방법이 있습니까?
MySQL의 InnoDB의 TMPFS의 파일 시스템
이 유망 보인다. 그러나 메모리 테이블에서 Redis 또는 MySQL과 비슷한 정도로 확장되지는 않습니다.
실제 읽기/쓰기 속도 요구 사항은 무엇입니까? –
@ Joachim Isaksson. 현재 요구 사항은 완전한 행의 경우 초당 1380 개의 읽기 및 쓰기이고 is_set_stopped 열의 경우 초당 6900 개의 읽기입니다. 서버에서 작업 수가 증가함에 따라 카운트가 증가합니다. –
왜 InnoDB가있는 MySQL은 관련성이 없다고 생각합니까? 당신은 그것을 아주 잘 조정할 필요가있을 것입니다 ... –