2008년 09월 05일
MySQL, 문자셋(Character Sets) 사용에 관한 일화
2003년 무렵, 서점에 들러 책을 구경하던 중, 시선을 끄는 제목이 있었다.
"PHP"에 관한 책이었다. 두께도 꽤 되었으며, 내용을 보니 웹, 서버에 관한 것이란 정도는 알 수 있었다.
웹개발 관련해서는 실제 해볼 기회가 없었던 관계로 막연히 호기심과 궁금증만 가지고 있던 때였다.
한번 공부해 보자는 생각으로 그 책을 사온 후, 틈나는 대로 들춰 보았다.
일단 속독으로 빨리 읽어 치운 다음, 다시 처음부터 음미하면서 보고, 시간나면 또 보고...
아~ 이런 것이구나.
일단 뭔지는 안 셈이다. 공부가 늘 그렇듯 그냥 읽고 끝나면 실제로 남는 게 별로 없다.
개략적인 의미는 알 수 있을지 모르지만 그 책 속의 한 구절 한 구절의 인과 관계와 당위성까지 파악하기란 힘들다.
읽기만 하고 끝내면, "이런 것도 있었군~" 정도가 되기 쉽상이다. 특히나 처음 접하는 분야는 더욱 그렇다.
따라서 실제로 해 봐야 한다. 실제로 해 봄으로써 책에 씌여 있는 한 구절 한 구절들이 왜 그렇게 기술되었는지, 박스친 구절이 왜 중요한지를 알게 된다.
이제 뭔지는 알았으니 이것을 가지고 뭘 해볼까 생각하다가 웹 게시판을 내 컴퓨터에 구축해 보기로 했다.
웹게시판의 기본 구성 요소인 웹 서버로는 아파치를, 서버 사이드 스크립트로는 PHP를, 그리고 데이타베이스로는 MySQL을설치했다. 흔히 이들을 합쳐서 APM이라고 부르고 있다. 처음 APM을 설치할 때는 의외로 쉽게 구축되었다.
내 컴퓨터에 웹 게시판를 구축하고 보니 참으로 응용할 데가 많아 보였다. 그 동안 처치곤란이던 문서들이며 자료들을 게시판 형태로 보관, 열람, 검색할 수 있게 되었다. 그 중에 가장 맘에 드는 것은 일반 오피스제품에서는 생각할 수 없었던 다양한 응용과 변형이 가능하다는 점이었다. 스킨을 나의 취향이나 목적에 맞게 직접 수정한다든가, 새로운 기능을 만들어 붙인다든가 하는 일이 간단한 코딩으로도 가능했다.
그리고 더 욕심이 생겨 웹호스팅을 신청하여 이를 실제 웹상에서 운용하는 것도 시도해 봤다. 실제 웹에서의 운용의 장점은 비록 돈은 들어가지만 관리란 측면에서 이점이 있었다. 웹호스팅을 하게 되면 관리의 일부를 호스팅 업체가 맡아주는 셈이 되는 것이니까.
이 때 사용한 MySQL 버전은 4.0대였는데 여기엔 아직 문자셋에 관한 체계화된 솔루션이 마련되지 않은 상태였다. 이 때는 그냥 euc_kr을 사용해도 별 문제가 없었으므로 그냥 그렇게 잘 썻다. 그러다가 utf-8이란 것이 부각이 되면서 웹 페이지들이 이 문자셋으로 대체되기 시작했다. 결정적으로 내가 utf-8을 써야겠다고 결심한 계기는 MySQL을 5.0대로 올려야겠다고 생각할 때부터 였다. 웹은 점점 utf-8을 사용하는 추세로 변해가고 MySQL 4.1 버전부터 문자셋에 관한 체계화된 처리법도 제공되기 시작했으니 이제 바꿀 때가 왔다고 생각했다. 대세가 그러하니 따라가야지 싶어 그동안 euc_kr로 작성된 데이타 테이블들을 변환하기로 했다.
그런데 섣불리 변환하다가 데이타가 날아갈 수 있다는 염려때문에 미리 여러 루트로 조사를 해 보았다. 하지만 단편적인 방법론에 관한 내용들만 있을 뿐 체계적인 이해를 도와줄 수 있는 자료는 찾지 못했다. 결국 원론으로 돌아가 MySQL 메뉴얼을 보기로 했다. 상당히 복잡하다. 간단한 문제가 아니다. 섣불리 손댔다가는 나중에 문제가 생길 수 있겠다 싶었다.
음~ 이거 시간 좀 걸리겠는 걸.
MySQL에 관한 신뢰할만한 홈페이지를 찾다가 한국어로 운용되는 사이트를 찾았고 그곳에서 메뉴얼을 번역하고 있다는 것을 알게 되었다. 반가운 맘에 번역된 메뉴얼을 들춰 봤는데... 거의 초벌 번역같다는 느낌이 들었다. 이해하기가 힘들었다. 우리말이 더 이해가 안가는 상황이 벌어진 것이다. 결국 방법은 원어를 보는 방법밖에 없다.
현재 웹호스팅은 끝난 관계로 다시 로컬로 돌려서 utf-8로 웹 게시판을 운용할 계획인데 문자셋에 관한 공부가 아직 마무리가 안되어서 보류중이다. 메뉴얼 중 문자셋에 관한 부분의 번역이 80프로 정도 진행되었다. 번역이 끝나고 이해가 완전히 되면 마무리할 참이다.
MySQL 4.1 이후에 새로 도입된 문자셋에 관한 내용을 보니 상당히 체계적이다. 그 방식이 마치 HTML에 CSS가 도입된 것을 연상케 한다. 속성의 케스케이딩, 상속, 결국 전체적인 기본 문자셋으로 시작하여 데이타베이스의 가장 세부적인 필드에도 문자셋을 개별적으로 지정할 수 있다. 서버와 클라이언트의 문자셋을 달리 운용하더라도 문제가 없다. 단편적인 케이스 바이 케이스의 문제 해결 방식이 아닌, 상황에 따라, 사용자의 판단에 따라 다양한 조합이 가능한 체계이다. 처음엔 복잡해 보이지만 이해만 제대로 한다면 오히려 더 단순하고 유연할 것으로 생각된다.
"PHP"에 관한 책이었다. 두께도 꽤 되었으며, 내용을 보니 웹, 서버에 관한 것이란 정도는 알 수 있었다.
웹개발 관련해서는 실제 해볼 기회가 없었던 관계로 막연히 호기심과 궁금증만 가지고 있던 때였다.
한번 공부해 보자는 생각으로 그 책을 사온 후, 틈나는 대로 들춰 보았다.
일단 속독으로 빨리 읽어 치운 다음, 다시 처음부터 음미하면서 보고, 시간나면 또 보고...
아~ 이런 것이구나.
일단 뭔지는 안 셈이다. 공부가 늘 그렇듯 그냥 읽고 끝나면 실제로 남는 게 별로 없다.
개략적인 의미는 알 수 있을지 모르지만 그 책 속의 한 구절 한 구절의 인과 관계와 당위성까지 파악하기란 힘들다.
읽기만 하고 끝내면, "이런 것도 있었군~" 정도가 되기 쉽상이다. 특히나 처음 접하는 분야는 더욱 그렇다.
따라서 실제로 해 봐야 한다. 실제로 해 봄으로써 책에 씌여 있는 한 구절 한 구절들이 왜 그렇게 기술되었는지, 박스친 구절이 왜 중요한지를 알게 된다.
이제 뭔지는 알았으니 이것을 가지고 뭘 해볼까 생각하다가 웹 게시판을 내 컴퓨터에 구축해 보기로 했다.
웹게시판의 기본 구성 요소인 웹 서버로는 아파치를, 서버 사이드 스크립트로는 PHP를, 그리고 데이타베이스로는 MySQL을설치했다. 흔히 이들을 합쳐서 APM이라고 부르고 있다. 처음 APM을 설치할 때는 의외로 쉽게 구축되었다.
내 컴퓨터에 웹 게시판를 구축하고 보니 참으로 응용할 데가 많아 보였다. 그 동안 처치곤란이던 문서들이며 자료들을 게시판 형태로 보관, 열람, 검색할 수 있게 되었다. 그 중에 가장 맘에 드는 것은 일반 오피스제품에서는 생각할 수 없었던 다양한 응용과 변형이 가능하다는 점이었다. 스킨을 나의 취향이나 목적에 맞게 직접 수정한다든가, 새로운 기능을 만들어 붙인다든가 하는 일이 간단한 코딩으로도 가능했다.
그리고 더 욕심이 생겨 웹호스팅을 신청하여 이를 실제 웹상에서 운용하는 것도 시도해 봤다. 실제 웹에서의 운용의 장점은 비록 돈은 들어가지만 관리란 측면에서 이점이 있었다. 웹호스팅을 하게 되면 관리의 일부를 호스팅 업체가 맡아주는 셈이 되는 것이니까.
이 때 사용한 MySQL 버전은 4.0대였는데 여기엔 아직 문자셋에 관한 체계화된 솔루션이 마련되지 않은 상태였다. 이 때는 그냥 euc_kr을 사용해도 별 문제가 없었으므로 그냥 그렇게 잘 썻다. 그러다가 utf-8이란 것이 부각이 되면서 웹 페이지들이 이 문자셋으로 대체되기 시작했다. 결정적으로 내가 utf-8을 써야겠다고 결심한 계기는 MySQL을 5.0대로 올려야겠다고 생각할 때부터 였다. 웹은 점점 utf-8을 사용하는 추세로 변해가고 MySQL 4.1 버전부터 문자셋에 관한 체계화된 처리법도 제공되기 시작했으니 이제 바꿀 때가 왔다고 생각했다. 대세가 그러하니 따라가야지 싶어 그동안 euc_kr로 작성된 데이타 테이블들을 변환하기로 했다.
그런데 섣불리 변환하다가 데이타가 날아갈 수 있다는 염려때문에 미리 여러 루트로 조사를 해 보았다. 하지만 단편적인 방법론에 관한 내용들만 있을 뿐 체계적인 이해를 도와줄 수 있는 자료는 찾지 못했다. 결국 원론으로 돌아가 MySQL 메뉴얼을 보기로 했다. 상당히 복잡하다. 간단한 문제가 아니다. 섣불리 손댔다가는 나중에 문제가 생길 수 있겠다 싶었다.
음~ 이거 시간 좀 걸리겠는 걸.
MySQL에 관한 신뢰할만한 홈페이지를 찾다가 한국어로 운용되는 사이트를 찾았고 그곳에서 메뉴얼을 번역하고 있다는 것을 알게 되었다. 반가운 맘에 번역된 메뉴얼을 들춰 봤는데... 거의 초벌 번역같다는 느낌이 들었다. 이해하기가 힘들었다. 우리말이 더 이해가 안가는 상황이 벌어진 것이다. 결국 방법은 원어를 보는 방법밖에 없다.
현재 웹호스팅은 끝난 관계로 다시 로컬로 돌려서 utf-8로 웹 게시판을 운용할 계획인데 문자셋에 관한 공부가 아직 마무리가 안되어서 보류중이다. 메뉴얼 중 문자셋에 관한 부분의 번역이 80프로 정도 진행되었다. 번역이 끝나고 이해가 완전히 되면 마무리할 참이다.
MySQL 4.1 이후에 새로 도입된 문자셋에 관한 내용을 보니 상당히 체계적이다. 그 방식이 마치 HTML에 CSS가 도입된 것을 연상케 한다. 속성의 케스케이딩, 상속, 결국 전체적인 기본 문자셋으로 시작하여 데이타베이스의 가장 세부적인 필드에도 문자셋을 개별적으로 지정할 수 있다. 서버와 클라이언트의 문자셋을 달리 운용하더라도 문제가 없다. 단편적인 케이스 바이 케이스의 문제 해결 방식이 아닌, 상황에 따라, 사용자의 판단에 따라 다양한 조합이 가능한 체계이다. 처음엔 복잡해 보이지만 이해만 제대로 한다면 오히려 더 단순하고 유연할 것으로 생각된다.





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]