생성 및 삭제된 sqlite 로그 파일의 정확한 총 수를 계산하는 방법은 무엇입니까?

생성 및 삭제된 sqlite 로그 파일의 정확한 총 수를 계산하는 방법은 무엇입니까?

나는 이 문제를 해결하려고 노력하고 있습니다. 장면은 이렇습니다.

sqlite 백엔드가 있는 스레드 TCP 소켓 데몬은 각 IMEI ID에 대한 고유한 sqlite2 파일에 하루에 고유한 하위 디렉터리에 정보를 저장합니다( pseudo: 2012/11/01/event_$imei.sqlite). 하루에 3,000명 정도 있어요. 아시다시피 들어오는 데이터를 받아 저장하는 과정에서 sqlite 로그 파일이 생성되고 삭제되는 단계가 있습니다.

이 애플리케이션은 오늘 또는 어제의 디렉토리에만 기록하며 (소규모) 데이터 피드에는 최대 255초가 걸릴 수 있습니다. 따라서 UTC 시간 00:00에 단계가 종료됩니다. 연결 중에 여러 번 쓰기가 발생할 수 있고, 네트워크 링크는 열린 상태로 유지되며, 연결이 열려 있는 동안 자산은 새로운 데이터를 추가로 전송할 수 있습니다. 명시적인 잠금이 전혀 없습니다. sqlite는 이를 자체적으로 처리하며 각 IMEI 연결은 고유하므로 동일한 파일에 2개의 스레드가 작성되지 않습니다. 즉, 제어 데몬은 sqlite가 무엇을 하는지 모르고 상관하지 않습니다.

물론 특정 시점에 생성된 sqlite 로그 파일의 수를 총 2개로 계산하고 싶습니다. 본질적으로 그들은 유사했지만 실제로는 결코 동일하지 않았으며 어쨌든 짧은 시간 동안만 살았습니다. 모니터링 시스템은 일반적으로 현재 파일 수를 시간에 따른 스냅샷으로 계산합니다. 이것은 내가 찾고 있는 측정항목이 아닙니다.

그렇다면 가장 작은 로드 공간으로 어떻게 이 계산을 정확하게 수행할 수 있습니까? 뭔가 트릭이 있는 게 분명합니다. 결국은 *nix입니다. 여기의 시스템은 Ubuntu 서버이지만 일반적인 솔루션을 약간 선호합니다(그러나 이에 국한되지는 않음). 하지만 시간이 지남에 따라 새 디렉터리가 생성되고 이를 따를 수 있어야 하며, 디렉터리가 휘발성이기를 원합니다(따라서 재부팅하면 재설정할 수 있음).

어떤 방향으로든 나를 안내해 주셔서 미리 감사드립니다.

답변1

inotify이런 종류의 계산을 수행하는 데는 좋은 후보가 될 수 있지만 이 접근 방식은 이상적이지 않고 경쟁 조건이 발생하기 쉽습니다. 마침내 저는 이 접근 방식을 사용하여 트랜잭션 수를 계산하려고 하므로 그렇게 하는 것이 더 낫다는 점에 동의합니다. 이것은 애플리케이션 자체에 있으며 카운트를 유지합니다.

관련 정보