티맥스윈도의 DBMS 탑재

2009. 7. 29. 15:58Coders

"티맥스윈도 일부 오픈소스 차용 UX변경ㆍ드라이버 호환은 과제" - 디지털타임스

본론에 앞서, 혹시나 문제가 될 만한 부분 (떡밥입니다)
- 티맥스 윈도가 오픈소스를 차용했다는 의혹이 있는데.
일부 참조한 것은 맞다. 티맥스 윈도는 독자 커널 위에 미들웨어 레이어와 타 운영체제와의 호환 레이어가 순차적으로 올라가는 구조다. 이 호환 레이어가 다양한 소프트웨어를 티맥스 윈도에서 실행하도록 지원한다.MS 윈도 호환 레이어 개발에는 와인(WINE)을, 티맥스 오피스는 오픈오피스를 검토해 수정했다. 스카우터도 마찬가지다. 그러나 오픈소스는 그대로 사용하기에 버그와 성능면에서 치명적 문제가 있다. 핵심 모듈은 직접 개발했고 부가 모듈은 성능에 문제가 없다면 갖다 썼다. 정식 발매시 참조한 모듈을 라이선스에 따라 공개할 것이다.

...

- 연구 성과를 오픈소스화 할 계획은 없나.
지금은 출시만 생각하고 있다. 개인적으로 티맥스 윈도가 안정화돼 기술력을 인정받으면 일부 고려할 수도 있다고 본다. 개발 방법론만 놓고 보면 오픈소스 방식이 (상용 SW를 개발하는데) 효과적이라고 생각하지는 않는다.

오픈소스라는 것에 대한 규율(?)이랄까요? 그런 건 잘 모릅니다. 어렴풋이 알고 있는 건, 오픈소스로 개발을 했다 하더라도, 상업적으로 판매하는 것에 대해서는 문제가 없지만, 소스는 공개해야 한다.. 정도로 알고 있는데, 김대승 상무라는 분이 저와 같은 찌질이도 알고 있는 부분에 대해서 모르실 분은 아닌 것 같은데, 또 무슨 논쟁을 유발시키시려는 것인지 모르겠습니다. 이에 대한 저의 생각은 여기까지.

제가 흥미롭게 보는 부분은 다음 문답 입니다.
- DBMS 자체 탑재 의미는
데이터를 파일 시스템으로 처리하면 무결성이나 안정성, 보안 등에 문제 소지가 있다. MS 윈도의 불안정성은 파일로 관리되는 레지스트리에서 시작되는 경우가 많고 개발자들도 이 부분에 상당히 애를 먹고 있다. 티맥스 윈도는 이를 DBMS로 관리해 SW 개발자들이 레지스트리 데이터 처리를 신경 쓰지 않도록 했다. 레지스트리 처리를 고민해야 했다면 티맥스 오피스 개발도 상당히 지연됐을 것이다. 최근 분산 디스크 환경이나 데이터 다중 접속 등 복잡한 데이터 환경이 보편화되고 있어 DBMS 탑재의 장점이 기대된다.

그다지 논란을 일으키는 내용은 아니지만, 어디에선가 봤는데(댓글이었는지는 잘 기억이 안 납니다.), 그런데 아마도 "이게 무신 헛소리고?" 하는 반응이었던 것 같습니다. 그런데, 제 생각은 조금 다릅니다. 시장개척에도 성공한(그렇다는 건 어느정도 완성도가 있다는 얘기죠) 자사의 DB 제품이 있다면 기본적으로 탑재해서 활용하는 것은 크게 내세울 만한 거라는 겁니다. 기존의 MS 윈도의 레지스트리는 잘 아는 분들은 아시겠지만, 간혹 컴포넌트 등록 등등이 깨지면 골치아프거든요. 음. 어떤 방식으로 OS 에서 제어하여 관리하는 것인지 무척 궁금한 부분입니다. 신선하다... 라는 생각을 했죠. 그런데, 우리 부서장님은 또 그러시네요? 어짜피 DB 도 다 파일로 존재하는 건데 원하는 데이터를 더 관리(추가/수정/삭제)하기 쉽고 더 빠르게 조회할 수 있으면 그걸 쓰는 게 좋은 거 아니냐라고요.

잘 모르겠습니다만, 아무튼, 인터뷰 보고 순간적으로 느낀 건 이겁니다.

