복붙노트

[REDIS] , 레디 스 또는 MongoDB를 한 번에 카운터 수백 증가?

REDIS

, 레디 스 또는 MongoDB를 한 번에 카운터 수백 증가?

배경 / 의지 :

나는 처음부터 이벤트 추적기를 작성하고이 작업을 수행하는 방법에 대한 몇 가지 아이디어를 가지고거야하지만 난 사물의 데이터베이스 측면을 진행하는 가장 좋은 방법의 확실 해요 그래서. 내가하는 일에 관심 것은이 사건이 완전히 동적 일 수 있지만, 동시에 관계 이벤트 카운터를보고 할 수 있도록.

예를 들어, 모든 국가는 운영 체제에 의해 분해. 원하는 효과는 다음과 같습니다

내 의도과 같이 이러한 이벤트 이름을 허용 할 수있을 것입니다 :

/?country=US&os=iOS&device=iPhone&color=blue&carrier=Sprint&city=orlando&state=FL&randomParam=123&randomParam2=456&randomParam3=789

등 뭔가를 관계형 카운터를 수행하기 위해 어떤 수단 내가 잠재적 요청에 따라 100 개 + 카운터를 증가시키는 것보다.

하루에 위의 요청 10+ 만있을 것입니다 가정합니다.

I 추적되는 이벤트 이름의 관점에서 완전히 동적 인 일을 계속하고 싶은 나는 또한 데이터에 대한 조회가 슈퍼 빠른 남아있는 방식으로 그것을 할 싶어. 따라서 나는이에 대한 레디 스 또는 MongoDB를를 사용으로 찾고있다.

질문 :

감사

해결법

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

    1.키 구조가 배치 방법에 따라 내가 zincr 명령을 파이프 라이닝 추천 할 것입니다. 당신은 쉽게 "커밋"트리거가 - 요청합니다. 당신이 당신의 매개 변수를 반복하고 각 키를 zincr한다면, 그 요청의 끝에서 아주 빠르게 될 것입니다 명령을 실행 전달합니다. 당신은 CGI와 장고 응용 프로그램 모두로 설명하는 것처럼 시스템을 구현했습니다. 나는이의 라인을 따라 주요 구조를 설정 :

    키 구조가 배치 방법에 따라 내가 zincr 명령을 파이프 라이닝 추천 할 것입니다. 당신은 쉽게 "커밋"트리거가 - 요청합니다. 당신이 당신의 매개 변수를 반복하고 각 키를 zincr한다면, 그 요청의 끝에서 아주 빠르게 될 것입니다 명령을 실행 전달합니다. 당신은 CGI와 장고 응용 프로그램 모두로 설명하는 것처럼 시스템을 구현했습니다. 나는이의 라인을 따라 주요 구조를 설정 :

    YYYY-MM-DD : HH : MM -> 소트 세트

    그리고 당신의 설명 시나리오에 대한 충분한해야 하나의 프로세스로 레디 스 측 초당 150000-200000 증가와 같은 프로세스 뭔가 할 수 있었다. 이 키 구조는 시간의 창을 기준으로 잡아 데이터를 나를 수 있습니다. 나는 또한이 DB 정리 프로세스를 작성 피하기 위해 키 만료 덧붙였다. 그때 상기 키 패턴의 변형을 사용하여 주간 매일, 매시간에 "롤업"통계로 설정 작업을 수행하고 것 cronjob에 있었다. 그들이보고면 간단하게 당신이 레디 스의 기능에 내장을 활용할 수있는 방법을만큼 나는이 아이디어를 가지고. 이 그 일을 다른 방법이있다 그러나이 패턴은 잘 작동하는 것 같다.

    eyossi에서 언급 한 바와 같이 글로벌 잠금 동시 쓰기를하고 읽는 시스템에 진짜 문제가 될 수 있습니다. 당신은 실시간 시스템으로이 글을 쓰는 경우 동시성 잘 문제가 될 수 있습니다. 그것이이 "마지막 일 경우"당신이 입력시 파서 또는 보고서의 여러 인스턴스를 실행하지 않으면 다음 가능성이 경합을 트리거하지 않습니다 시스템을 분석 로그인합니다. 유지에 관해서는 레디 스에서 빠르게 읽고으로, 나는 단지 예를 메인 하나의 오프 종속 레디 스 읽기를 설정하는 것이 좋습니다 것입니다. 보고서를 실행하는 서버에 넣고 그것을보고 프로세스를 가리키는 경우는 보고서를 생성하는 것은 매우 빠른해야한다.

    사용 가능한 메모리, 데이터 세트의 크기에 따라, 당신은 레디 스 인스턴스에있는 다른 유형의 데이터를 저장 여부를 32 비트를 실행하는 것이 좋습니다하면 메모리 사용량이 아래를 유지하는 서버 레디 스. 32B 인스턴스는 메모리의 작은 덩어리에서이 유형의 데이터를 많이 유지할 수 있어야하지만 일반적인 64 비트 레디 스를 실행하는 경우가 너무 많은 메모리가 사용 주시기 복용하지 않습니다. 언제나 검증하기 위해 자신의 사용 패턴을 테스트

  2. ==============================

    2.레디 스에서 당신은 동시에 여러 키를 증가 다 사용할 수 있습니다.

    레디 스에서 당신은 동시에 여러 키를 증가 다 사용할 수 있습니다.

  3. ==============================

    3.나는 MongoDB를 가진 나쁜 경험을했다, 난 당신이 그것에 쓰기를 많이 때 정말 까다로운 일이 될 수 있다는 것을 발견했다 ...

    나는 MongoDB를 가진 나쁜 경험을했다, 난 당신이 그것에 쓰기를 많이 때 정말 까다로운 일이 될 수 있다는 것을 발견했다 ...

    'I didn를 - 당신은 아마 이미 버전 2.x 개선하는 ( "(전역 잠금을 보내고 *** 큰 F) MongoDB를 1 BFGL를 사용하여"대한 추가 정보를 원하시면이 링크를 볼 수 있습니다 말한다 부분을 읽을 것을 잊지 마세요 t는 그것을 확인)

    반면에, 내가 레디 스과 좋은 경험을했다, 내가 읽기 / 쓰기의 많은 위해 그것을 사용하고 그것을 잘 작동합니다. 여기에 내가 (쓰기 / 동시 읽기의 양에 대한 느낌을 얻기 위해) 레디 스를 사용하고 방법에 대한 자세한 정보를 확인할 수 있습니다 http://engineering.picscout.com/2011/11/redis-as-messaging-framework.html

  4. ==============================

    4.당신이 원자 기능이 필요하지 않습니다 multiif 차라리 pipelinethan을 사용합니다 ..

    당신이 원자 기능이 필요하지 않습니다 multiif 차라리 pipelinethan을 사용합니다 ..

  5. from https://stackoverflow.com/questions/11441293/incrementing-hundreds-of-counters-at-once-redis-or-mongodb by cc-by-sa and MIT license