블로그 주소 변경




http://dan1.tistory.com


으로 이사.

by 어릿광대 | 2008/07/24 03:20 | 트랙백 | 덧글(0)

3. DB는 무엇인가요?

다른곳에 쓰고 있는 글 세번째...

-------------------------------------------------------------------
세번째 주제는 DB(Database) 입니다.
우선 이 글은 최대한으로 쉽게 설명한 내용이므로 DBMS(Database Management System)와 DB를 구분하지 않고 DB로 통칭하겠습니다.
(위 내용을 모르시면 그냥 넘어가시면 됩니다^^)

DB라는 말을 몇번 쯤은 들어보셨을 것입니다.
그렇지만 이게 무엇이다 라고 설명하기는 쉽지 않죠?
잠깐 옛날 얘길 좀 해보겠습니다.

#1
다들 학창 시절을 떠올려 봅시다.
아마도 수업 시간에 많은 필기를 하셨으리라 생각합니다.
'난 머리가 좋아서 듣고 바로 외웠어' 라고 하시는 분들은 조용히 '뒤로' 버튼을 눌러 주십시오-_-
시험 기간이 되면 필기했던 노트를 보면서 공부하셨죠?

#2
좀 더 오래전으로 가봅시다.
제가 초등학생때에는 '후뢰시맨' 이라는 비디오 시리즈 물이 선풍적 인기를 끌었습니다.
학교가 끝나면 2,000원을 들고 동네 비디오 가게를 가서 비디오를 빌려보던 기억이 아직도 어렴풋이 나네요.
볼 비디오를 고르고 카운터로 가면 주인 아저씨가 노트에 제 이름과 전화번호를 적어두고 빌려 줬던 기억이 납니다.


위의 두개의 예에서 노트가 바로 DB 입니다.
다만 요즘 시대에는 이것도 컴퓨터를 이용해서 저장/조회/검색/수정/삭제 가 쉽고 빠르도록 하죠?
수단의 차이만 있지 이것이 모두 DB가 되는 것입니다.
다면 앞으로는 컴퓨터(혹은 그에 준하는) 시스템에서의 DB만 살펴 보도록 하겠습니다.


지금 여러분이 이 글을 보실 수 있는 이유도 DB가 데이터를 저장하고 있기 때문입니다.
여러분의 브라우저가 페이지를 요청하면 웹서버라는 놈이(이놈에 대해선 다음에 말씀드릴 기회가 있을지도 모르겠습니다)
DB에 데이터를 요청하게 되구요.
DB는 요청한 데이터를 웹서버에게 돌려주고, 웹서버가 다시 브라우저로 주는 역할을 합니다.

DB는 어떻게 생긴 놈일까요?
그냥 컴퓨터에 올라오는 프로그램일 뿐입니다.
다만 사용 목적에 따라 고성능의 컴퓨터를 요구하기도 합니다.
여러분이 사용하시는 컴퓨터도 DB로서 성능을 발휘할 수 있습니다. (다만 성능은 보장 못하죠^^)

다들 오라클 이라는 회사를 들어보셨나요?
이곳은 세계적으로 가장 유명한 DB를 생산하는 회사입니다.
아마 한카피에 수천만원 한다고 하죠?
우리는 몇만원 하는 백신을 사는 것도 아까워 합니다.
그런데 DB는 왜 이런 엄청난 가격이 가능할까요..
그것은 정보를 다루기 때문입니다.
은행DB가 문제가 생겨서 계좌정보가 날아갔다면 어떻게 될까요......
상상도 하기 싫습니다.
이러한 '안정성' 이 중시되는 프로그램이기 때문에 많은 것들을 고려하고, 오랜 시간 개발한 것이기 때문에 비싼 것이죠.


그럼 살짝 기술적인 내용을 맛만 보겠습니다.
1. SQL
- Structured query language
세상에 DB의 종류는 다양합니다. 그런데 이 DB에서 데이터를 저장/조회/검색/수정/삭제 방법이 제각각이라면 어떨까요?
DB의 데이터를 조작하는 언어가 바로 이 SQL이 되는 것입니다.
세상의 거의 모든 DB는 SQL을 지원하고 있습니다(실제로 약간씩 다르긴 합니다)

