2013-06-11 2 views
1

현재 사용자 트랜잭션을 기록하는 다양한 옵션에 대해 조금 연구를하고 있습니다. 현재 우리는 트랜잭션이 XML 메시지 형태로 전송되는 디자인을 가지고 있습니다. SQL을 데이터베이스로 사용하여 각 XML 메시지/트랜잭션은 guid, 트랜잭션 유형, 트랜잭션 발생시의 타임 스탬프 및 전체 XML을 포함하는 필드를 사용하는 기본 키 (네 개의 필드가있는 테이블)에 저장됩니다. 기본적으로 오류 트랜잭션 중에 발생 된 원본 XML 메시지는 트랜잭션 유형과 XML 메시지에서 보낸 데이터를 평가하기 위해 오류가 발생했을 때 검색 할 수 있습니다.XML 데이터 저장 옵션

그러나이 디자인을 사용하여 데이터베이스를 쿼리하면 정말 오랜 시간이 걸리는데, 나는 매일 수천 건의 트랜잭션이 넘을 수 있는지에 대해서는 확신 할 수 없다. 그래서 나는 다른 유형의 데이터베이스가 있는지 알아보기 위해 연구를 해왔다. 내 상황에 더 효율적일 수있는 응용 프로그램. 선택 항목이 너무 많지만 어디서부터 시작해야할지 모르겠다. 몽고 (mongodb)에 대한 토론을 해보지 만, 그 일이 내가하려는 일에 부합하는지 확신 할 수 없다. 귀하가 연구 할 수있는 데이터베이스 옵션 유형에 대한 제안을 제게 제공 할 수 있습니까?

답변

0

나는이 DB 체계 통합 것입니다 :

id, parentid, text 
1, 0, 'test' 
2, 0, 'test2' 
3, 1, 'test child' 
4, 3, 'test child child' 

다음 재귀 XML로 트리를 다시 작성을

0

귀하의 MySQL의 인스턴스 XML을 저장하는 BLOB/TEXT 필드는 변수이기 때문에 가능성이 동적 행 형식을 사용하고 있습니다 길이.

트랜잭션 메타 데이터 테이블의 PK에 대한 외래 키 링크로 XML 데이터를 보유 할 별도의 연관 테이블을 생성하십시오. 그렇게하면 쿼리를 실행하여 BLOB/TEXT에 저장된 XML 데이터가 해당 쿼리에 영향을주지 않고 메타 데이터의 레코드를 찾을 수 있습니다. 조인을 사용하는 별도의 쿼리를 통해 필요할 때만 XML 데이터에 액세스하십시오.

참조 :

http://dev.mysql.com/doc/refman/5.5/en/optimize-blob.html

SO 여기에서 더 많은 :

store TEXT/BLOB in same table or not?

관련 문제