공부한 것 꼭꼭 씹어먹기

데이터 저장의 기본 개념 : 클러스터와 NoSQL, 샤딩 본문

데이터 분석

데이터 저장의 기본 개념 : 클러스터와 NoSQL, 샤딩

젤라솜 2022. 11. 5. 15:58
반응형

 

데이터 저장의 기본 개념을 살펴보겠습니다. 외부 데이터는 대체로 직접 처리할 수 있는 상태가 아니기 마련입니다. 데이터를 저장하고 처리해서 사용하려면 데이터 랭글링(data wrangling)을 통해 데이터를 잘 다듬어야 하지요. 즉, 데이터를 여과하고 정제 및 통합하는 과정을 데이터 랭글링이라고 합니다. 처음에는 데이터의 복사본이 원본 형식으로 저장되고, 랭글링이 끝나면 처리된 데이터가 다시 저장되는 것인데요. 빅데이터의 데이터 세트를 원본이나 복사본으로 저장해야 하기 때문에 확장성 좋고 저렴한 저장 솔루션이 필요하게 됩니다. 이러한 저장 기술 관련하여 알아야 할 몇가지 개념들을 정리해 보겠습니다.

 

 

클러스터

클러스터(clusters)는 서버(or 노드)들의 모음입니다. 여러대의 컴퓨터들이 하나의 시스템처럼 작동하는 것을 말하지요. 각 서버들의 하드웨어 사양은 동일하며 네트워크를 통해 서로 연결되어 있습니다. 따라서 각 서버들은 마치 하나의 장치처럼 작동하게 됩니다. 클러스터의 각 노드(서버)들은 하드 드라이브, 프로세서, 메모리 같은 전용 리소스를 가지고 있습니다. 데이터 저장의 관점에서 각 작업을 클러스터를 통해 작은 단위로 나누고, 한 클러스터 내의 다른 서버에 작업 단위를 할당하여 동시에 작업을 수행할 수 있게 됩니다. 빅데이터와 같은 거대한 작업에 있어서 클러스터의 개념은 필수적이라고 볼 수 있습니다. 

 

 

 

NoSQL

NoSQL은 not only SQL의 약자로써 데이터베이스의 한 종류입니다. 관계형 데이터베이스와는 다른 비관계형 데이터베이스 이지요. noSQL은 관계형 데이터모델을 사용하지 않고, data처리의 완결성을 보장하지 않습니다. 주로 key-value 쌍으로 분산 저장되는 시스템을 말합니다. API로 호출이 가능한 인터페이스를 제공하기도 하고 SQL과 비슷한 쿼리 인터페이스를 제공하기도 합니다. 또는 XML파일 저장을 위한 XQuery를 쓸 수 있는 noSQL도 있다고 합니다. 

 

 

 

 

샤딩

샤딩(sharding)은 샤드라는 더 작은 단계의 데이터 세트로 나누는 과정을 말합니다. 쉽게 말해, 한 테이블에 저장된 데이터를 분할하여 다수의 데이터베이스에 분산 저장하는 프로세스 이지요. 즉, 클러스터의 각 노드(서버)에 각 샤드들이 저장되고, 해당 서버는 자신에게 저장된 샤드만 관리합니다. 각 샤드들은 같은 테이블 스키마를 가지고 있기 때문에 모든 서버의 샤드를 모으면 전체 데이터가 됩니다. 이렇게 샤딩을 하는 이유는 당연하게도 작업량을 분산시켜서 더 효율적인 성능을 기대할 수 있기 때문인데요. 또한 수평 확장성을 확보 할 수 있게 됩니다. 각 샤드는 자신에게 할당된 데이터에 대한 읽기와 쓰기를 수행하는데 때로는 여러개의 샤드에서 데이터를 읽어야 할 때도 있습니다. 샤딩으로 인한 이점은 성능 최적화 외에 또 있습니다. 바로 하나의 서버에서 장애가 발생할 경우, 해당 서버에 저장된 데이터를 제외한 다른 데이터는 무사히 구할 수 있습니다. 즉, 리스크를 분산시킬 수 있게 됩니다. 그러나 샤딩을 이용함으로써 운영적인 복잡도는 더 올라간다는 단점이 있는데요. 또한 데이터의 병목 현상을 야기할 수도 있습니다. 데이터가 고르게 분산되지 않고 한 샤드에서만 주로 찾는 데이터가 몰리게 되면 성능이 저하되겠지요. 또는 여러 샤드에서 데이터를 검색하는 쿼리가 많이 실행될 경우에도 성능이 저하됩니다. 결국 샤딩은 shard key를 잘 정의하여 데이터를 각 노드에 얼마나 효율적으로 고르게 분산 저장했는지에 따라 성능을 끌어올릴 수도, 오히려 더 저하시킬 수도 있게 됩니다. 데이터를 잘 저장하는 것 뿐 아니라 잘 읽는 방법에 대해서도 고민을 해야합니다. 데이터 세트에 대한 정확한 이해가 바탕이 되어야 하겠습니다.

 

 

 

다음 포스팅에서는 복제에 대해 다뤄보도록 하겠습니다. 복제는 클러스터의 여러 서버에 데이터 세트의 복사본을 저장하는 것을 말하는데요. 이러한 복사본을 레플리카라고 부릅니다. 일단 데이터의 복제본이 있으면 안심이 됩니다. 특히 각 서버에 동일한 내용의 데이터가 복제되는 것이기 때문에 가용성과 확장성이 제공됩니다. 특정 노드에 장애가 발생하더라도 데이터 손실로부터 안전하게 되지요. 

 

 

 

 

 

 

반응형
Comments