SQL과 DB
SQL은 Structured Query Language의 준말로 RDB를 관리하기위해 만들어낸 프로그램 언어입니다. RDB는 관계형 데이터베이스를 의미합니다. Realated Data Base의 약자이기도 합니다. 관계형 데이터베이스는 간단하게 말하면 테이블 형태의 데이터를 모아놓은 것입니다.
RDB, RDBMS를 관리하기 위해 SQL을 사용한다면 흔히 얘기하는 DB, DBMS는 뭔가?
DB는 아시다시피 데이터베이스를 뜻합니다. 데이터의 집합입니다. 데이터를 정리하는데에는 다양한 방법이 있습니다만 그 중에 테이블 형태로 데이터를 모아놓는 것을 RDB, 관계형 데이터베이스라고 합니다. DB를 관리하는 툴이 DBMS(Data Base Management System)이며 보통 DBMS에서 DB를 생성, 갱신, 삭제 할 수 있습니다. 마찬가지로 RDB를 관리하는 Management System이 RDBMS입니다. DBMS라는 범주에 RDBMS가 속하게 됩니다. 다만 DBMS 중 RDBMS를 가장 많이 사용하므로 SQL을 다룰 때 DB 혹은 DBMS 혹은 RDBMS 등을 이야기해도 듣는 사람이 일반적으로 같은 것으로 받아들입니다. 그리고 이러한 DBMS는 정형(Structured) 데이터를 관리하게 됩니다.
noSQL의 시대
제 블로그의 첫 글(Introducing Data Science: https://m-datastudy.tistory.com/1)에 제가 Bigdata를 다룰 때에는 정형 데이터를 다루는것 보단 비정형(Unstructured) 데이터를 다루는 것이 더 어렵다고 적어두었습니다. RDBMS의 데이터는 테이블이라는 특정한 형식으로 저장이 되어있기 때문에 데이터를 불러오고 조작하는데에 큰 어려움이 없습니다. 그러나 Bigdata에서 정보를 불러올 때는 다양한 형식의 텍스트 들이 복잡하게 섞여있기 때문에 정형 데이터를 조작하는 방식으로는 도저히 다룰 수 가 없게 되었습니다. 그래서 나타난 것이 noSQL입니다. SQL이 아니다 (no)의 의미가 아닌 not only SQL의 약자로 데이터를 다룰 때 SQL만 사용하지는 않는다는 뜻입니다. mongoDB, Cassandra등 이런 noSQL 프로그램들이 대세인 상황에서 정형 데이터만을 다루는 SQL의 입지는 비교적 줄어들었다고 얘기할 수 있을 것 같습니다. 당장 한국 Oracle만 해도 몇 주 전 (2019.11.19)에 Bigdata 시대의 꽃인 클라우드 트렌드를 따라가지 못해 대규모 정리해고를 단행했으니까요.
그럼 noSQL의 시대에 SQL이 웬말이냐
not only SQL이라는 말을 풀어보면 not only Structured Query Language이 됩니다. 이는 정형 질의어(Query Language)만 사용하지 않겠다는 뜻이 됩니다. 즉 다른 질의어나 관리 방식을 추가적으로 사용한다는 뜻이지 SQL을 완전히 배제하겠다는 뜻이 아닙니다. 또한 SQL은 비정형 데이터를 다룰 필요가 없는 영역에서는 당연히 noSQL보다 선호됩니다. noSQL보다는 SQL이 비교적 표준화되어있기 때문입니다. 프로그램마다 특성이 다른 noSQL 보다는 사용하기 쉬울 것입니다.
결론
noSQL의 등장으로 비교적 SQL의 입지가 줄어들었지만, 배울 가치가 없다는 것은 어불성설입니다. Bigdata 시대의 모든 기술은 Bigdata 이전 시대로부터 나온 것입니다. 완전히 새로운 것은 없습니다. 따라서 저는 SQL을 공부하며 이 블로그에 정리해나갈 예정입니다.