Post List

2015년 8월 2일 일요일

MongoDB Study #00 : Big Data 및 No-SQL 소개

1. Big Data의 의미 (RDBMS의 대용량 Data와의 구분)

  - Size
      2T 이상의 Data (절대적인 기준은 없지만, 기존의 기술 (File, RDBMS) 로는 성능 및 장애시 대응이 어려울 정도의 용량)

  - Bandwidth
      초당 20만 Transaction 이상 ( 현재 RDBMS로서는 처리가 힘들 정도의 Data량)

  - 비정형 Data의 저장 및 분석
      현재 RDBMS에는 String, Number, Date 정보만 DB에 저장을 하고, Video, Picture, Voice 정보는 File로 관리를 했습니다.
      그 정보들을 DB로 저장도 가능하지만, 많이 불편해서 사용하지 않았습니다.
      제주 지검장 성추생 사건에서도 CCTV 장면을 사람이 다 확인을 했습니다.
      비정형 Data는 이런 의미 말고, Collection (Table) 설계시의 유연함을 의미하기도 합니다만,
      이건 뒤에 더 자세히 다루도록 하겠습니다.

2. Big Data Solution

  - 수집, 저장 : NoSQL Database ( MongoDB, Hadoop, Casandra ...)
  - 추출 및 분산 : Hadoop, Spark ...
  - 분석 (통계기술) : R, SAS, SPSS ...

3. Data Scientist (Big Data 전문가)

  수집/저장 , 추출/분산은 기술적인 측면이므로 Engineer의 몫입니다.
  분석은 전문적인 통계학적인 지식이 필요한 영역으로 Engineer가 배울수는 있지만, 전문가가 되기는 힘듭니다.
  그래서 Data Scientist (3가지 영역에 모두 통달한 전문가)가 존재하는 것은 현실적으로 힘듭니다.
  국내에는 당연 아직 없구요. 해당 기술의 선두자인 미국에도 아직 많지 않습니다.
  Engineer가 Data Scientist가 되는건 무리입니다.
  오히려 통계학 전문가가 기술들을 배워서 Data Scientist가 되는 것이 오히려 더 가능성이 큽니다.

4. Cloud Server 환경에서의 Database Server

  기존에는 물리적 Server 1대에 하나의 DBMS Server를 운영했지만,
  지금은 Cloud System의 도입으로 하나의 Cloud Server에 Virtual Machine을 여러대 운영합니다.
  각각의 Virtual Machine에 DBMS Server를 하나씩 운영하는 사례가 많습니다.
  즉, 1대의 물리적 Server에 여러 DBMS Server가 운영되는 경우가 많습니다.
  물론 과거보다 Hardware가 훨씬 좋아지긴 했지만,
  그래도 순간적으로 많은 Transaction이 몰릴 경우 장애 대응이 힘들어 집니다.
  그리고, License적인 문제에서도 기존의 RDBMS 제품은 Server 당 비용을 지불해야 하므로,
  많은 비용발생 문제도 발생합니다.

5. No SQL의 장점

  5.1. Cloud Computing 환경에 적합합니다.
       - 대부분이 Open Source 이며 AGPL 을 채택하고 있습니다.
         비상업적인 분야, 사내용으로 사용하는 System에서는 무료로 사용이 가능합니다.
         하지만 부가가치를 창출하게 되면 그 부분에서의 도입비용은 무료지만, 유지보수 비용을 지불해야 합니다.
       - Hardware 확장에 유연한 대처가 가능합니다.
       - RDMS에 비해 적은 비용으로 분산 처리 및 병렬 처리가 가능합니다.

  5.2. 유연한 Data Modeling
       - 비정형 Data 구조 설계로 설계 비용이 감소합니다.
         Column, Type, Length, Constraint 등의 설계없이 Table 구축이 가능합니다.
       - RDBMS의 Relationship 과 Join 구조를 Linking 과 Embedded 로 구현하여 성능이 빠릅니다.
         이 둘이 의미 상 비슷한거지 같은 기능은 아닙니다.

  5.3. Big Data 처리에 효과적입니다.
       - Memory Mapping 기능을 통해 Read/Write가 빠릅니다.
         (RDBMS에 비해 Write는 5배 정도, Read는 3배 정도 빠릅니다.)
       - 대부분의 OS 와 Hardware에 구축이 가능합니다.
       - 기존 RDBMS 와 비슷하게 Data 처리가 가능합니다.

6. Open Source License Dual License : AGPL

  - 비상업적 이용 및 사내 내부용으로만 사용할 경우는 Free
  - 외부용으로 사용 및 System 판매 등으로 부가가치가 발생한 경우 유지보수 비용을 부가합니다.
  - 문제 발생시, 바로 대처가 안될 경우 Source Code를 제공해 줄테니, 니가 알아서 고쳐써라고 해줍니다.

