2012-07-29 2 views
1

지금까지 node.js 프로젝트는 다양한 컬렉션 메모리를 보유하고있는 클래스 (cache.js)를 사용했습니다. 데이터 액세스 레이어는 논리에서 데이터를 추상화하고 나중에 쉽게 지속성을 추가 할 수 있도록합니다. 이 dal.js는 모든 CRUD 작업에 대해 cache.js를 동기식으로 호출합니다.DAL for mongoDB

이제는이 cache.js 대신 MongoDB를 DAL에 연결하려고합니다. 문제는 mongoDB + node.js 철학이 DB를 콜백과 함께 비동기 적으로 호출한다는 것입니다.

DAL을 사용하는 클래스를 포함하여 모든 앱을 다시 디자인해야합니까? 필요로하는 모든 CRUD에서 콜백을 사용하기 위해 비즈니스 로직을 시행하기에는 너무 복잡하지는 않습니까? KISS를 유지하는 가장 좋은 방법은 무엇입니까 (몽구스가 도움이 될 수 있지만 직접적으로 도움이 될 수는 없지만).

+0

우리가 만든 DAL이 노드에 권장되지 않는다는 것을 마침내 깨달았습니다. DB가 redis 기반 (빠른 db) 일지라도 확장 성이 없습니다. http://stackoverflow.com/questions/6099090/is-there-a-blocking-redis-library-for-node-js를 참조하십시오. – whadar

답변

1

확장 성 모델에 따라 주기적으로 메모리 내 모델을 동기화하는 것이 좋습니다. 뭐 그런 : 당신은 아마 (이 경우 파편/사용자 별) 서버 선호도의 일부 형태를 따른다

var model = { 
    x: 5 
}; 

setInterval(function() { 
    if (is_model_changed(model)) write_to_db(model); // <-- this can conflict with other changes 
    model = read_from_db(); 
}, 5000); 

그래서 가능한 한 많은 데이터베이스에 기록 할 때 충돌을 피하기 위해 노력합니다.