ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Couchbase
    NoSql/couchbase 2019. 5. 3. 09:30
    반응형

    Couchbase ?

     

     난 지독할정도로 RDBMS 만 사용한 개발자다 . 경력의 반은 오라클 나머지는 mysql 과 함께 했다고 해도 될거 같다. 

    한국특성(?) 이라고할지 다녔던 회사의 특성들이 동일해서 그런지 RDBMS 를 쓰고 있는 회사의 사람들중에는 Nosql 에 대한 혐오(?) 라고 해야할까? 그 영향으로 좀처럼 접하기가 힘들었다. 

     몇만건되는 데이터들을 인덱스문제때문에 고생하고 트래픽이 몰려 감당하지 못해서 DB 가 먹통 직전까지 가는경우를 봤지만 그때마다 사람을 갈아 넣어서 해결하려만 했지 뭔가 다른 수단을 써볼생각을 하는 DB 팀을 본적이 없는거 같다. 하다못해 mysql 도 5.3 에서 0.1 버전업조차 꺼려하는 수동적인 사람들이 태반이였다. 

     이제 세상도 바뀌었고 빅데이터가 이미 알만한사람들은 대충 뭔지 알고 사는 세상에 RDBMS 가 과연 어디까지 포지셔닝을 지킬수 있을까 ? 이미 Nosql 진영을 오라클 회장도 가장 경계하고 있는 상황이라면 결론이 난게 아닐까 싶다.

     

     국내에서 예전에 가장 유명했던 Nosql 은 몽고디비 였던거 같다. 실제로 자료를 찾아보면 제법 많은 양의 정보들을 쉽게 찾을수 있다. 

    데이터베이스 인기순위

    오라클과 mysql 은 여전히 순위를 지키고 있지만 주목 할점은 몽고디비나 엘라스틱 서치 그리고 Redis , 카산드라같은 녀석들이 상위권에 포진되 있다는것이다. 특히 redis, 엘라스틱서치는 굉장히 주변에서 많이 쓰이는것을 보았기 때문에 이젠 용도에 맞는 선택의 문제라고 생각한다. 

     

    본론으로 돌아와서 카우치베이스에 집착하기 시작한것은 아는 개발자분에게 영업을 당한게 시작이다. nosql 필요성이 생겼고 그에 따라 어떤것을 사용할것인가에 대한 팀내의 토론이 시작됬고 최종 몽고디비와 카우치 베이스 두가지가 남았다. 그리고 결론은 카우치베이스! 그렇다면 왜 카우치 베이스를 선택했을까? 

     카우치베이스의 태생부터 생각해보면 Memcached 기반의 캐쉬를 내장시켜서 기본적인 속도가 상당히 빠르다. 그리고 디스크가 아닌 메모리베이스 이기때문에 일반적인 파일기반보다 속도가 빠를수 밖에 없다. 카우치베이스측에서 공식적으로 발표한것을 확인해보면 몽고디비 대비 약 6배가 빠르다고 한다. 

    속도만 빠르다면 다른제품들도 충분히 선택여지가 있다고 본다. 그럼 어떤점이 몽고디비와 비교했을때 더 나았을까 ?

     

    1. 데이터센터간 복제가 가능하다. 

     XDCR이란 기능인데 물리적으로 떨어진 데이터센터간에 데이터 복제가 가능하다. 클러스터링을 할경우 다른 그룹군을 생성하거나 백업할때 유용한 기능인거 같다. 

     

    2. Indexing , Grouping, Ordering, join 

     내가 본기능중에 가장 신기한 기능이다 RDBMS면 당연하지만 Nosql이? 라는 생각이 드는 기능이다. 기본 key-value 방식이기 때문에 대부분 nosql 들은 indexing 이나 Sort 자체에 어려움을 겪는다. 그리고 Indexing 경우 제공을 하더라고  내부적 성능 이슈가 있는 경우가 많다고 한다. 그러나 카우치베이스는 별문제없이 기능을 지원한다. 

    Nosql 로 join 을하고 indexing 을하고 sort 를 한다는건 굉장히 매력적인거 같다. 

     

    3. 관리도구 

     일단 web으로 제공한다. 그래서 별도의 플러그인을 깔거나 command 라인같을걸 사용하지않고 web에 접속해서 접근이 가능하다. 그리고 굉장히 친절하게도 모니터링 도구들을 지원해주는데 생각보다 퀄리티가 나쁘지 않다. 운영관점에선 확실히 앞서는점이다 

    4. 장애 대응이 쉽다. 

     분산구조를 가져갔을때 카우치 베이스는 장애처리가 굉장히 쉬운편이다. 노드가 추가 될경우 관리도구에서 간단하게 조작과 리밸런싱이 가능하다. 그리고 밴치마킹결과를 봤을때 몽고디비와 카우치베이스의 노드추가 혹은 삭제시 리밸런싱이후 정상 상태로 돌아오는 시간을 봤을때 카우치 베이스가 굉장히 빠른 속도로 복구되는걸 확인했다. 

     

    5. 스키마가 없다 

     나같은 RDBMS에 익숙해진 사람에게는 생소한 구조다 스키마가 없다 그렇기 때문에 제약이 없다. Nosql 들의 기본 특성이 아닌가 싶다. 스키마가 없기 때문에 하나의 테이블에 컬럼형식이 다른 데이터를 넣는게 가능하다 JSON 데이터를 그냥 넣어도 무방하다는이야기다. 그리고 데이터 타입이 다르더라도 indexing 과 grouping 이 가능하고 이때 사용하는것은 county 라는 엘리먼트가 존재하여 이것을 이용하여 활용한다고 한다. 

     

    6. 메이저 라이브러리 제공 

     자바,php, 루비,c , 파이썬, node.js 등 이미 메이저급은 전부 지원을하고있다. 인기순위가 낮긴하지만 제품자체는 마이너하지 않는 제품이다. 

     

    7.모바일용 버전 제공

     카우치베이스 Lite 버전을 제공한다 IOS, 안드로이드에서 사용이 가능하며 일반적인 어플리케이션에서도 사용할수있도록 자바버전과 .Net 버전도 제공된다 가장 흥미로운점은 카우치베이스와 카우치 베이스 Lite 끼리 서버와 동기화가 가능하다.

     

    찾아보면 카산드라나 몽고디비도 저마다의 장단점이 있을거 같다. 일단 나에게 처음 관심대상이 된 Nosql 이고 개인적으로는 훌륭하다고 생각이 든다. 항상 그렇든 목적과 효율성이 맞는다면 그게 정답인거 같다.

    반응형

    'NoSql > couchbase' 카테고리의 다른 글

    CouchBase 사용하기 ( part.1)  (0) 2019.07.15
Designed by Tistory.