2014-09-07 1 views
4

오래된 블로그/게시물의 대부분은 컬렉션의 모든 항목에서 tenant_id를 사용하도록 제안합니다. 그리고 모든 쿼리에서 tenant_id를 사용하여 Meteor 앱에서 세입자를 격리하십시오.유성 : 멀티 테넌시 (multi-tenancy) 앱에서 세입자 당 하나의 데이터베이스

멀티 테넌트 (multi tenant) 앱에서 한 명의 MongoDB 데이터베이스를 사용할 수 있습니까? tenant_id/subdomain에 따라 해당 데이터베이스간에 Meteor를 전환 할 수 있습니까? 또는 모든 항목에 tenant_id를 추가하는 것이 Meteor에서 멀티 테넌시를 구현하는 유일한 방법일까요?

+1

당신이 세입자 당 하나의 데이터베이스를 원하는 이유는 무엇입니까? – merlinpatt

+0

@merlinpatt 은행 및 건강 관리와 같은 일부 도메인에서는 고객 데이터를 하나의 데이터베이스에 혼합하여 위험 할 수 있습니다. 세입자 ID와 고객별로 필터링하는 것을 잊어 버리면 고객 b의 데이터를 볼 수 있습니다. 데이터베이스 레벨을 분리하면 고객 데이터를보다 쉽게 ​​이동할 수 있습니다. 예를 들어, SaaS의 엔트리 티어에서 지불하는 고객은 모두 작은 DB 서버에있을 수 있지만 프리미엄 티어를 지불하는 사람은 더 큰 DB 서버로 업그레이드 될 수 있습니다 . 서버 간 데이터베이스 이동은 두 데이터베이스 간의 ID를 기반으로 데이터를 가져오고 내보내는 것이 훨씬 쉽습니다. – Frank

+1

나는 움직이는 데이터가 약간 쉽고 계층화 될 수 있다는 것에 동의 할 수있다. 그러나 필터링을 잊어 버릴 수도 있기 때문에 혼합하지 않아도됩니다. 하나의 데이터베이스가 아닌 두 개의 데이터베이스가 액세스되는 방식으로 코드를 쉽게 엉망으로 만들 수 있습니다. 따라서 클라이언트를 별도의 DB로 분리하면 보안이나 조작이 쉽지 않습니다. – merlinpatt

답변

0

이 가능하지만 문서화되지 않은입니다 - 당신의 자신의 위험에 사용

var d = new MongoInternals.RemoteCollectionDriver("<mongo url>"); 
C = new Mongo.Collection("<collection name>", { _driver: d }); 
+0

주어진 예제를 설명하고,'C'는 무엇이며, 의도적으로 글로벌입니까? – Selfish