2014-02-20 2 views
2

10 분마다 데이터를 수집하고 해당 데이터를 32 시간 동안 저장해야합니다. 즉,이 데이터는 192 개 항목으로 구성되며 해당 항목에 자주 액세스해야합니다.NodeJS를 사용하여 x 시간 동안 데이터 저장

처음에는 배열을 사용하여 요소를 밀어 넣기를 원했습니다. 카운터가 192보다 높으면 첫 번째 요소 (32 시간 전에 수집 된 요소)를 제거합니다. 그러나, 나는 그것이 꽤 느릴 수 있다고 생각합니다.

또 다른 접근법은 리눅스의/tmp 디렉토리에 데이터를 쓰는 것입니다. 실제로는 삭제하는 것에 신경 쓰지 않고 최신 192 항목을 읽는 것입니다.

나는이 인터넷 검색에 대해별로 알지 못 했으므로 누구나 나를 올바른 방향으로 안내 할 수 있습니까?

또한 컴퓨터를 재시작/재부팅 할 때 데이터가 손실되면 아무런 문제가 없습니다.

답변

1

배열에 저장하면 디스크에 저장하고 액세스 할 때마다 파일을 다시 읽지 않고도 빨리 읽을 수 있습니다.

속도는 실제로 이러한 유형의 작업에 완전히 무관해야한다, 그래서 당신은 다음과 같은 뭔가를해야만 할 수있다 : 나는 레디 스 같은 고속 캐시에 데이터를 저장 제안 요구 사항 이런 종류의

var updateArray = function(arr, newData) { 
    if (arr.length > 192) { 
     arr = arr.slice(1); // Remove first entry 
    } 
    arr[arr.length] = newData; 
    return arr; 
}; 
+0

그러면 실제로 생각보다 쉽습니다. 나는 배열을 썰기가 너무 비쌀 것이라고 걱정했다. 그러나 예, 파일을 쓰고/tmp에서 읽는 것은 당연히 더 느립니다. 감사! – brdigi

0

을 또는 memcache. 키가 만료되는 시간을 지정할 수 있습니다. 이 방법은 매우 빠르며 명시 적으로 관리 할 필요가 없습니다. 그래서 캐시를 사용하여 더 오랜 시간 동안 데이터를 저장하고 캐시 서버를 응용 프로그램 서버에서 분리하여 데이터를 다시 시작할 때 데이터가 손실되지 않도록 할 수 있습니다.

또한/tmp 디렉토리는 운영 체제에 의해 수시로 정리되므로 아무 것도 저장할 수 없다고 지적하고 싶습니다.

데이터를 저장하려면 대신 db를 사용하십시오.

관련 문제