문제
동일한 응용 프로그램을 실행하는 Nerlang 노드가 있다고 가정합니다. MNESIA 표 T1을 모든 N 노드와 공유하고 싶습니다. 그러나 다른 MNESIA 표 T2를 노드 쌍과 공유하고 싶습니다. T2의 내용은 동일하고 공유 쌍만으로/복제 될 것임을 의미합니다. 다른 말로, 나는 T2 테이블에 대해 N/2의 다른 내용을 원합니다. 각각의 별개의 노드 쌍에 대해 T2의 이름을 바꾸는 것이 아니라 MNENSIA에서 가능합니까?
해결책
하나의 테이블은 공유하는 노드 수에 관계없이 항상 하나의 테이블입니다. 테이블을 공유하는 노드 쌍을 원한다면 각 노드 쌍에 대해 고유 테이블을 만들어야합니다.
모든 테이블에 대해 동일한 설정 (레코드 등)을 사용할 수 있으므로 완료하기 위해 훨씬 더 많은 작업이 없어야합니다.
다른 팁
MNESIA의 테이블 조각화로 이것을 할 수 있습니다. mnesia_frag_hash
콜백 동작. 이를 통해 키 분포를 제어 할 수 있으며, 콜백이 어떤 노드 쌍 (따라서 어떤 조각) 사용해야하는 어떤 노드 쌍 (및 어떤 조각)를 결정할 수 있도록 키를 구성 할 수 있습니다.
이것이 특정 경우에 작동하는지 여부는 액세스 패턴 및 데이터 세트에 따라 다릅니다. 꽤 복잡한 접근 방식이며 대신 다른 테이블 이름을 사용하여 더 잘 제공 될 가능성이 있습니다.
제휴하지 않습니다 StackOverflow