2014-12-11 3 views
2

많은 제한된 컨텍스트가있는 시스템에서 작업하고 있습니다. 하나의 컨텍스트는 다른 컨텍스트의 마스터 데이터로 작동합니다.아키텍처의 일부로 neo4j 복제 사용

저는 다른 하위 시스템 각각에 대해 별도의 neo4j 인스턴스가있는 마스터 레코드 neo4j 인스턴스를 가지고 있다고 생각합니다.

neo4j 복제를 사용하여 마스터 레코드 정보를 다른 하위 시스템에 복제 한 다음 필요에 따라 하위 시스템 데이터에 노드와 관계를 추가 할 수 있습니까?

여기서 의도하는 바는 마스터 레코드 데이터가 다른 서브 시스템의 데이터로 인해 막히지 않도록하기위한 것입니다. 하나의 서브 시스템은 특히 매우 조밀 한 그래프를 가지고 있으며 성능 문제를 야기 할 수 있다고 우려하고 있습니다.

neo4j 복제 시스템은 주로 HA 용으로 보이므로 아키텍처 도구로 사용하는 것이 좋을지 확신하지 못합니까?

+1

마스터 데이터의 크기는 얼마입니까? 나는. 마스터 데이터를 덤프하고이를 개별 서브 시스템 DB로 다시 가져 오는 것이 그렇게 비싸습니까 (아니면 너무 빨리 변하는가)? – FrobberOfBits

+0

마스터 데이터가 그렇게 크지 않기 때문에 작동 할 수 있습니다. 이 접근법은 또한 마스터 레코드에서 어떤 데이터를 가져 와서 다양한 하위 시스템으로 가져올 지 선택할 수있게 해줍니다. 피드백 주셔서 감사합니다 :) –

답변

1

마스터에 다시 동기화되지 않으면 Neo4j 슬레이브에 쓸 수 없습니다.

개별 데이터베이스를 가져 와서 (수동으로) 마스터에서 슬레이브 (예 : tx 커미트 핸들러 또는 change-feed)와 동기화 할 수 있습니다.

그런 다음 개별적인 특정 정보로 종속 경계 환경을 향상시킬 수 있습니다.

이벤트 소스 아키텍처를 사용하여 입력을 분산하거나 쓰기/업데이트 쿼리를 모든 데이터베이스 (예 :로드 균형 조정기)에 복제 할 수도 있습니다.

도메인 수준을 유지하는 한 다른 컴퓨터에서 다를 수있는 neo4j 노드 ID가 아닌 도메인의 레이블 및 속성에만 일치하므로 정상적으로 작동합니다.

실패 할 수있는 쓰기 쿼리는 마스터 컨텍스트에서 노드를 삭제하려고하는 삭제 작업이지만 하위 컨텍스트의 다른 정보에도 연결되기 때문에 하위 컨텍스트에서는 삭제할 수 없습니다.

아마도 노드를 삭제하기 전에 모든 노드의 관계가 삭제되었는지 확인해야하는보다 적극적인 삭제 쿼리를 사용해야합니다.

+0

이벤트 소싱은 서브 시스템이 Neo4j로 구현되지 않았기 때문에 의미가 있습니다. 나는 그것이 최선의 해결책이라고 생각한다. –

관련 문제