본문 바로가기
Homo Ware

인식의 전환 - NoSQL

by javauser 2012. 6. 25.

철학의 한 분야인 인식론(epistemology)에서는 지식 습득에 대한 다양한 정의를 하고 있다. 즉, 인식론에서는 '앎(knowledge)이란 무엇인가?', '지식(knowledge)은 어떻게 얻는가?', '주어진 주제나 대상에 대해서 어느 정도까지 알 수 있는가?' 등의 질문에 대한 답을 구하는 과정을 이론화시킨다.


인식론은 앎의 성질을 분석하는데 초점을 두고, 진실(truth), 믿음(belief), 근거(justification)와 같은 개념과 어떤 관계가 있는지를 논한다. 이러한 인식론에 반해서 아무것도 알지 못한다고 하는 관점이 회의론(skepticism)이다. 인식론을 지식론(theory of knowledge)라고 한다.


인식론에 대한 내용은 소프트웨어 개발을 이해하는 방법에 마찬가지로 적용된다. 이는 개발 방법론 뿐만 아니라, 개념을 인식하는 과정에서도 동일하게 적용되기도 한다. 개발 방법론의 경우, 기존 전통적인 폭포수 개발 방법론에서 점증/반복 개발 방법론으로 전환이나 애자일과 같은 경량 프로세스를 이해하려는 인식의 전환에 있어서 이러한 인식의 활동들이 일어나게 된다. 또한, 프로그래밍 방식의 경우, 절차적인 개발 방식에서 객체지향 개발 방식, 그리고 컴포넌트/서비스 개발 방식으로의 전환이나, 관계형 데이터 모델에서 객체지향 관점의 데이터 모델로의 전환 역시 이러한 인식의 활동을 통해 개인의 지식(knowledge)이 발전되어 나아간다.



vastu/prativastu
vastu/prativastu by romana klee 저작자 표시동일조건 변경허락


IT 관점에서 인식의 전환을 필요로 하는 것들은 단순히 기술(technology)라고 부르기에는 한계가 있다. 왜냐하면 기술이라는 관점에서 이를 지식화시키는 과정은 매뉴얼이나 지침서를 만들어서 익히기만 하면 된다는 생각이 지배적이기 때문에 위에서 말한 지식들은 어찌보면 단순히 쓰여진 글이나 들어서 알아가는 과정 못지 않게 체득화시키는 과정이 강력히 필요하기 때문이다.


최근 NoSQL의 등장으로 인해서 대용량 데이터에 대한 분산 기술에 초점을 맞춘 내용들이 봇물을 이루듯이 나오고 있다. 하지만, 이러한 NoSQL의 관점을 기존 엔티티 간의 관계로만 데이터를 기술하려는 RDB의 관점을 개념과 개념의 집합(aggregate) 관계로 인식을 전환해야 함을 강조하는 글들이 찾아보기 힘들다. 분명 NoSQL이라고 부르는 DB들은 분산 관점의 처리에 대해 기존 RDB보다는 상당히 강점이 있다. 하지만, 분산에 대한 데이터 덩어리를 어떻게 구성하고 어떤 설계 형태가 될지에 대해서는 기존 RDB 관점의 접근 방식과는 다른 면이 있다.


데이터를 여러 테이블에 산재한 row들의 집합으로 표현하는 RDB의 관점은 NoSQL로 전환되면, 그러한 데이터 덩어리들이 하나의 집합된 형태로 표현된다. (XML이나 JSON과 같은 형태) 즉, 데이터의 구성이 관련있는, 그리고 애플리케이션 관점에서 필요한 형태의 구조를 갖게 된다.


이 두가지 인식의 차이는 얼핏 그냥 보기에 유사한 것처럼 보이지만, 아주 큰 차이를 보여준다. 데이터를 구성하는 구조에 대한 사실이 DB 자체에 저장되느냐 그렇지 못하냐는 애플리케이션 코드를 작성하는 개발자에게 그대로 영향을 미치게 되며, 데이터 저장에 있어서 마찬가지로 큰 인식 전환을 필요로 하게 된다.


예를 들어, 어느 사용자가 작성한 블로그(혹은 게시글) 정보를 기존 RDB에 저장하여 조회하는 경우, 관련 테이블의 join을 통해서 나온 결과를 다시 화면이나 애플리케이션 코드에 적합 형태로의 변환을 수행하는 로직을 생각해 볼 수 있다. 이러한 지식은 RDB에서 어느 비즈니스에 관련된 데이터의 집합이라는 관점을 시스템 상에 저장할 수 없기 때문에 이를 다루는 사람은 테이블간의 관계를 통해 매핑에 대한 사고를 한번 더 수행해야 함을 의미한다.


만일, 이를 NoSQL을 사용해서 저장한다면, 사용자에 관련된 블로그나 게시글에 대한 정보는 모두 한덩어리의 형태로 XML이나 JSON의 형태로 저장이 가능하다. 특정 사용자가 작성한 블로그나 게시글을 조회하려면 그 사용자의 ID를 조건으로 모든 데이터를 조회할 수 있다. 즉, 데이터 저장소에 저장된 데이터 구조와 화면이나 애플리케이션 코드에서 사용하려는 데이터 구조로의 매핑이 전혀 필요없게 된다.


하지만, 여기에도 단점은 존재한다. 데이터 덩어리를 어떠한 관점에서 볼 것인가에 따라서 저장된 데이터 구조가 달리 설계될 수 있다. 위의 예에서 NoSQL이 들어간 블로그를 검색하려면 사용자 기준으로 저장된 블로그나 게시글들을 모두 탐색하여 조회를 해야 한다. 즉, 데이터 덩어리를 사용자 중심으로 구조를 형성할 것인가, 혹은 블로그나 게시슬을 중심으로 형성할 것인가가 설계의 이슈로 나타나게 된다.


결국 이러한 다양한 관점의 데이터 구조를 NoSQL이 해결해주기는 아직까지 힘들기 때문에 기존 RDB의 강점과 NoSQL의 강점을 같이 혼합한 hybrid 방식의 데이터 관리를 생각해볼 수 있다. NoSQL의 등장은 기존 RDB의 반대 급부의 현상이라기 보다는 기존 데이터를 저장하는 방식에 대한 인식을 좀 더 다양한 형태로 저장할 수 있는 선택의 폭을 넓혔다고 볼 수 있다.


결론적으로, NoSQL의 등장이 단순히 기술적인 관점에서의 접근 방식이 아닌, 인식의 전환으로 바라봐야 하는 이유가 데이터를 저장하는 구조에 대한 변환을 가져오기 때문에 이러한 인식의 전환은 지식의 습득 과정과 체화의 과정을 거쳐야 하며, 이는 진실과 믿음이라는 개념을 필요로 하기도 한다. 즉, 기존에 알고 있던 정보공학 방식의 데이터 구조의 설계 방식에 대한 진실이나 믿음과는 반하는 진실이나 믿음이 존재할 수 있다는 것을 인식하는 과정이 필요한 것이다. 이러한 인식의 전환은 외부에 의한 자극보다는 내부의 자각으로 인해서 바뀌는 경향이 강하기 때문에 선택의 폭을 아무리 넓힌다고 하더라도 이를 받아들이는 입장의 인식이 변하지 않는 한 단지 새로운 또 다른 기술로 인식할 수 있을 것이다.

반응형