
그래프 데이터베이스의 모든 것: RedisGraph의 종말에서 FalkorDB의 부상까지
관계형 DB의 한계를 넘어선 그래프 데이터베이스의 역사부터 핵심 개념, RedisGraph EOL과 FalkorDB 마이그레이션, 그리고 2026년 AI 시대의 GraphRAG까지. 풍부한 사례와 인터랙티브 시각화로 그래프 DB의 세계를 탐험합니다.

관계형 DB의 한계를 넘어선 그래프 데이터베이스의 역사부터 핵심 개념, RedisGraph EOL과 FalkorDB 마이그레이션, 그리고 2026년 AI 시대의 GraphRAG까지. 풍부한 사례와 인터랙티브 시각화로 그래프 DB의 세계를 탐험합니다.
1967년, 하버드 대학의 사회심리학자 스탠리 밀그램(Stanley Milgram)이 흥미로운 실험을 했습니다. 미국 중서부의 무작위 시민들에게 편지를 보내고, 보스턴에 사는 한 주식 중개인에게 "아는 사람"을 통해 편지를 전달해 달라고 요청한 것이죠. 결과는 놀라웠습니다. 평균 5.5명의 중간 매개자만 거치면 편지가 도착했습니다.
이것이 유명한 "6단계 분리 이론(Six Degrees of Separation)"입니다.

이 실험이 우리에게 알려주는 핵심 메시지는 이겁니다: 세상은 '데이터'가 아니라 '관계'로 이루어져 있다. 그리고 이 관계를 가장 자연스럽게 저장하고 탐색하는 기술이 바로 오늘의 주인공, 그래프 데이터베이스입니다.
이 글에서는 그래프 데이터베이스의 탄생 배경부터, 최근 큰 화제가 된 RedisGraph의 서비스 종료(EOL)와 그 후계자 FalkorDB의 부상, 그리고 2026년 AI 시대에 그래프 DB가 왜 더 중요해졌는지까지 — 풍부한 사례와 인터랙티브 시각화를 통해 깊이 있게 탐험합니다.
그래프 데이터베이스를 이해하려면, 먼저 그래프(Graph)가 무엇인지 알아야 합니다. 여기서 말하는 그래프는 꺾은선 차트 같은 시각화가 아니라, 수학에서 말하는 "점(Node)과 선(Edge)의 집합"입니다.
이 세 가지가 그래프 데이터베이스의 전부입니다. 아래 인터랙티브 시각화에서 직접 노드를 클릭하고, 관계를 탐색해 보세요.
"그냥 MySQL이나 PostgreSQL 쓰면 안 되나?"라고 생각할 수 있습니다. 간단한 관계라면 충분합니다. 하지만 관계의 깊이가 깊어지는 순간, 관계형 DB는 한계에 부딪힙니다.
예시: 소셜 네트워크에서 "친구의 친구의 친구" 찾기
관계형 DB에서는 이렇게 됩니다:
-- 3단계 관계를 찾으려면 JOIN이 6개 필요!
SELECT DISTINCT p4.name
FROM person p1
JOIN friendship f1 ON f1.person_id = p1.id
JOIN person p2 ON p2.id = f1.friend_id
JOIN friendship f2 ON f2.person_id = p2.id
JOIN person p3 ON p3.id = f2.friend_id
JOIN friendship f3 ON f3.person_id = p3.id
JOIN person p4 ON p4.id = f3.friend_id
WHERE p1.name = '김철수';
같은 질문을 그래프 DB의 Cypher 쿼리로 하면:
MATCH (p:Person {name: '김철수'})-[:친구*3]->(fof)
RETURN DISTINCT fof.name
단 2줄.
더 중요한 건 성능 차이입니다. 관계형 DB는 깊이가 깊어질수록 JOIN 연산이 기하급수적으로 늘어나 수 초~수 분이 걸리지만, 그래프 DB는 인덱스 프리 인접성(Index-Free Adjacency) 덕분에 거의 일정한 시간에 탐색합니다. 각 노드가 인접한 노드의 물리적 메모리 주소를 직접 가리키기 때문입니다.
아래에서 같은 질문을 SQL과 Cypher로 비교해 보세요.