7. No SQL Database 관련 정보 확인

  No SQL Database 목록은 http://www.nosql-database.org 에서 확인이 가능합니다.


  현재 Database 의 순위는 http://db-engines.com/en/ranking 에서 확인이 가능합니다.



8. Oracle, MongoDB의 기업 가치

  Oracle의 기업가치는 2014년 10월 기준 약 152조 정도가 됩니다.
  MongoDB의 가치는 동일 시점 기준 약 1조 정도가 됩니다.
  2012년 30명의 개발자를 둔 회사였지만, 현재는 개발자만 600명 정도가 되었습니다.

9. 국내 도입 사례

  국내에는 현재 게임업계와 보안업체에서 많이 사용하고 있습니다.
  하지만 아직 Critical한 업무영역에는 사용하고 있지않고, 대부분 Log 성격의 Data의 일시적인 저장에만 사용하고 있습니다.
  통신업체의 통화 Data 보관, 삼성전자 생산시스템, 인터파크의 상품등록 관리 등에도 사용중입니다.
  도입한 곳은 적지 않지만, 그 Reference를 찾기는 힘듭니다.
  대부분 국내 기업은 맨땅에 해딩을 하는 식으로 아직도 많은 시행착오를 겪으고 있으므로,
  우리가 이렇게 도입을 했다고 대놓고 자랑하기에는 아직 자신감이 없는 것으로 판단됩니다.
  국내에는 아직 Infra도 제대로 구축되지 않았습니다.
   (교육기관도 없으며, 개발Tool (RDBMS의 Orange, Toad 등...) 도 많이 없습니다.)
  미국은 이미 도입단계가 훨씬 지났으며, Critical한 업무영역에서 사용중입니다.
  이제는 확장 단계에 있다고 봐야 합니다.

10. Hadoop Eco System

  Hadoop은 File 에 Data를 저장하며, 그것을 분석하는 것이 목적이었습니다.
  File System의 Batch 처리를 하는 방식이었습니다.
  그 뒤 Big Data 처리를 위하여 저장기술 및 기타 System들을 도입하였습니다.



  - Hadoop System
    - HDFS (Hadoop Distrubuted File System) : 분산, 저장, 복제
                                                             하지만 말그대로 File System 입니다. (File의 Batch 처리)
    - MapReduce (Hadoop Distributed Processing System) : 분석

  위 System만으로는 운용에 한계가 있어서 Sub-System을 도입하게 되었습니다.

  - Hadoop Sub-system
    - HBase (저장) : NoSQL을 저장하는 Database로 기존의 HDFS의 Data를 저장합니다.
    - Hive, Pig (추출) : SQL 문장 형태로 처리가 가능하나 완벽하게 같지는 않습니다. 추가 문법을 더 배워야 합니다.
                             하지만 빠른 성능을 기대하기 힘듭니다.
                             국내 Open Source 기술은 타조는 그나마 조금 성능이 뛰어난 편입니다.
    - Zookeeper (관리)
 

11. MongoDB Eco System

  MongoDB는 저장 기술을 목적으로 만들어졌습니다.
  그리고 그것을 활용하기 위해서 필요한 System들을 추가하였습니다.



  - MongoDB : No Sql Database로 저장 기능을 담당합니다.
  - Replica Sets (복제) , Sharding System (분산) 으로 MongoDB 의 병렬처리를 담당합니다.
  - Text Search Engine 및 Full Index Support 로 (추출) 기능을 지원해줍니다.
    저장된 Data를 원하는 형태로 가공해서 출력해줍니다.
  - MapReduce 와 Aggregate FrameWork 를 이용하여 Data를 (분석)하는 것을 지원해줍니다.
  - MongoDB Monitoring System (관리)

12. Hadoop 과 MongoDB의 차이점 (초간단)

  - RDBMS에는 강력한 함수들이 많습니다.
    물론 처음부터 그렇게 많지는 않았죠. 30년 이상 이용되면서 개발되어졌습니다.

  - MongoDB도 함수가 제공됩니다.
    아직 RDBMS만큼 그렇게 많지는 않습니다만, 지금 시점에서 RDBMS와의 비교는 시점상 맞지 않습니다.

  - Hadoop은 모든 것을 다 Coding 해야합니다.
    SQL과 비슷하게 사용할 수 있는 Framework들이 있지만, 그것을 이용하면 고성능을 기대하기 힘듭니다.
    Big Data 처리를 위해서는 Framework 없이 다 Coding을 처리해야 합니다.



댓글 없음:

댓글 쓰기