지금 프로젝트를 진행하다가 특이사항으로 저의 DB(Mysql)과 타 DB(Mssql, sql server 2007)의 테이블을 조인해서 사용할 일이 발생했습니다.
DB가 달라 지금까지 데이터를 불러와서 DataTable끼리 링큐로 조인해서 사용하는데 링큐에 대한 지식도 짧고 하고싶은대로 쿼리를 바꿔 사용하기 어렵더라구요…
그래서 이러던 와중 터미널 프로그램을 만들어서 각 디비에서 데이터를 불러와 하나의 임시테이블을 만들어주고 Data의 수정사항을 주기적으로 확인해서 임시테이블에 업데이트를 해주는 방식을 할 수 있다고 들었습니다.
위 설명한 부분을 직접 확인할 예제나 참고할 문서가 있다면 고수님들께서 추천해주시기 바랍니다…
또 만약 다른 방법도 있으면 얼마든지 제시해주시면 더욱 고맙겠습니다!
감사합니다.
<추가내용>
일단 두 테이블을 가져와야 하는 상황과 이유를 설명하겠습니다.
우선 기존 사용하는 타 업체 프로그램이 있습니다. (MsSql, sql server 2007) 여기서 DB의 접근권한은 열어주지 않고 스토어 프로시져 형태로 데이터를 저에게 제공합니다. 그렇기 때문에 개발이 이어지면서 추가적으로 입력해야하는 정보가 필요해졌습니다. 타업체 DB에 컬럼을 추가할 수 없으니, 제가 사용하는 DB(Mysql)에 추가정보를 입력하기 위해서 타업체 DB의 기본키를 같이 저장한 별도 테이블을 만들어
따로 관리하고 있습니다. 그렇게 해서 지금은 타업체 DB 데이터를 불러오고 제DB의 별도 테이블을 C#에서 링큐로 조인해서 사용하고 있습니다.
타업체 DB의 프로시져 데이터 불러옴
추가로 필요한 데이터는 입력화면을 개발해 내DB에 저장함
타업체 DB의 데이터와 내DB의 별도데이터를 각각 DataTable로 불러와 링큐로 하나의 DataTable로 만들어 사용하는중
4.링큐 자체에 대한 지식이 짧고 불편해서 실시간 수정사항이 반영해서 두 DB의 테이블을 하나의 테이블로 만들어 내DB에 임시테이블을 만들어 사용하고싶습니다!
타 DB는 DB 링크 서비스가 있지만, 아마 MySql은 없으므로, 사실 상 타 DB와 조인은 불가능합니다.
그래서 아마 지금 1번 DB , 2번 DB 의 데이터를 불러와 메모리상에서 조인을 하시는 것 같습니다.
즉 두 DB 간 트랜잭션은 없다는 거, 만약 두 DB간의 정확한 동기화가 필요하시다면,
고객사쪽과 협의를 하셔서 풀어야 할 것 같습니다. 아니면 초당 폴링을 이용하여, 고객사 DB쪽에 최대한 최신 데이터를 불러와 동일한 방식으로 푸셔도 됩니다.
기존 방식의 DB 연결 및 로직 처리 시 트랜잭션 격리수준을 설정하여, 처리하시면 데이터부분은 동기화가 가능 할 것 같습니다. 단 고객사 DB LOCK 발생 시 미움을…트랜잭션 타임아웃이 설정 되어 있겠죠?