2. RDBMS
- Relational database management system
예를 들어보겠습니다.
제가 이 사이트에 1,000개의 글을 썼습니다.
그런데 문득 제 이름을 '홍길동' 으로 바꾸고 싶어서 제 개인정보를 수정했습니다.
그럼 이미 1,000개의 글을 어떻게 해야 할까요?
일일이 글쓴이의 이름을 수정해야 할까요?
RDBMS라면 그럴 필요가 없습니다. (잘 사이트가 설계되었다는 가정하에..)
이처럼 각 데이터 간의 관계를 정의할 수 있게 해 주는 것이 RDBMS 입니다.


DB는 어디에도 있습니다.
다들 하나씩은 가지고 계신 휴대폰의 전화번호부도 DB의 일종입니다.

우리가 다루는 데이터의 양이 방대해질 수록 DB의 중요성은 더욱 증가할 것입니다.


몇 년 전이었던가요?
자신의 사진을 올리면, 연예인 중에 닮은 사람을 출력해주는 서비스가 인기를 끌었던 적이 있습니다. (전 원빈 91% 였습니다 -_-)
이처럼 이제 DB에는 기존의 텍스트 데이터 뿐 아니라, 사진, 음악 등의 정보도 데이터화 해서 올리고 있습니다.

'이런 것들이 쉽게 검색될 수 있게 된다면 좋겠다' 라는 생각과 함께 그러한 서비스를 한 번 쯤 생각해 보시는 것은 어떨까요


긴글 읽어주셔서 감사합니다.
잘못된 내용이나 궁금한 점은 언제나 올려주세요.

그럼 주말 즐겁게 보내세요.
(전 오늘 사고를 쳐서 당분간 자숙의 기간을 ㅠㅠ)

by 어릿광대 | 2008/05/24 00:14 | 이것저것 | 트랙백 | 덧글(0)

2. OS는 무엇인가요?

다른 곳에 연재하고 있는 글 2번째.....

--------------------------------------------------------------------------
오늘은 2번째 시간으로 OS에 대해서 써볼까 합니다.

OS는 다들 아시다시피 Operating System, 운영 체제 입니다.

OS하면 뭐가 떠오르시나요? 아마도 MS의 윈도우즈가 아닐까 싶습니다.
조금 더 관심이 있으신 분은 애플의 Mac OS, 유닉스, 리눅스 등을 생각하시지 않을까 싶습니다.
좀더 살펴보자면, 우리가 사용하는 휴대폰에도 OS는 들어가 있습니다. (제가 제조사에 근무하지 않아서 뭔지는 잘 모르겠네요)

그럼 OS가 하는 역할이 뭘까요?
이것에 대해 알아보기에 앞서 예전 얘기를 해볼까 합니다.

1995년 MS Windows 95가 나오기 이전에는 주로 PC에서 MS-DOS혹은 IBM의 PC-DOS를 사용하였습니다.
그때 사용해 보신 분들은 아시겠지만, DOS는 텍스트 기반의 OS입니다.
사실 최근의 OS에 비하면 OS라고 하기도 힘들 정도의 수준이죠.

이 때에는 PC사용자가 그리 많지도 않았고, 사용할 수 있는 프로그램의 수도 많지 않았습니다.
더불어 요즘 모두들 너무나 자연스럽게 사용하시는, 음악을 들으면서, 메신저를 켜놓고, 여러개의 인터넷 창을 띄우는 일은 거의 불가능 하였습니다.

왜냐하면, DOS는 API를 제대로 제공하지 않았고, 멀티 프로세스를 제대로 지원하지 못했기 때문입니다.
갑자기 생소한 단어가 나오죠?
그 개념에 대해서 알아볼까합니다.


API = Application Programming Interface
API라는 것은 OS에서 제공하는 기능을 응용 프로그램에서 사용할 수 있도록 해주는 것입니다.
이런게 왜 필요할까요?

