| 2013.03.17

 

http://www.bloter.net/archives/146959

 

 

ACID. 데이터베이스를 공부하다 보면 참 많이 나오는 단어입니다. 트랜잭션이 안전하게 실행될 수 있다는 것을 보증하기 위한 속성으로 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 등의 영문 앞 글자를 따서 붙인 것입니다. 이 ACID를 잘 보장해 주는 시스템이 이른바 데이터베이스 관리 시스템(DBMS)입니다.

그런데 사실 이 ACID 속성을 모두 갖추는 것이 쉽지 않습니다. 그래서 ACID를 보장하기 위해서 락(lock)을 걸게 되고 이로 인해 동시 작업을 해야 할 경우 어렵고 성능이 떨어지게 됩니다. 락이 걸려 있는 동안에는 다른 작업, 이를테면 데이터베이스의 갱신(update)이나 추가(insert) 등이 안되기 때문에 계속 대기 상태를 유지해야 합니다. 그래서 최근에는 MVCC(mutilversion concurrency control)이라는 기능이 지원됨으로써 동시 사용자들에 의한 동시 작업을 지원합니다.

 

ACID는 DB를 구성하는 데 있어 상당히 어려운 과제를 제공하고 있는데, 최근 NoSQL이 이러한 전통적인 방식에서의 접근이라고 할 수 있는 ACID를 지원하는가에 대해서 말들이 많습니다. 크리스토프 코박스라는 사람에 따르면 모든 NoSQL이 ACID 속성을 가지는 것이 아니지만 ACID 속성을 가진 NoSQL 솔루션이 없는 것은 아니라고 합니다. 실제로 그의 블로그를 보면 네오4j의 경우 완벽하게 ACID를 지원한다고 합니다. 그는 상당히 많은 NoSQL 기술 비교를 자신의 블로그에 통해 올려 놓았는데요. 비교 대상인 NoSQL로는 카산드라, 몽고DB, 레디스(Redis), 리악(Riak), H베이스(HBase), 카우치베이스(Couchbase), 네오4j(Neo4j), 볼트DB(VoltDB) 등이 있습니다. NoSQL 홈페이지를 보니 네오4j이외에도 여러 NoSQL 기술들이 ACID를 지원하고 있습니다. 관심 있으신 분은 직접 찾아 보시는 것도 좋을 것 같습니다.

 

Neo4j-coverpage

▲네오4j 홈페이지. 전면에 ACID를 완벽하게 제공하는 NoSQL임을 밝히고 있다.

 

그러나 NoSQL에 ACID라는 속성을 보장하게 하려면 결국 성능에 영향을 미칠 수 밖에 없는데, NoSQL의 등장 배경을 생각해 보면 ‘SQL만이 아니다(Not Only SQL)’라는 기치 아래 기존 SQL의 성능을 높이기 위해서 나왔는데 그것에 발목을 잡힐 필요가 있을까 하는 의견들도 많습니다. 스택오버플로우에 올라오는 게시물들에는 이러한 이야기들이 많이 있는데요. CAP 이론에 의해 NoSQL이 왜 ACID 속성을 버리는지 설명하고 있습니다.

 

국내에서는 아쉽게도 우리말로 돼 있는 이 분야의 자료들이 많지 않은 것 같습니다. 영문자료들은 많이 공개돼 있지만 보다 많은 글들이 나와서 국내에서도 긍정적인 생태계를 이루었으면 하는 바람입니다.

ACID를 완벽하게 지원하느냐는 NoSQL에서 그렇게 중요하지 않지만, 전통적인 IT 부서의 경우 이러한 속성 유무에 따라 NoSQL에 대한 신뢰를 평가할지도 모르겠습니다. 관계형 데이터베이스와 NoSQL을 적절히 용도에 맞게 배치하여 사용하면 되겠지만 보수적인 국내 정서에서 이런 것은 쉽지 않아 보입니다.

 

marklogic-logo마크로직이라는 회사가 있습니다. 국내에서는 많이 알려져 있지는 않지만 국내 비즈니스를 하고 있습니다. 하둡과 NoSQL, 빅데이터 솔루션 등을 취급하고 있는 기업으로, 떠오르는 기업 중 하나입니다. 2001년도에 설립돼 약 250여명이 근무하고 있는 것으로 알려져 있는 전형적인 오픈소스 기반의 소프트웨어 기업입니다.

 

이 기업에 대한 투자도 꾸준히 이어지고 있는데요. 2002년도에 시리즈A로 600만달러를 받은 것을 시작으로 2003년에는 1200만달러, 2007년에는 1500만달러, 2009년도에는 1250만달러 등 총 4550만달러가 투자된 기업들입니다. 설립자인 데이브 켈로그는 마크로직을 설립하기 전에 지금은 테라데이터에 인수된 애스터 데이터와 비즈니스 오브젝트 등에서 디렉터와 마케팅 총괄 등을 수행했습니다.

 

