MongoDB를 시작한 이유는 Big Data를 어떻게 공부할지 전혀 감을 잡지 못 하는 상황에서 뭐라도 해보자라는 이유였다. 사실 뚜렷한 목적을 가지고 공부했다기 보다는 한번 부딪혀 보자 라는 생각으로 시작했다. 그런데 꽤나 재밌다. 아무튼 MongoDB가 어떤 Database인지부터 설명해보자. 공부한지 그렇게 오래된 것은 아니므로 딱히 이전 포스팅에서 보여줬던 디테일함은 부족할 수도 있다. 공부를 하면서 조금씩 수정해나갈 생각이다.


MongoDB는 기존의 Database와는 Schema라는 개념에서 다르다. 기존의 MYSQL에서는 Schema라는 개념이 있어서 테이블 생성 시 특정 Field를 체워주거나 그 Field의 data type 등에 대한 제약이 많았다. 가령, Fruit이라는 Field의 Data type이 STRING일 경우, Fruit에 1이나 0 과 같은 숫자는 들어갈 수 없다. MongoDB는 Schema-Free database이다. 즉, Schema가 없다. 


위의 그림은 MongoDB를 통해 data를 삽입한 후 결과를 확인해본 것이다. fruit이라는 field에 apple이라는 값을 넣었는데. integer 값인 1도 들어간다. 실제로 db.test.find()를 통해 확인 한 결과 fruit이 "apple"이라는 string과 1이라는 integer를 같이 가지고 있는 것을 확인할 수 있다. MongoDB 명령어에 대해서는 후에 자세하게 설명하고 지금은 그냥 "그런 명령어이겠거니~" 하고 넘어가주면 감사하겠다. 참고로 MongoDB에서는 Field라는 개념을 쓰지 않으나 이해를 위해 이번만 Field라는 단어를 사용하겠다. 


여기서 그러면 생각나는 질문이 있다. 왜 이렇게 data의 일관성에 어긋나게 했는가이다. 이것에 대한 대답은 나도 모른다. 그런데 아주 조금 공부해보면서 추측한 이유는 Flexibility를 위함이 아닌가 싶다.


MongoDB는 DB의 Performance를 향상과 Flexibility 향상에 그 목적을 둔 언어로 알고 있다. 따라서 MongoDB는 많은 Programming Language와 연동가능 하다. 지금까지 살짝 공부했던 바로는 Python을 통해 mapreduce를 각종 다양한 코드를 사용하여 구현할 수도 있다. 


MongoDB를 공부하는 이유가 여기서 하나 더 나오는데, Mapreduce를 이용하여 Data Mining을 공부해보기 위함도 있다. 아무튼 MongoDB Fundamental을 한번 공부해보자. 


SQL에서는 row, field, tuple 등의 개념이 있다. MongoDB는 database라는 개념을 빼고는 기존의 SQL과 다르다. MongoDB도 여러 개의 database를 가질 수 있다. 


각각의 DB는 아래와 같이 여러 개의 Collection으로 이루어져 있다. MYSQL에서의 Table로 생각하면 된다.


각각의 Collection은 여러 개의 Document로 이루어져 있다.


하나의 중괄호로 열리고 닫힌, 저것들 한 줄 한줄이 각각 document이다. 위의 Collection1은 두 개 이상의 Document를 가지고 있는 샘이다. 각각의 Document는 여러 개의 Key-Value Pair의 집합이다.


위에서 MongoDB Field라고 설명을 했는데, 사실 MongoDB에서는 Field라는 개념을 사용하지 않고 Key라는 개념과 그에 상응하는 Value을 사용한다. 위의 Collection1의 각각의 Document들은 결국 name, year, job, age라는 key와 각각 "jinki", 3, "IT", 29라는 값을 가지고 있는 샘이다. 


"name":"jinki"

"year":3

"job":"IT"

"age":29


위의 네 줄이 각각 key-value pair이다.


MongoDB는 여러개의 Data Type을 가지고 있다. 위에서는 그 중에 2개인 string과 integer만을 나타내고 있다. MongoDB가 가질 수 있는 Data Type은 Date() object를 이용한 날짜 값도 있고, Javascript를 이용한 Code도 될 수 있다.(이 부분은 이후의 포스팅에서 다뤄볼 생각이다) 그 외에도 여러가지가 있다. 하나하나를 각각 설명하기보다는 MongoDB Manual을 보면 자세히 잘 나와있다. 


이번 포스팅은 뭔가 매우 짧다. 사실 길 이유가 없다. 아직 내가 아는 것도 얼마 없고 간단한 Fundamental과 소개일 뿐이니까. 매우 부족한 것이 많은 포스팅이기 때문에 앞으로 이 포스팅은 조금씩 조금씩 수정해나갈 생각이다. 지금 전부 쓰기에는 모르는게 좀 많은 것 같다. 


다음 포스팅에서는 MongoDB CRUD, 즉 Create, Read, Update, Delete 하는 방법과 Query 명령어도 알아볼 생각이다.

'Big Data Tech' 카테고리의 다른 글

[Hadoop] Basic Example : WordCount  (2) 2015.01.31
[Hadoop] Introduction of Hadoop  (0) 2015.01.31
[MongoDB] MongoDB Aggregation  (0) 2014.11.24
[MongoDB] CRUD Operation of MongoDB  (1) 2014.11.18
[MongoDB] 시작하며...  (0) 2014.11.02
Posted by 빛나유
,