다들 수학 좋아하시는지요?
고등학교때 다들 보셨을 정석책의 맨 뒤에 보면 log표, 삼각함수표 등등이 있죠?
이게 없다면 어떻게 될까요? 우린 한 문제를 풀기 위해서 엄청난 양의 계산(계산해서 값이 나오면 다행이죠)을 해야 할 것입니다.
하지만 감사하게도 어느 똑똑하신 분이 미리 다 계산해서 우리가 사용할 수 있게 해 놓았죠?
우리는 따라서 단순 계산은 하지 않아도 되는 것이구요.

이것이 API라고 생각하시면 됩니다.
예전 DOS 시절에는 프로그램을 하나 만들기 위해서는 모든 것을 프로그램 개발자가 만들어야 했습니다.
감이 잘 안오신다구요?
쉽게 설명해 보겠습니다. 우리가 사용하는 프로그램들은 기본적인 UI가 동일하죠?
윈도우가 하나 있고, 맨 위엔 아이콘과 프로그램 제목, 최소화, 최대화, 닫기 등의 버튼이 나오고 파일, 편집 등의 메뉴가 있습니다.
왜 대부분의 프로그램이 비슷할까요?

이것은 윈도우즈에서 제공하는 API를 사용했기 때문입니다.
만약 윈도우즈 API가 없다면요? 끔찍합니다. 이 모든걸 다 '그려야' 합니다.
다들 1픽셀식 알맞은 색깔을 찍어서 그려야겠죠.

실제로 API 덕에, 굉장히 많은 노가다를 줄일 수 있습니다.
API는 그래픽, 파일 처리, 윈도우, 사운드, 네트웍 등 모든 영역에 있어서 처리가 가능하도록 되어 있습니다.
말하자면 수천개(수만개일수도 -_-)의 API를 윈도우즈는 제공하고 있습니다.

DOS에 비해 윈도우즈는 프로그래머에게 하나의 축복 이었던 것이지요.
물론 그 덕에 양질의 수많은 프로그램이 나올 수가 있었고, 우리는 그것을 활용해서 여러가지를 할 수 있게 된 것입니다.


그럼 멀티 프로세스는 뭘까요?

프로세스 = 컴퓨터에서는 주로 '실행중인 프로그램' 의 뜻으로 쓰임

말 그대로 Multi 프로세스, 즉 여러개의 프로그램을 동시에 띄운다는 것입니다.
이것은 DOS에 비해 획기적으로 개선된 UI 덕에 가능할 수 있었습니다.
OS는 이 프로세스를 실행/관리 하는 역할을 합니다.
프로그램은 HDD에 저장되어 있다는 것을 다들 아실겁니다.
사용자가 프로그램을 실행하면, HDD에서 프로그램을 메모리로 올려서 실행을 하게 됩니다.

가령 인터넷 익스플로러 창을 20개를 띄웠다고 합시다. 그럼 20개의 프로세스가 생기겠죠? (실제로는 그 이상일 수도 이하일 수도 있습니다.)
그런데 컴퓨터의 메모리는 한정되어 있습니다. 그럼 어떻게 할까요?
잘 사용하지 않는 창의 정보는 메모리에서 HDD로 옮겨서 그만큼의 메모리를 확보하게 됩니다.
그럼 그 창을 활성화 시키면요? 반대로 HDD 에서 메모리로 가게 되겠죠.

다들 아시다시피 컴퓨터에 CPU(w중앙처리장치)는 일반적으로 한개 입니다.(듀얼코어, 쿼드코어 에 대한 얘기는 좀 있다가 하겠습니다)
한개의 CPU는 하나만 처리할 수 있습니다.
좀전에 20개의 창을 띄웠으니 각 창마다 공평하게 나눠 작업을 해야겠죠?
이것도 OS가 담당합니다.
물론 우선순위는 있습니다. 활성화된 창은 더 많이 할당하게 되는 것이죠.