흥미로운 것은 데이브가 데이터히어로라는 기업에 투자를 하고 있는데요. 데이터히어로는 데이터를 분석할 수 있도록 시각화하는 솔루션을 개발하는 회사입니다. 마크로직, 설립자, 그리고 설립자가 투자한 기업들을 보면 전체적으로 빅데이터에 초점을 맞추고 있습니다. 참고로 현재 CEO는 게리 블룸으로, 마크로직 전에는 시만텍·베리타스, 오라클 등에 있으면서 데이터베이스와 스토리지 등에 관한 다양한 경험을 쌓았습니다.

 

최근 스토리지리뷰에 마크로직의 NoSQL 데이터베이스 스토리지 벤치마크 결과가 올라왔습니다. 회사의 주장에 따르면 ACID를 완벽하게 지원한다고 하는군요. 그런데 이 테스트 결과가 묘하게도 플래시 제품에 관한 성능을 가늠해 볼 수 있겠다는 생각이 듭니다. 물론 애플리케이션이 마크로직 NoSQL 솔루션이고 아래에 있는 AP 및 DB 서버가 레노보 씽크서버였습니다. 그리고 인피니밴드는 멜라녹스 SX6036였습니다. 플래시 디바이스 성능은 별도의 ‘네트워크 스토리지 호스트’에 의해 테스트됐는데요. 환경에 따라 다를 수 있기 때문에 아래 결과만 놓고 어떤 제품이 제일 좋다고 이야기 하진 않았으면 합니다.

 

StorageReview-MarkLogic-Benchmark-Latency

 

위 그림에서 표시된 수치는 평균 응답지체(latency)시간입니다. 역시 PCIe 기반의 제품들은 응답 시간이 좋습니다. 레이턴시가 가장 좋은 제품은 델 R720 익스프레스플래시 350GB였습니다. 이크론, 퓨전IO, OCZ, 버리덴트 등의 제품이 높은 성능을 냈습니다. HDD의 대표로 테스트 된 도시바의 15,000rpm 디스크의 경우 성능에서 상당히 큰 차이를 보이고 있습니다. 이런 비교를 왜 했는지 알 수 없지만, 아마도 극단적인 대조군을 만들기 위해서 사용된 것이 아닌가 하는 생각이 듭니다.

 

Dell-R720-Front

▲델 R720 서버 전면부. 이번 테스트에서는 좌측부터 4개 드라이브에 SSD를 탑재하여 테스트함.

 

그런데 결과만 놓고 보면 델의 R720 익스프레스플래시가 가장 좋은 것 같지만, 과연 그럴까요? 결과 그래프에서 표시되고 있는 디바이스 아래에 작은 글씨로 간단히 구성 내역을 보여 주고 있는데요. 자세히 보시면 델의 제품이 가장 잘 나올 수 밖에 없습니다. SSD 드라이브 4개를 JBOD로 묶어서 사용했습니다. 하지만 다른 PCIe 타입의 플래시 카드 제품들은 1개의 제품을 4개의 파티션으로 나누어 테스트를 진행했습니다. 리소스 면에서 델 R720을 따라갈 수 없었을 것입니다.

 

궁금해서 R720과 SSD 등에 대해 찾아봤습니다. 캐시케이드 라는 기술을 적용했는데요. 델 서버의 PERC 컨트롤러 상에서 동작하는 것으로 SSD 디바이스를 마치 전용 캐시 풀로 사용할 수 있도록 하는 기술입니다. 이렇게 함으로써 핫 데이터 즉 액세스가 빈번한 데이터는 이 SSD 상에서 처리될 수 있도록 하는 것입니다. SSD를 이용해 빠르게 응답할 수 있도록 응답지체를 줄이면서, PCIe를 사용으로 인한 PCI 슬롯 점유 문제와 서버 내 RAID 컨트롤러(PERC)에서 간단히 처리할 수 있는 기술이 접목됐습니다. 그럼으로써 R720 서버 자체가 OLTP 솔루션이 되는 것입니다. 아래 그림은 델 커뮤니티에서 가져온 것입니다. 이때는 마이크로소프트 SQL 서버2008에서 테스트했던 것인데요. 재미있는 것은 PCIe 플래시 카드보다 성능이 좋지는 않게 나왔네요.

 

Dell-R720-CacheCade-Perf-Result

 

마크로직의 NoSQL에서의 성능 비교와 SQL서버2008에서의 성능 비교가 이렇게 다릅니다. 테스트 결과를 맹신할 필요는 없습니다. 워크로드, 즉 해당 업무의 I/O 특징이 무엇인가가 관건이겠죠.

 

스토리지만 알아서 되는 세상이 아닌가 봅니다. 많은 것을 알아야 합니다. 물론 모르고 그냥 살 수도 있겠지만 하루가 다르게 새로운 기술이 나옵니다. OLTP만 좀 안다고, 스토리지 조금 안다고 세상에 나와서 비즈니스를 할 수 있는 세상은 아닌 것 같습니다. SQL와 데이터베이스도 알아야 하고, 하둡도 필요하고, NoSQL, 빅데이터와 통계, 플래시, 서버, 스토리지, 네트워크 등등… 너무나 알아야 할 것이 많고 배워도 그 끝이 없습니다. 피곤할 법도 하지만 그래서 이 바닥에서 한가하게 조용히 늙기만 기다릴 수 없는 동력이 있나 봅니다.