성장通

01. 떠오르는 그래프 기술 본문

그래프/그래프 데이터

01. 떠오르는 그래프 기술

백악기작은펭귄 2023. 12. 6. 18:00

떠오르는 그래프 기술

최근 수십 년간 기술 산업의 중심이 데이터의 효율적인 저장에서 데이터의 가치를 잘 얻어내는 것으로 바뀌면서 데이터베이스 기술 또한 관계형에서 NoSQL쪽으로 변화해왔다.

데이터베이스 기술의 역사는 크게 계층형, 관계형, NoSQL로 나눌 수 있는데, 각 시대별로 간략하게 알아보고 최근 그래프가 주목받게 된 배경에 대해 알아보자.

 


1) 1960~1980년대: 계층 데이터

1960년대에서 1980년대까지의 데이터베이스 기술은 계층형(hierachical) 또는 탐색형(navigational)이라고 불리는 트리(tree) 형태의 자료구조로 이루어졌다. 현재 통용되는 데이터베이스의 의미로써보다는 데이터를 효율적으로 정리하고 탐색할 수 있게 하는 구조로써, 데이터를 서로 연결된 레코드 형태로 저장하였다. 이 시스템의 아키텍트는 트리 형태의 자료구조를 이용해서 키(key), 시스템 스캔(system scan) 등의 방법으로 모든 레코드를 접근하는 방법을 시도하였다.

1960년대 초반 등장한 코다실 산하 데이터베이스 연구회(CODASYL DBTG)는 데이터베이스 업계의 첫 번째 표준을 제시하였고, 트리 자료구조에서 레코드를 추출하는 시스템을 만들었다. 이를 코다실 접근법(CODASYL approach)이라 부르며, primary key의 사용, 순차적 레코드 스캔, 레코드 간 연결 링크라는 세 가지 표준을 제시하였다. 이 중 PK와 스캔은 여전히 널리 사용되며 큰 혁신의 역사를 이끌었다. 그렇다면 링크는 어떻게 되었을까?

이 시기의 링크 탐색 기법은 너무 어렵고 느렸다. 당시에는 B-트리, Self-balancing 트리 등을 이용한 구조적 최적화로 이를 해결하고자 하였으나 곧 등장한 관계형 시스템에게 구현 비용, 하드웨어 성숙도, 실질적 가치 측면에서 밀려 자리를 내주게 되었다.

비록 이 때의 링크 개념이 2000년대 이후 그래프라는 모습으로 다시 빛을 보게 되었지만, 당시에는 역사의 뒤안길로 사라지는 것처럼 보였다.


2) 1980~2000년대: 관계형 데이터

영국의 컴퓨터 과학자 에드거 F. 커드(Edgar F. Codd)가 제시한 개체-관계(entity-relationship) 개념은 데이터 관리 기술에 혁신을 가져왔고, 이로 인해 관계형 데이터베이스의 시대가 열렸다고 해도 과언이 아니다.

이는 1960년대 계층 시스템에서의 '키를 이용해 데이터를 가져온다'라는 개념을 발전시킨 것으로, 트리 구조의 데이터 구조에서 테이블 구조로의 확장을 이루어낸 것이다. 이 시대의 시스템은 데이터를 저장, 관리, 검색하는 효율적인 방식을 제시했고 현재까지도 꾸준히 이용되고 있다.

관계형 시스템에서는 데이터를 집합(set)으로 조직하는데, 이는 비슷한 레코드를 묶어 하나의 테이블로 만들고 이를 연결하여 관리한다. 연결 테이블은 각 개체의 Primary key를 모아 연결 테이블의 새 행으로 정리한다.

테이블 형태로 관리되는 데이터는 저장과 관리가 간편했고, 이에 따라 많은 데이터 조직이 이를 표준으로 삼게되었다. 그러나 1990년대 후반 웹의 대중화를 통해 정보화 시대가 시작되면서 기존에 설계되지 않았던 형태의 데이터가 대거 유입되게 되었는데, 관계형 데이터베이스는 이러한 문제에 효율적으로 대처하지 못한다는 지적이 등장하였다. 따라서 이를 효율적으로 관리하기 위한 새로운 방법론이 필요하게 되었는데 그것이 바로 NoSQL이다.


3) 2000~2020년대: NoSQL

2000년대를 기점으로 비정형 데이터에 대한 수요가 급증했고 이에 따라 NoSQL(Not Only SQL) 운동이 출현하였다. 이 시대의 목표는 모든 형태의 데이터를 저장하고 관리할 수 있는 확장성을 갖춘 기술을 개발하는 것이었다. 기존 데이터를 기준으로 새로운 조합을 통해 가치를 창출하기 보다는 다양한 형태의 데이터를 빠르고 효율적으로 수집하고 관리하는 것에 대한 관심이 증가했으며, 이를 위해 애플리케이션의 요구 사항을 충족하는 동시에 확장성 있는 기술이 필요해졌다.

웹 기반 애플리케이션이 유행하면서 애플리케이션 간에 데이터 이동이 활발해졌다. 이에 따라 XML, JSON, YAML 등의 데이터 직렬화 표준(Data serialization standard)이 정의됐고, 이는 자연스럽게 해당 데이터 특성에 특화된 도구를 필요로 하게 되었다. 또한 이러한 새로운 종류의 애플리케이션은 수많은 데이터를 수집하기에 이르렀고, 기존에는 필요로 하지 않았던 시스템 확장성이 요구되었다.

이와 같은 사회적 요구에 따라 등장한 NoSQL 시대의 혁신은 기존의 스케일업(scale-up) 시스템을 스케일아웃(scale-out) 시스템으로 바꿀 수 있도록 도움을 주었고, 기존 방식으로는 관리가 어려웠던 다양한 형태의 데이터를 효율적으로 관리할 수 있게 하였다.


4) 2020년대 이후: 그래프 데이터

데이터 저장 시스템의 효율성보다 저장 시스템 내 데이터의 가치를 추출하는 것에 초점이 맞춰지면서 NoSQL이 빛을 보기 시작했고, 복잡한 관계를 가지는 데이터를 효율적으로 처리할 수 있는 그래프가 데이터를 저장하고 관리하는 새로운 방식으로 떠올랐다. (물론 여기서 말하는 내용이 '데이터 관리의 효율성은 더 이상 중요하지 않다'는 아니다. 오히려 '데이터 저장의 효율성 문제는 충분히 잘 해결되었으니 다음 문제로 넘어간다'의 의미가 강하다고 할 수 있다.)

그래프를 이용하면 산재되어있는 정보들을 서로 연결함으로써 새로운 통찰을 얻을 수 있고 유의미한 가치를 창출할 수 있다. 즉, 데이터 간의 관계를 나타내는 그래프를 통해 데이터가 가지는 복잡한 관계를 이해하고 이로부터 가치를 발견할 수 있다는 이야기이다. 이를 위해서는 데이터를 바라보는 시각부터 바뀌어야 할 필요가 있다. 각각의 데이터 그 자체보다는 데이터의 관계를 우선시하는 사고방식이 그 첫걸음이다. 이러한 사고방식을 그래프씽킹(Graph Thinking)이라고 칭하며, 앞으로 이것이 무엇인지에 대해서 다뤄볼 예정이다.


'그래프 > 그래프 데이터' 카테고리의 다른 글

06. 관계형을 그래프로  (0) 2024.02.18
05. 그래프의 다중성  (1) 2024.02.03
04. 그래프 스키마 언어  (0) 2024.01.28
03. 관계형에서 그래프 씽킹으로  (1) 2024.01.21
02. 그래프 씽킹  (0) 2023.12.21