결국, 각 프로그램마다 알맞은 자원(CPU/메모리)를 할당하는 것이 OS의 또 하나의 중요한 역할이 되는 것입니다.

또한, 각 하드웨어를 관리하여 사용할 수 있게 하는 일도 하고, OS는 정말 많은 일을 합니다.
그래서 MS가 40여 만원에 팔고 있겠죠.


OS가 하는 일을 살짝 정리해 보겠습니다.
- 하드웨어와 응용프로그램 사이의 인터페이스
- 컴퓨터 자원 관리
- 프로그램의 실행을 제어


아시다시피 HW의 발전에는 한계가 있습니다.
그래서 네트웍을 이용한 그리드 컴퓨팅이 대안으로 제시되고 있죠.
그러려면 OS가 이것을 지원해야 겠죠?

요즘 많이 나오는 듀얼코어/쿼드코어는 하나의 CPU에 두개의 뇌를 심는 것입니다.
한놈이 연산할때보다 이론적으로 2배를 연산할 수 있겠죠?(실제로는 아닙니다.)
이것도 OS에서 지원해야 가능한 것입니다.

여러개의 작업을 각 코어에 알맞게 나눠줘야하는 것이죠.


최근 인텔에서는 CPU에 50개의 코어를 넣는 작업을 성공했다고 합니다.
50개면 요즘 일반적인 PC 유저가 띄우는 프로세스의 갯수보다도 많습니다.
각 코어가 1개씩의 프로세스를 맡아서 처리한다면, 음악을 들으면서, 메신저를 하면서, 인터넷 창을 띄워놓고, 영화를 재생하면서, 카트라이더를 즐겨도 렉이 안걸릴 것입니다.
2015년 쯤엔가 50코어 CPU를 지금의 CPU크기로 줄일 수 있다고 하는데, (시기가 맞는지는 잘 모르겠네요)
그때도 가끔 생각해 보시는 것도 재밌을 것 같습니다.

이제 OS에도 관심을 가져 보시기 바랍니다.
XP에서 비스타로 가면서 뭐가 좋아졌는지, 뭐가 나빠졌는지 등등을요.

긴글 읽느라 고생하셨고, 질문이나 피드백은 언제나 환영합니다.
그럼 즐거운 하루 되시길^^

by 어릿광대 | 2008/05/16 00:23 | 이것저것 | 트랙백 | 덧글(0)

1.고정관념을 깨자 - 컴퓨터

내가 어딘가에 7부작으로 쓰기 시작한 글의 첫번째인데, 여기다도 한번 올려 본다.

재미없는 글일수도 있고, 모두들 아는 내용일 수도 있고, 터무니 없는 글 일수도 있으니, 각자 알아서 판단하시고 받아들이시거나 혹은 '뒤로' 버튼 누르시면 될 것 같다.

--------------------------------------------------------------------------------------

한 2000년 쯤이었던가요? 제 주위에 누군가가 말했습니다.
'전 TV 없이는 살아도 컴퓨터 없인 못살거 같아요'
당시에 그 말을 들은 제 주위 사람들은 별로 공감을 안했던 듯합니다.
하지만 이제 모두들 공감하실 줄 압니다.
아니 컴퓨터가 없다면, 정상적인 생활이 불가능합니다.

저는 컴퓨터 라는 개념을 넓게 봐야한다고 생각합니다.
지금 제가 사용하는 랩탑 컴퓨터, 집에있는 데스크탑 컴퓨터, 제가 회사에서 관리하는 서버 컴퓨터 이런 것들만이 컴퓨터가 아닙니다.
지금 다들 하나씩 가지고 계시는 휴대폰도 컴퓨터고, 차량 소지자에게는 필수품이 되어버린 네비게이션도 컴퓨터입니다.

과연 그것만 그럴까요?
요즘 닌텐도에서 나온 WII 라는 게임기 아시죠? 그것도 일종의 컴퓨터입니다.
많은 분들이 가지고 계시는 PMP도 컴퓨터입니다.