그래프 데이터베이스의 뿌리는 생각보다 깊습니다.
관계형 DB의 강점은 분명합니다:
하지만 2010년대 이후, 세 가지 변화가 그래프 DB를 주류로 밀어올립니다:

Redis는 "Remote Dictionary Server"의 약자로, 세계에서 가장 인기 있는 인메모리 키-값 저장소입니다. 2018년, Redis Labs(현 Redis Inc.)는 이 빠른 인메모리 엔진 위에 그래프 데이터베이스 모듈을 얹는 혁신적인 시도를 합니다. 바로 RedisGraph입니다.
RedisGraph의 핵심 혁신은 희소 인접 행렬(Sparse Adjacency Matrix)과 GraphBLAS 라이브러리를 사용한 것입니다.
🧮 GraphBLAS — 그래프 연산을 선형 대수(행렬 곱셈)로 변환
💾 인메모리 처리 — Redis의 메모리 기반 아키텍처 활용
🔍 Cypher 호환 — Neo4j와 같은 쿼리 언어 지원
📦 Redis 모듈 — 기존 Redis 인프라에 플러그인으로 추가
기존 그래프 DB들이 포인터 체인을 따라 하나씩 탐색하는 방식이라면, RedisGraph는 행렬 연산으로 여러 관계를 한 번에 처리했습니다. 마치 한 명씩 전화하는 대신, 단체 문자를 보내는 것과 같죠.
2023년 7월 5일, Redis Inc.는 RedisGraph의 서비스 종료(End-of-Life)를 발표합니다. 주요 이유들:
| 날짜 | 이벤트 | 영향 |
|---|---|---|
| 2023.07.05 | EOL 발표 | 신규 라이선스 발급 중단 |
| 2024.01.31 | 기존 고객 갱신 마감 | 온프레미스/자체 관리 버전 갱신 불가 |
| 2024.12.31 | GitHub 유지보수 종료 | 리포지토리 "deprecated" 태그 부착 |
| 2025.01.31 | 공식 지원 종료 | Enterprise Cloud에서 명령어 비활성화 |
이 결정은 RedisGraph를 사용하던 수많은 기업들에게 큰 충격이었습니다. 프로덕션 환경에서 사용 중인 그래프 DB가 갑자기 사라진다는 것은, 마치 매일 출퇴근하던 지하철 노선이 폐선된다고 통보받는 것과 같습니다.
FalkorDB의 이름은 '네버엔딩 스토리'에 등장하는 행운의 용 팔코르(Falkor)에서 따왔습니다. 그 이름처럼, FalkorDB는 RedisGraph의 기술적 유산을 이어받아 "끝나지 않는 이야기"를 쓰고 있습니다.
FalkorDB의 CEO 가이 코를란드(Guy Korland)는 텔아비브 대학교 컴퓨터 과학 박사 출신으로, Redis에서 SVP & CTO를 역임한 인물입니다. RedisGraph의 핵심 기술을 누구보다 잘 아는 사람이 직접 프로젝트를 이끌고 있는 셈이죠.
| 기능 | RedisGraph | FalkorDB |
|---|---|---|
| 상태 | EOL (지원 종료) | 활발한 개발 중 |
| 성능 | P99 ~200ms | P99 83ms |
| 수평 확장 | 미지원 | 클러스터링 지원 |
| 멀티테넌시 | 제한적 | 10,000+ 테넌트/인스턴스 |
| AI 통합 | 없음 | GraphRAG SDK 내장 |
| 벡터 인덱싱 | 미지원 | 지원 |
| 전문 검색 | 미지원 | 지원 |
| 읽기/쓰기 분리 | 미지원 | 리드 레플리카 지원 |
| 클라우드 서비스 | 종료 | GCP 기반 클라우드 제공 |
FalkorDB의 성능은 숫자로 증명됩니다. 아래 인터랙티브 벤치마크에서 직접 비교해 보세요.
특히 주목할 점은 P99 레이턴시입니다. 99번째 백분위 요청이 83ms 이내에 처리된다는 것은, 거의 모든 요청이 사용자가 눈 깜짝할 사이에 완료된다는 뜻입니다. Neo4j의 7,500ms(7.5초)와 비교하면 약 90배 차이입니다.
이 성능 차이의 비밀은 세 가지입니다:
그래프 데이터베이스가 빛나는 실전 사례들을 살펴보겠습니다.
페이스북은 세계 최대의 그래프 데이터베이스를 운영합니다. 30억 명의 사용자가 노드이고, 친구 관계, 좋아요, 공유, 태그가 모두 엣지입니다. "알 수도 있는 사람" 추천, 뉴스피드 개인화, 광고 타겟팅 — 이 모든 것이 그래프 탐색입니다.
2012년 페이스북이 내부적으로 발표한 연구에 따르면, 페이스북 사용자 간 평균 분리도는 3.57단계입니다. 밀그램의 6단계보다 훨씬 가까운 셈이죠. 이런 관계 분석은 그래프 DB 없이는 불가능합니다.
넷플릭스의 추천 알고리즘은 단순한 "비슷한 장르" 매칭이 아닙니다. 사용자-콘텐츠-배우-감독-장르 사이의 복잡한 관계 그래프를 탐색하여 추천합니다.
"기생충을 좋아한 사용자가 높은 평점을 준 다른 한국 영화"를 찾는 것은 SQL로 작성하면 JOIN 6개짜리 쿼리가 되지만, Cypher로는 직관적인 패턴 매칭 한 줄이면 됩니다.
금융 사기는 종종 순환 거래(Circular Transaction) 패턴을 보입니다. A → B → C → D → A로 돈이 돌아오는 패턴이죠. 관계형 DB로 이런 순환을 탐지하려면 재귀 쿼리가 필요하지만, 그래프 DB에서는:
MATCH path = (a:Account)-[:TRANSFER*3..6]->(a)
WHERE ALL(t IN relationships(path) WHERE t.amount > 10000)
RETURN path
자기 자신으로 돌아오는 경로를 바로 찾을 수 있습니다. JPMorgan Chase, HSBC 등 글로벌 은행들이 사기 탐지에 그래프 DB를 적극 활용하는 이유입니다.
2012년 구글은 "Things, not strings"라는 슬로건과 함께 Knowledge Graph를 발표했습니다. "아인슈타인"이라고 검색하면, 단순한 텍스트 매칭이 아니라 아인슈타인이라는 실체(Entity)와 관련된 사실들 — 생년월일, 출생지, 업적, 관련 인물 — 을 구조화하여 보여줍니다.
이것이 가능한 이유는 구글이 세계의 사실(Fact)들을 수십억 개의 노드와 엣지로 구성된 거대한 지식 그래프에 저장하고 있기 때문입니다.
IP 주소 → 사용자 계정 → 디바이스 → 행위 패턴 사이의 복잡한 관계를 그래프로 모델링하면, 개별 로그 분석으로는 발견할 수 없는 연쇄 공격 패턴을 탐지할 수 있습니다.
"Redis가 캐시 서버 아닌가? 거기에 그래프 DB를?"이라고 의아할 수 있습니다. 이해를 돕기 위해 Redis의 기본부터 짚어보겠습니다.
Redis는 인메모리 데이터 구조 저장소입니다. 모든 데이터를 RAM에 저장하기 때문에 디스크 기반 DB보다 수십~수백 배 빠릅니다. 원래는 단순한 키-값 저장소였지만, 지금은:
다양한 데이터 구조를 지원합니다. 그리고 Redis의 모듈 시스템을 통해 그래프 DB, 검색 엔진, 시계열 DB 등을 플러그인처럼 추가할 수 있습니다. RedisGraph는 바로 이 모듈 시스템 위에 만들어진 그래프 DB였습니다.
그래프 탐색은 본질적으로 "포인터를 따라가는 연산"입니다. 이웃 노드를 찾으려면 메모리를 읽어야 합니다. 모든 데이터가 RAM에 있으면, 디스크 I/O가 발생하지 않으므로 탐색 속도가 극적으로 빨라집니다. 이것이 FalkorDB가 Neo4j(디스크 기반)보다 수십~수백 배 빠른 근본적인 이유입니다.
"메모리에만 있으면 서버 재시작하면 날아가지 않나요?"
좋은 질문입니다. FalkorDB는 Redis의 RDB 스냅샷과 AOF(Append-Only File) 두 가지 영속성 메커니즘을 사용합니다:
둘을 함께 사용하면, 인메모리 속도와 디스크 수준의 내구성을 동시에 얻을 수 있습니다.
기존 RedisGraph 사용자라면, FalkorDB로의 전환은 의외로 간단합니다. 두 시스템 모두 Redis 기반이기 때문에, RDB 파일을 그대로 옮기면 됩니다.
RedisGraph에서 데이터 내보내기:
# RedisGraph 컨테이너에서 RDB 스냅샷 생성
docker exec -it myredisgraph redis-cli SAVE
# RDB 파일을 로컬로 복사
docker cp myredisgraph:/data/dump.rdb ./dump.rdb
FalkorDB에 데이터 가져오기:
# FalkorDB 스테이징 환경 시작 (RDB 파일 마운트)
docker run -d --name falkordb-staging \
-p 6380:6379 \
-v $(pwd):/data \
-e REDIS_ARGS="--dir /data --dbfilename dump.rdb" \
falkordb/falkordb
데이터 검증:
# FalkorDB에서 쿼리 실행
docker exec -it falkordb-staging redis-cli -p 6379
GRAPH.QUERY library "MATCH (n) RETURN count(n)"
GRAPH.QUERY library "MATCH ()-[r]->() RETURN count(r)"
| 항목 | 체크 | 설명 |
|---|---|---|
| 스테이징 환경 테스트 | 필수 | 프로덕션 전환 전 반드시 스테이징에서 검증 |
| 노드/엣지 수 비교 | 필수 | 이전 전후 count 쿼리로 정확히 일치하는지 확인 |
| 주요 쿼리 동작 확인 | 필수 | 기존 애플리케이션의 핵심 쿼리가 동일한 결과를 반환하는지 |
| 다운타임 계획 | 필수 | 데이터 규모에 따라 수 분~수 시간 소요 가능 |
| 백업 생성 | 필수 | 마이그레이션 완료 후 FalkorDB 상태의 RDB 백업 |
| 모니터링 설정 | 권장 | 전환 후 지연시간, 에러율 등 모니터링 |
핵심 포인트: FalkorDB는 RedisGraph와 Cypher 쿼리 하위 호환성을 유지합니다. 기존 쿼리 코드를 수정할 필요가 없습니다.

