안녕하세요. mysql에 관한 몇가지 질문입니다.
1. mysql rollback
2. 데이타암호화
3. 상용버전구입
우선 mysql에서의 rollback 기능에 대한 질문입니다.
mysql에서의 트렌젝션은 지원이 되지 않는 걸로 알고 있습니다.
그래서 해당 테이블에 lock을 걸어서 쿼리를 수행하는 걸로
트렌젝션을 대신 한다고 하는데..
저의 경우 두개 이상의 데이터베이스을 동시에 업데이트하거나
인서트해야 합니다. 각각의 데이터베이스에서도 서로 다른
테이블에 업데이트가 일어나야 하거나, 새로운 값이 인서트 됩니다.
이 경우 흔히 아는대로 변경이 동시에 일어나거나 오류가 있을시
변경되면 안되겠지요. 그래서 트렌젝션을 거는데 mysql에서는
그 기능이 없으니 lock table을 사용해야하는데..
3개의 테이블을 a,b,c 라고 하면 동시에 write로 lock을 걸어 놓고
동시에 업데이트가 되거나 되지 않게 하려면 어떻게 해야 하나요.
제 생각으로는 일단 3개의 테이블에 lock을 걸어 놓고 (APM 환경에서)
첫번째 조건을 만족하면 두번째 세번째 쿼리를 수행하는 걸로 만들면
되지 않을까해서 아래와 같이 첫번째 쿼리가 성공하면 0을 리턴하니까.
성공하면 a,b,c 개의 테이블을 업데이트하고 아니면 에러를 출력하고난
후 lock을 해제하는 로직을 만들어야 하는데 ..
lock tables a write, b write, c write;
$query1="select from a a1='xx' ;
$result1=mysql_query( $query1,$connect);
if($result1==0){
$query2="update a set a1='xx',a2='xx',a3='xx' where a4='xx' ;
$query3="update b set b1='xx',b2='xx',b3='xx' where b4='xx' ;
$query4="update c set c1='xx',c2='xx',c3='xx' where c4='xx' ;
}
else{
에러출력;
}
unlock talbes;
이런게 통하는지 알고 싶습니다.
mysql에서의 트렌젝션이나 lock table 에 대해 잘 아시는 고수님들
부탁드립니다.
2. 두번째 질문인 데이터 암호화 부분인데 아래의 글들을 살펴보니
mysql 데이터 베이스에 들어가는 값들은 password()로 암호화 되서
들어가는데 엔크립션 된 값을 디크립션할 수 있는 방법은 없다고 되어
있더군요.
제 경우 서로 다른 두개의 회사에서 데이터를 주고 상황이라서 상대방
회사에서 보내온 데이터를 받아서 우리쪽에 입력할 때는 상대방에서
받은 데이터에 다른 데이터를 추가해서 저장하게 됩니다.
따라서 상대방도 그와 유사한 경우가 생깁니다. 서로 지정한 데이터
베이스나 테이블에는 읽기나 쓰기 허가권을 줘서 접근을 가능하게 하는데
그외 테이블이나 데이터 베이스에서는 암호화해서 혹시나 해킹등을 통해
자료가 유출되었을 경우 암호화된 데이터를 볼수 없도록 하고 싶습니다.
이 경우 암호화 해서 각각의 필드에 자료를 저장했을때 읽어들이면 암호화된
자료들이 보입니다.
출력할 때 디크립션할 방법은 없나요?
3. 마지막으로 mysql 의 상용버전에 대한 정보를 알고 싶습니다.
www.mysql.com 말고 국내의 대행벤더를 알고 계신분이나 사용중이신
분들의 조언을 부탁드립니다.--이 곳에 서명을 적어주십시오.
gyn 서명싫어.