2012-07-19 3 views
2

그래서 나는 주로 JSON 객체의 전역 배열을 포함하는 node.js의 백엔드 구현을 가지고있다. JSON 객체는 사용자 요청 (POSTS)으로 채워집니다. 따라서 전역 배열의 크기는 사용자 수에 비례하여 증가합니다. 배열 안의 JSON 객체는 동일하지 않습니다. 이것은 정말 나쁜 아키텍처입니다. 그러나 나는 단지 내가 알고있는 것을 가지고 가서 비행 중에 배우기로 결심했다.Nodejs - 전역 데이터 구조를 유지하는 방법

6GB RAM이있는 AWS 마이크로 인스턴스에서 실행 중입니다.

폭발되기 전에이 전역 배열을 제거하는 방법은 무엇입니까? 나는 생각했다

옵션 :

  1. 주기적인 간격으로이 파일을 제거하기 위해 글로벌 배열을 작성합니다. 단점은 트랜잭션 중간에 클라이언트가 있으면 해당 트랜잭션 상태가 손실된다는 것입니다.
  2. 매일 서버를 다시 시작하고 그 시간에 전역 배열을 파일에 씁니다. 위와 같은 단점.
  3. 1 또는 2를 따르고 들어오는 모든 요청에 ​​대해 - 전역 배열이 비어 있으면 파일에서 해당 JSON 객체를 찾습니다. 이것은 절대적으로 터무니없는 것처럼 보입니다.

어떻게 든 nodejs 응용 프로그램을 완전히 다시 작성하지 않고도 다른 해결책을 생각할 수 없습니다. 너희들 .. 어떤 생각을 할 수 있니? 이것에 대한 토론을 매우 감사하게 생각합니다.

+0

앱을 다시 작성하고 ** 적절한 데이터베이스 **를 사용하는 것을 제외하면 거의 할 수있는 일이 없습니다. – freakish

+0

BTW : 옵션 ** 3. **은 데이터베이스의 배경입니다. 그래서 나는 어리석은 짓하고 어리 석다는 것에 대한 당신의 직감이 그렇게 좋지 않다고 생각합니다.:) – freakish

+0

@freakish - 예, 데이터베이스 옵션 3을 사용하면 불합리하지 않습니다. 파일을 대신 사용하면 어설프 겠지만 :). –

답변

2

기억 장치를 메모리로 사용하고 있습니다. 그렇다면 코드가 동기식 (데이터베이스를 사용하지 않는 것 같습니다.)이므로 실제 솔루션 이 맞습니다. 이것은 JavaScript가 단일 스레드이므로 하나의 코드가 실행 중일 때 다른 코드가 실행될 수 없기 때문입니다. JavaScript에는 동시성이 없습니다. Node.js가 빨리 sooo이기 때문에 이것은 환상 일뿐입니다.

그래서 거래가 끝날 때까지 청소 코드가 실행되지 않습니다. 이것은 물론 코드가 동기 적이라고 가정합니다 (그리고 내가 볼 수있는 것으로부터).

하지만 여전히 그렇게하지 않는 이유는 150 가지가 있습니다. 가장 중요한 것은 당신이 바퀴를 재발 명한다는 것입니다! 데이터베이스가 당신을 위해 열심히 일하게하십시오. 적절한 데이터베이스를 사용하면 앞으로 모든 문제를 줄일 수 있습니다. MySQL, PostgreSQL, MongoDB (내가 가장 좋아하는), CouchDB 및 기타 많은 기능들이 있습니다. 이 시점에서 어느 것이 중요하지 않아야합니다. 그냥 하나 골라.

+0

그래, 나는 dbs 중 하나를 시도 할께. 고마워요. –

1

http://www.couchbase.com/과 같은 비 관계형 데이터베이스에 JSON을 저장하기 시작하는 것이 좋습니다.

Couchbase는 클러스터에서도 설치 및 사용이 매우 쉽습니다.

data = couchbaseClient.set("someKey") 

시스템은 또한 매우 빠르고 및 그리기 뭔가를 OMGPOP에 의해 사용되는 : 다음 데이터를 검색 할 수

couchbaseClient.set("someKey", "yourJSON") 

: 그것은 같은 간단한 키 - 값의 디자인 때문에 데이터 저장이 간단합니다 . http://blog.couchbase.com/preparing-massive-growth-revisited

+0

Wil 시도해보십시오. 고맙습니다. –

관련 문제