C++ 에서 레지스트리의 HKEY_CURRENT_USER 에서 문자열을 뽑아내는 코드 입니다.
  1. LPCTSTR RegGetProfileString(LPCTSTR lpszSubKey,
  2.                             LPCTSTR lpszValueName,
  3.                             LPCTSTR lpszDefault)
  4. {
  5.     HKEY hKey;
  6.     if (RegOpenKeyEx(HKEY_CURRENT_USER,
  7.                      lpszSubKey,
  8.                      0,
  9.                      KEY_QUERY_VALUE,
  10.                      &hKey) == ERROR_SUCCESS)
  11.     {
  12.         DWORD dwType = 0;
  13.         DWORD dwSize = 1025;
  14.         CHAR byteGetValue[1025];
  15.    
  16.         ::ZeroMemory(byteGetValue, sizeof(byteGetValue));
  17.  
  18.         RegQueryValueEx(hKey,
  19.                         lpszValueName,
  20.                         NULL,
  21.                         &dwType,
  22.                         (BYTE *)byteGetValue,
  23.                         &dwSize);
  24.  
  25.         RegCloseKey(hKey);
  26.  
  27.         return (char *)byteGetValue;
  28.     }
  29.  
  30.     return lpszDefault;
  31. }
예를 들어, 저 함수를 통해 특정 문자열을 뽑아낼 때 이렇게 하면 되겠죠.

CString s = RegGetProfileString("Control Panel\\Colors\\", "ActiveBorder", NULL);

그럼 티맥스 윈도우 내부에서는 이렇게 코딩되어 있으려나요? 정말 흥미롭습니다. OS의 DBMS 내장이라... 티맥스는 혹시 이것 자체로 특허를 내 봐도 될 것 같은데...(혹시, 이미 다른 OS에서 시도한 적이 있다/특허가 잡혀있다 등등의 도움말을 주시면 정말 고맙겠습니다.)
  1. USE HKEY_CURRENT_USER
  2. GO
  3.  
  4. SELECT STR_VALUE
  5.   FROM [Control Panel]
  6.  WHERE FULL_PATH = 'Colors'
  7.    AND VARIABLE = 'ActiveBorder'
  8. GO
* 사실, 계층구조로 되어있는 레지스트리를 찾아 내려가자면 뭔가 Recursive 하게 프로시저를 돌려야 할 것 같은데(마치, 부모/자식 구조로 되어 있는 게시판 테이블 구조처럼), 생각하기가 좀 귀찮아서 단순히 작성해  봤습니다.


※ 추가
글 올리고 좀 검색해 봤더니, KLDP 에 저 기사에 대한 이야기가 올라와 있군요. 이런 저런 의견들이 분분한데, 일단은 오픈소스 진영이라 티맥스에 대해서는 좀 부정적인 이야기가 많습니다. 게중 눈에 띄는 댓글이 있어서 살짝 그 부분만 옮깁니다.

설마 김대승씨가 리눅스나 MySQL처럼 훌륭한 오픈소스 소프트웨어의 존재에 대해서 몰라서 한 소리라고는 생각되지 않습니다. 오픈 소스 운동에 암만 관심이 없어도 김대승씨 정도의 프로그래머가 모르기에는 너무 상식적인 이야기라 이 쪽에 대해서 잘 모르는 기자가 인터뷰를 정리하는 과정에서 이렇게 된게 아닐까 추측합니다.

네, 맞는 말씀이신 것 같습니다. 저 사실을 간과했군요. 직접 육성으로 듣지 않는 이상, 혹시나 기자의 실수가 있었을 수도 있습니다. 티맥스윈도 건에 대한 것 뿐만 아니라, 모든 신문기사, 인터넷 기사, TV뉴스 등등은 기자 또는 언론사의 의도가 치고 들어가려면 얼마든지 들어갈 수 있죠.

비판이든 칭찬이든 잘 생각해 보고 해야할 것 같습니다.
(그래서 저도 티맥스 윈도에 대한 관심은 꽤 많지만, 일단은 까거나 칭찬하거나 보다는 그냥 곁다리 재미에 대해서만 포스팅 하고 있습니다. 이 쪽이든 저 쪽이든 논쟁에서 이길 자신은 없거든요.)