본문 바로가기

길게 쓰기/객체지향의 탄생 (공식)

관계형 데이터베이스 모델링/튜닝과 객체지향

이 글은 뭔가 해답을 구하고 설명하기 보다는 제 스스로 의문을 갖고 답을 찾아보기 위해 메모장에 끄적이듯 적습니다.

객체지향은 프로그래밍을 잘 짜게 해주는 방법론, 기법 입니다. 코드를 유연하게 만들어 주기 때문이지요. 유연하다는 말은 수정하기 쉽고 확장하기 쉽고 재 사용하기 쉽다는 뜻을 가지고 있습니다.

관계형 데이터베이스 모델링/튜닝(줄여서 RDB)는 관계형 데이터베이스 모델링을 잘 설계하고 SQL을 효율적으로 튜닝하는 방법론, 기법이라고 정리하겠습니다. 이 뜻 역시 모델을 유연하게, 수정하기 쉽고 확장하기 쉽고 이해하기 쉽게 해줄 것입니다. SQL 튜닝은 여기에다가 속도가 더 중요한 요소 입니다.

관계형 모델보다 객체지향이 나중에 나왔습니다. 지금 객체지향은 자바, C#등의 프로그래밍 언어로 소프트웨어를 개발할때 주로 쓰입니다. 관계형 모델은 데이터베이스 설계와 구축에 쓰입니다. 

제가 궁금증을 갖는 것은 객체지향 잘하는 것보다 관계형 모델을 더 잘하는게 더 고급 전문가로 인정받는것 같다라는 것입니다. 왜 그럴까요. 저는 객체지향을 좋아했던 개발자로 이 사실을 좋아하진 않았습니다.

객체지향은 주로 소프트웨어 개발에 쓰입니다. 앱이라던가 웹 어플리케이션, 서버 프로그래밍, 이런 프로그래밍은 주로 '자기가 가진 기능'들을 동작(=움직임,행동,프로세스)시킵니다. RDB는 주로 데이터를 체계적으로 관리하기 위한 데이터베이스에서 쓰입니다. 기술적인 중요도는 어느것이 중요하다라고 하기가 애매합니다. 

그런데 대부분의 프로젝트, 소프트웨어에서 가장 근간이 되고 가장 파급 효과가 크고 가장 위험하고 가장 업무를 잘 알아야 하는 부분이 RDB인것 같습니다. 제가 같다~라고 한것은 논란의 대상이 될수도 있기 때문입니다.

구축된 DB를 바탕으로 그 위에 프로그램을 짜기 때문에 소프트웨어는 DB 모델링이나 SQL의 품질에 크게 의존될수 밖에 없습니다. 

그래서 RDB를 잘 설계 했을때 또는 문제 있는 모델링이나  SQL을 잘 수정했을때 그 효과는 모든 관계자들이 인식하고 인정할정도로 큽니다. 예를들어 하루내내 걸리는 SQL을 잘만 튜닝하면 몇십분으로 단축할수 있습니다. 그러면 이해당사자들은 이 엄청난 효과에 크게 기뻐하고 보상할 것 입니다.

반면에 객체지향은 대충 프로그램을 짜나 객체지향적으로 짜나 결과물은 거의 그대로 입니다. 다만 객체지향적으로 짜면 코드 내부 품질이 올라갑니다. 코드 내부 품질이 올라가면 유지보수 할때, 수정하거나 확장할때 비용이 절감됩니다. 그러나 이해당사자 특히 갑은 이 효과를 당장 체감하지 못합니다. 조삼 모사와 같습니다.

사실 제가 이 생각을 하게 된 이유는, 저는 객체지향을 좋아했습니다. 요즘에 관계형 데이터베이스 모델링/튜닝 교육을 받아보니 이쪽이 더 각광받고 더 인정받는 것 같아, 다소 억울하기도 해서 따져보게 되었습니다. 결론은 어느 한쪽 기술에 얽매여서는 안되어야 겠습니다. 데이터를 다루는 것은 RDB가, 움직임..행동..프로그래밍을 다루는 것은 객체지향(+함수형 프로그래밍)이 양축의 핵심으로 계속 명성을 유지할 것입니다. 


아래는 영어 라이팅 연습, 많이 부족합니다. @.@