2026년 현재, 그래프 데이터베이스가 다시 주목받는 가장 큰 이유는 GraphRAG 때문입니다.
RAG(Retrieval-Augmented Generation)은 LLM(대규모 언어 모델)이 답변할 때 외부 데이터를 참조하게 하는 기술입니다. 하지만 기존 벡터 DB 기반 RAG에는 한계가 있습니다:
FalkorDB는 GraphRAG를 1급 시민(first-class citizen)으로 지원합니다. 파이썬과 TypeScript에서 사용할 수 있는 SDK를 제공합니다:
from falkordb import FalkorDB
# FalkorDB 연결
fdb = FalkorDB(host='localhost', port=6379)
# 지식 그래프 선택
knowledge = fdb.select_graph('company_knowledge')
# GraphRAG 쿼리: "김 대리의 팀장이 승인한 프로젝트 목록"
result = knowledge.query("""
MATCH (e:Employee {name: '김대리'})
-[:REPORTS_TO]->(mgr:Employee)
-[:APPROVED]->(p:Project)
RETURN mgr.name, p.name, p.budget
""")
SaaS 애플리케이션에서 각 고객(테넌트)의 데이터를 독립적인 그래프로 관리해야 할 때, FalkorDB는 단일 인스턴스에서 10,000개 이상의 독립 그래프를 운영할 수 있습니다:
from falkordb import FalkorDB
fdb = FalkorDB(host='localhost', port=6379)
# 테넌트별 독립 그래프
tenant_a = fdb.select_graph('tenant_a_knowledge')
tenant_b = fdb.select_graph('tenant_b_knowledge')
# 각 테넌트의 데이터는 완전히 격리됨
result_a = tenant_a.query("MATCH (n) RETURN count(n)")
result_b = tenant_b.query("MATCH (n) RETURN count(n)")
이것은 Neo4j에서는 상상하기 어려운 규모입니다. Neo4j는 인스턴스당 약 50개의 데이터베이스만 지원합니다.
그래프 DB를 사용하려면 그래프 전용 쿼리 언어를 배워야 합니다. SQL에 대응하는 그래프 세계의 쿼리 언어들을 비교해보겠습니다.
| 언어 | 스타일 | 대표 DB | 특징 |
|---|---|---|---|
| Cypher | 선언적 | Neo4j, FalkorDB | ASCII 아트 패턴 매칭. 가장 직관적 |
| Gremlin | 명령적 | JanusGraph, Neptune | Apache TinkerPop 기반. 프로그래밍 스타일 |
| SPARQL | 선언적 | Wikidata, Virtuoso | RDF 트리플 스토어용. 학술/시맨틱 웹 |
| GQL | 선언적 | (ISO 표준 진행 중) | ISO/IEC 39075. SQL의 그래프 버전을 목표 |
FalkorDB와 Neo4j 모두 Cypher를 사용합니다. Cypher의 가장 큰 매력은 ASCII 아트처럼 관계를 시각적으로 표현한다는 점입니다:
-- 노드는 괄호 ()로
(person:Person {name: '김철수'})
-- 관계는 화살표 -[]->로
(김철수)-[:친구]->(이영희)
-- 패턴 매칭
MATCH (a:Person)-[:친구]->(b:Person)-[:근무]->(c:Company)
WHERE a.name = '김철수'
RETURN b.name, c.name
마치 화이트보드에 그린 다이어그램을 코드로 옮긴 것 같지 않나요? 이것이 Cypher가 다른 쿼리 언어보다 학습 곡선이 낮은 이유입니다.
Gartner에 따르면, 2026년 그래프 데이터베이스 시장은 연 32% 성장률로 확대되고 있습니다. 주요 트렌드:
* 수치는 기업 도입 의향 기준 (출처: Gartner, DB-Engines Trend Report 2026)
2026년의 가장 흥미로운 트렌드는 AI 에이전트가 그래프 DB를 직접 쿼리하는 패턴입니다. LLM이 자연어 질문을 Cypher로 변환하고, 그래프 DB에서 정확한 팩트를 가져오며, 이를 기반으로 답변을 생성합니다.
이 패턴은 기존 RAG보다 정확도가 높고, 환각이 적으며, 감사 추적(Audit Trail)이 가능합니다. 어떤 경로를 통해 그 답변에 도달했는지 투명하게 확인할 수 있기 때문입니다.
보안 인텔리전스 기업 Securin은 2026년 FalkorDB로 전환하면서 놀라운 결과를 보고했습니다:
특히 주목할 점은, 이전 DB는 5-hop 이상 탐색에서 타임아웃이 발생했지만, FalkorDB는 6~9 hop 쿼리까지 안정적으로 처리했다는 것입니다. 170개 벤치마크 쿼리에서 100% 성공률을 달성했습니다. 보안 분석에서 가장 의미 있는 인사이트는 깊은 관계 탐색에서 나오기 때문에, 이 차이는 실질적인 보안 역량 향상으로 이어집니다.
FalkorDB의 GraphRAG 벤치마크 결과는 충격적입니다:
| 영역 | FalkorDB | Neo4j | AWS Neptune |
|---|---|---|---|
| 오픈소스 | SSPL (소스 이용 가능) | 커뮤니티 에디션은 GPL | 비공개 |
| 가격 | 무료 ~ $300/월 | $65,000/년~ | 사용량 기반 |
| GraphRAG | 네이티브 SDK | 외부 연동 필요 | 미지원 |
| 학습 곡선 | Redis 경험자에게 쉬움 | 별도 학습 필요 | Gremlin/SPARQL |
| 인증 | SOC 2 Type II | SOC 2 | AWS 인증 기반 |
바로 어제 릴리스된 FalkorDB v4.18.0의 주요 업데이트입니다:
🆕 JavaScript UDF 지원 — QuickJS 런타임으로 커스텀 함수를 JavaScript로 작성 가능
📊 graph.getNodeById UDF — 노드 ID로 직접 접근하는 새 내장 함수
⚡ Bitmap 범위 성능 개선 — 대규모 그래프에서 탐색 속도 향상
🔧 GRAPH.COPY 개선 — 임시 폴더 설정 가능, 다중 그래프 복사 안정화
🐛 15개 이상 버그 수정 — ORDER BY, MERGE, LOAD CSV HTTPS 등
FalkorDB는 단독 제품이 아니라, 빠르게 확장 중인 생태계를 구축하고 있습니다:
특히 2026년 3월 발표된 FalkorDB on Snowflake는 주목할 만합니다. Snowflake의 데이터 웨어하우스 테이블을 네이티브 그래프로 쿼리할 수 있게 되면서, 기존 데이터 인프라를 변경하지 않고도 그래프 분석을 추가할 수 있게 되었습니다.
또한 MCP(Model Context Protocol) 서버를 통해 Claude Desktop이나 Cursor IDE에서 직접 FalkorDB 그래프를 쿼리하고 시각화할 수 있습니다. AI 코딩 어시스턴트가 코드베이스의 관계를 그래프로 이해하는 시대가 열린 것입니다.
2025년 9월 공개된 QueryWeaver는 FalkorDB의 또 다른 혁신입니다. 지식 그래프를 시맨틱 레이어(Semantic Layer)로 사용하여, 자연어 질문을 정확한 SQL로 변환합니다.
기존 Text-to-SQL 도구들은 테이블 스키마만 보고 SQL을 생성하기 때문에, 테이블 간 관계나 비즈니스 의미를 놓치기 쉽습니다. QueryWeaver는 지식 그래프에 비즈니스 컨텍스트가 담겨 있어 훨씬 정확한 SQL을 생성합니다.
직접 FalkorDB를 설치하고 그래프 데이터를 만들어봅시다.
# 1. FalkorDB 도커 실행
docker run -d --name falkordb -p 6379:6379 falkordb/falkordb
# 2. Redis CLI 접속
docker exec -it falkordb redis-cli
-- 노드 생성
GRAPH.QUERY myapp "CREATE (:Person {name:'김철수', age:32})"
GRAPH.QUERY myapp "CREATE (:Person {name:'이영희', age:28})"
GRAPH.QUERY myapp "CREATE (:Company {name:'코어닷', industry:'AI'})"
-- 관계 생성
GRAPH.QUERY myapp "MATCH (a:Person {name:'김철수'}), (b:Person {name:'이영희'}) CREATE (a)-[:친구 {since: 2023}]->(b)"
GRAPH.QUERY myapp "MATCH (p:Person {name:'김철수'}), (c:Company {name:'코어닷'}) CREATE (p)-[:근무 {role: '개발자'}]->(c)"
-- 쿼리: 김철수의 관계 조회
GRAPH.QUERY myapp "MATCH (p:Person {name:'김철수'})-[r]->(n) RETURN type(r), n.name"
from falkordb import FalkorDB
# 연결
db = FalkorDB(host='localhost', port=6379)
graph = db.select_graph('myapp')
# 그래프 쿼리
result = graph.query("""
MATCH (p:Person)-[:근무]->(c:Company)
RETURN p.name, c.name, c.industry
""")
for row in result.result_set:
print(f"{row[0]}님은 {row[1]} ({row[2]})에서 근무합니다")

우리가 살아가는 세상은 스프레드시트의 행과 열로 담기엔 너무 복잡합니다. 사람과 사람, 사람과 기업, 기업과 제품, 아이디어와 아이디어 — 이 모든 것은 관계로 연결되어 있습니다.
그래프 데이터베이스는 이 관계를 가장 자연스럽게 표현하고 탐색하는 기술입니다. RedisGraph의 종료는 아쉬운 일이지만, FalkorDB가 그 유산을 이어받아 더 강력하고 AI 친화적인 그래프 DB로 진화하고 있습니다.
2026년, AI 에이전트가 일상이 된 지금, 정확한 지식과 관계를 구조화하여 AI에 제공하는 것이 그 어느 때보다 중요해졌습니다. 그래프 데이터베이스는 바로 이 역할의 핵심입니다.
"세상을 이해하는 방법은 두 가지다. 하나는 모든 것을 테이블에 넣는 것이고, 다른 하나는 모든 것을 연결하는 것이다. 미래는 후자에 속한다."
참고 자료: