NoSQL을 알아보자(13) - Column Family 데이터베이스 등장 배경

등장 배경 Column Family 데이터베이스는 대용량 데이터베이스(VLDB, Very Large Data Base)의 필요성이 부각되며 등장했다. 수백, 수천만 명을 대상으로 한 애플리케이션은 기존 관계형 데이터베이스로 관리하는데 상당한 어려움이 있었다. 한 테이블에 수 억개의 Row들과 수만 개의 Column들이 있는 대규모의 데이터 셋을 유연하게 관리하면서, 확장성이 높고, 관계형 데이터베이스처럼 질의까지 가능한 데이터베이스가 필요했다. Key-Value 데이터베이스는 훌륭한 확장성과 속도, 유연성을 제공하여 대규모 데이터를 처리하는데는 이점이 있지만, 자주 함께 쓰이는 Column들을 구조화하여 사용...

더보기

NoSQL을 알아보자(12) - Document 데이터베이스 특징③

Key-Value 집합과 Document 기본적으로 Document는 Key-Value가 모인 집합을 의미한다. 그렇다면 Key-Value 집합과 Document는 동일한 존재일까? 보편적 명제에서 A가 B라면 B는 A다. 이 명제를 활용하면 Key-Value 집합으로 구성된 Document와 key-Value 집합은 같은 것이어야 한다. 하지만 Key-Value 집합과 Document는 같지만 때로는 다르다. 아래 예시를 확인해보자. 이름과 나이 두 속성을 가진 Key-Value 집합이 있다. {‘name’ : ‘sam’, ‘age’ : 27} {‘age’ : 27, ‘name’ : ‘sam...

더보기

NoSQL을 알아보자(11) - Document 데이터베이스의 기본 연산

Document 데이터베이스도 다른 데이터베이스처럼 4가지 기본 연산을 수행할 수 있다. 삽입 db.member.insert({“name” : “John”, “age” : 25}) 위에 예시는 ‘member’ Collection에서 ‘John’이라는 멤버를 추가하는 예시이다. Collection에 Document를 추가할 때는 아래처럼 고유 식별자를 함께 추가하는 것이 좋다. db.member.insert({“id” : 1321, “name” : “John”, “age” : 25}) 고유 식별자는 사용하는 Document 데이터베이스의 종류에 따라 권장되는 식별자 형태도 다르다. 어떤 ...

더보기

NoSQL을 알아보자(10) - Document 데이터베이스 특징②

Document 데이터 모델의 구조를 표현하는 Key-Value 형태의 집합이다. 여기서 Key로는 문자열을 사용할 수 있으며, Value에는 기본 데이터 타입(숫자, 문자, 불 등등), 구조(배열, 객체) 등을 저장할 수 있다. Key-Value 집합으로 이뤄진 Document를 표현할 때는 Json, XML 등을 사용해 데이터 구조를 표현할 수 있다. Document 표현 예시 { “member_id” : 919232, “name” : “Jame”, “phone” : “02-321-2312”, “visit_history” : [ “2020-...

더보기

NoSQL을 알아보자(9) - Document 데이터베이스 특징①

Document Database Document 데이터베이스는 복수의 Key-Value 데이터를 저장할 수 있다. Document 데이터베이스의 데이터를 표현하는데는 주로 JSON, XML 등을 사용한다. Key-Value 데이터베이스와의 차이 Key-Value 형식으로 데이터를 저장하지만 Key-Value 데이터베이스와 다른 점은 하나의 Document 안에 여러 개의 Key-Value 데이터들이 모여서 Document를 구성한다는 것이며, Key에 다양한 형태를 정의할 수 있던 Key-Value 데이터베이스와 달리 Document 데이터베이스는 Key로 문자만을 허용하고 있다. Key-Value 데이터베이...

더보기

NoSQL을 알아보자(8) - Key-Value 데이터베이스의 한계

Key-Value 데이터베이스는 간단하면서 빠르고 확장성이 좋다는 강한 장점을 가지고 있지만, 강점만큼 단점도 분명하게 존재한다. Key-Value 데이터베이스의 한계를 알아보자. 데이터 조회의 어려움 Key-Value 방식의 데이터 조작은 양날의 검이다. 빠르고 단순하다는 이점이 있지만, 오로지 Key 값만으로 데이터를 조작한다는 것은 단점이 되기도 한다. 특정 값을 조회를 한다는 것은 해당 값과 대칭되는 키를 알고 있어야 함을 의미한다. 만약 학번, 주민 등록 번호, 사원 번호 등으로 정보를 조회해야 된다고 가정했을 때 한 두명의 Key라면 기억하는 것이 어렵지 않다. 하지만 수천 수만 명의 정보를 다루고...

더보기

NoSQL을 알아보자(7) - Key-Value 데이터베이스의 무결성

지난 포스트 에서 Key-Value 데이터베이스는 Master-Slave 방식 또는 Masterless 방식을 이용해 확장성을 관리한다고 했다. Master-Slave 구조에서는 쓰기 작업을 수행할 수 있는 서버는 Master 서버 뿐이다. 쓰기가 이뤄지면 Master 서버는 Slave 서버로 데이터를 복제하기 때문에 클러스터 안에 모든 서버들은 동일한 데이터를 가지게 된다. 하지만 Masterless 구조는 각각의 서버들이 모두 데이터를 쓸 수 있기 때문에 같은 작업이 동시에 발생할 가능성이 있다. 그리고 모든 서버에 데이터를 복제하는 Master-Slave과 달리 Masterless는 인접한 특정 수의 서버...

더보기

NoSQL을 알아보자(6) - Key-Value 데이터베이스 특징

Key-Value 데이터베이스의 핵심 특징은 단순성, 속도, 확장성 세 가지다. Key-Value 데이터베이스는 가장 간단한 데이터 구조를 사용한다. 간단한 이미지 자르기를 하는데 전문 그래픽 툴을 쓰는 것보다 그림판으로 작업하는 것이 훨씬 간편한 것처럼 때로는 Key-Value 데이터베이스가 관계형 데이터베이스를 보다 효율적인 경우가 있다. 단순함 Key-Value 데이터베이스는 특정 키를 요청하면 해당하는 데이터를 반환하는 아주 단순한 구조다. 배열과 상당히 유사하지만 Key-Value 데이터베이스는 배열보다 훨씬 자유롭다. 예를들어 배열의 경우 크기가 5인 int형 배열이 있다고 가정해보자. i...

더보기