살짝 전문적인(그래봐야 제 전문성이 높지 않기때문에 쉬운 내용입니다) 내용을 들어 가자면 컴퓨터는 중앙 처리장치(CPU) - 메모리 - 입출력장치(키보드, 모니터 등) - 저장장치(HDD) 등으로 구성되어 있습니다. (정확한 명칭이 맞는지는 잘..)

휴대폰을 볼까요?
CPU - 다들 너덜너덜해진 퀄컴 스티커 붙어있죠? 퀄컴에서 만든 MSM이라는 칩이 우리 휴대폰에 들어가 있는데 그게 CPU입니다.
메모리 - 메모리가 있으니 화면에 뭔가를 보여주고, 알람도 되고 하겠죠?
입출력장치 - LCD 화면, 키패드가 있죠?
저장장치 - 플래시 메모리가 있기 때문에 전화번호도 저장하고 하죠?

사실 우리가 지금 너무나 쉽게 사용하는 전자계산기도 수십년 전에는 컴퓨터였습니다.
하지만 우린 컴퓨터라고 생각하지 않죠?

결론적으로 말해서 우리가 흔히 말하는 '디지털' 기기는 전부 컴퓨터라고 생각하시면 됩니다.


컴퓨터에 대해 좀 넓게 보자는 (이미 그러실지도 모르겠지만) 얘기는 제가 2006년에 복학해서부터 몇몇 사람들에게는 했던 얘기인데, (사실 세션때 한번 해볼까 했는데 기회가 없더군요) 이제는 약간 케케묵은것 같기도 하고...

여러분들은 여러분들의 '컴퓨터'에서 무엇을 많이 사용하시나요?

요즘은 네비게이션에서 전화도 되고, 인터넷도 되고, 게임도 되는(현대차의 네비게이션) 세상이고, PMP에서 네비게이션을 흡수한(빌립, 아이스테이션 등) 세상입니다.

'여기서 되는게 여기서도 되면 좋을텐데' 에서 '여기서 되는게 여기서 안될 이유는 없는데 왜 현재는 안되고 있을까' 라는 식으로 넓혀나가면 어떨까요.
물론 저도 잘은 못하고 있습니다만,,,

좀더 나아가서 이제 All IP 세상이 도래 한다고 합니다.
All IP 라는 것은 넓은 의미로 보자면 모든 기기에 IP를 부여해서 네트웍화 시키겠다는 것이죠.
세상에 모든 것이 컴퓨터가 되는 세상이 도래하게 될 것인데, 그 때를 그려보며 자신만의 대비(?)를 하는 것이 어떨지 생각합니다.


너무 길게 쓰면 재미없으니, 이정도에서 마칠께요.
틀린점이나, 의견이 다르시거나, 영양가가 없다는 충고라든가 뭐든지 댓글로 달아주세요.

그럼 즐거운 연휴 되시길~~

by 어릿광대 | 2008/05/13 02:05 | 트랙백 | 덧글(0)

내가 상상하면 현실이 된다. Screw it, Let's do it



캐나다에 있을때, 지나가다가 들른 서점에서 Radical Marketing 이라는 책을 사서 본적이 있다.
그때, Virgin 에 대해서 알게 됐고, Richard Branson 이란 사람을 알게 되었는데, 이 책을 통해 확실히 알 수 있게 되었다.

자신의 신념과 가치관을 자신의 경험을 통해 나타내는 방식으로, 굉장히 흥미롭게 읽을 수 있는 책이다.

고등학생때 처음 사업을 시작했고, 지금도 열정적으로 많은 일을 하는 모습이 정말 멋졌다.

'통제 가능한 모험을 즐겨라' 통제가 불가능하다면 그것은 모험이 아니라 도박이다.

'일과 인생에 즐겁게 미쳐라' 어떤 일이건 즐기는 사람을 이기지 못한다는 말은 맞는 말인것 같다.


Screw it, Let's do it

by 어릿광대 | 2008/05/11 20:21 | | 트랙백 | 덧글(0)

◀ 이전 페이지다음 페이지 ▶