2025.6.22-27 베를린에서 진행된 SIGMOD 2025에 참석하였습니다.
우리 연구실에서는 Rapid Data Ingestion through DB-OS Co-design을 발표하고 학회를 참관하기 위해 임경민, 김동광, 김해람, 박건욱, 최철민 학생이 정형수 교수님과 함께 참여하였습니다.
이번 SIGMOD 2025의 특징 중 하나는 많은 수의 논문과 상대적으로 제한된 시간/공간으로 인해 대부분의 논문을 구연발표 대신 포스터발표로 발표하게 되었다는 점입니다. 임의추출로 구연발표 논문을 선정하였다고 하며, 우리 연구실 논문은 포스터로 발표하였습니다. 다만 이전과 달리 포스터 발표 세션을 전체(plenary) 세션으로 진행함에 따라 포스터 발표 중 매우 활발한 교류가 이루어졌습니다. 전반적으로 매우 적극적으로 질의응답하는 모습을 볼 수 있었고, 줄을 서서 한 명씩 질문해야 하는 논문들도 꽤 있었습니다.
Research Track의 Best paper로는 LpBound: Pessimistic Cardinality Estimation Using Lp-Norms of Degree Sequences과 Low-Latency Transaction Scheduling via Userspace Interrupts: Why Wait or Yield When You Can Preempt?이 선정되었습니다. 특히 두번째 논문은 트랜잭션과 관련하여 활발하게 연구를 진행해 온 Tianzheng Wang (Simon Fraser University) 교수님 연구팀에서 userspace interrupt를 통해 preemption에 기반한 transaction scheduling을 구현한 것으로 주목받았습니다.
아래 참석 후기는 참석한 학생들이 함께 작성한 것으로, 주어는 모두 '저'로 통일되어 있지만 각 부분이 다른 학생들에 의해 작성되었습니다. 편의상 누가 어느 부분을 썼는지는 생략하겠습니다.
우리 연구실의 논문 Rapid Data Ingestion through DB-OS Co-design는 포스터로 발표하였으며, 10명 이상의 사람들이 관심을 갖고 내용에 대해 질문해 왔습니다.
포스터 세션의 특징은 저희 논문을 읽어보지 않은 사람들도 포스터를 보고 흥미를 가져 그 자리에서 바로 설명을 듣고 질문을 할 수 있다는 점이며, 제가 진행한 QnA에서도 논문의 전체 내용을 설명해달라는 질문에 답변하는 시간이 전체 QnA 중 절반 가까이를 차지하였습니다. 또한 나머지 디테일한 질문들 중에서도 SPDK와의 차이점이 무엇이냐는 질문이 여러 사람들에게서 공통적으로 나온 점도 인상깊었습니다.
이와 같이 QnA 시간의 주를 이룬 내용 두 가지를 통해, 저자로서 논문을 책임지고 발표하기 위해서는 논문의 전체적인 내용부터 아주 디테일한 부분까지 모두 대응할 수 있어야 한다는 점을 새삼 다시 느끼게 되었으며, 공통의 관심사를 가진 사람들은 생각하는 방향과 궁금한 점까지 겹친다는 것을 직접 느낄 수 있는 좋은 경험이었습니다.
이 자리를 빌어 제가 답변한 내용을 아래와 같이 요약하여 전합니다.
DBMS에서 하나의 table을 sequential scan할 때는 DBMS와 OS의 여러 layer를 거쳐가며 data를 읽어들이며, 이 과정에서 overhead가 발생합니다. 이를 해결하기 위해 OS 분야에서는 I/O와 관련된 동작들을 library OS 형태로 DBMS에 제공하여 kernel에서의 overhead를 제거하고 DBMS의 semantic을 활용하였으나, kernel의 기능을 사용하지 못하고 DBMS의 개발 복잡도가 크게 증가하여 기존의 DBMS에 쉽게 적용하기 어렵다는 단점이 존재합니다. 한편 DBMS 분야에서는 비동기 I/O를 활용하여 latency를 overlap시켜 wait time을 감소시켰으나, 이는 추가적인 하드웨어 자원을 소모하고 근본적인 문제는 해결하지 못한다는 단점이 존재합니다.
이를 해결하기 위해 우리 논문은 DBMS와 OS를 모두 고려하여, DBMS의 semantic을 kernel에 전달함으로써 부가적인 하드웨어 자원 소모 없이 DBMS에게 데이터를 필요로 하는 시점에 맞게 미리 준비해주는 framework인 zicIO를 제안하였습니다. 또한 여러 worker가 zicIO를 사용할 때 발생할 수 있는 데이터를 중복적으로 읽어들이는 문제는 page table을 조작하여 data pool에 mapping 시켜줌으로써 큰 overhead 없이 데이터를 공유할 수 있도록 하였습니다.
SPDK는 user space에서 직접 I/O를 할 수 있게 하는 라이브러리입니다. User space에서 kernel을 거치지 않고 DMA를 사용해 디바이스에서 직접 I/O를 하기 때문에, 이를 사용할 경우 zicIO가 제거하고자 했던 overhead들을 상당 부분 제거할 수 있습니다. 그러나 DBMS에서 SPDK를 사용할 경우 SPDK를 사용하여 I/O를 하는 모든 과정을 DBMS에 구현해야 하기 때문에 구현 난이도가 크게 증가하며, kernel의 hardware interrupt 기능을 직접 사용하지 못하고 이로 인해 I/O completion을 polling할 별도의 reactor thread를 필요로 한다는 점에 있어 zicIO와 차이를 보입니다.
SIGMOD 2025에는 세 명의 석학이 keynote를 진행하였습니다. 먼저 Christos H. Papadimitriou 교수님이 How to Build a Brain?이라는 주제로, Margo Seltzer 교수님이 The Case for Collaboration (Everything a Database Person really needs to know about Machine Learning)이라는 주제로, Phil Bernstein 선생님이 Fifty Years of Transaction Processing Research이라는 주제로 발표하였습니다.
Seltzer 교수님의 발표는 논문 Exploring the Whole Rashomon Set of Sparse Decision Trees에 대한 소개를 중심으로 이루어졌는데, 이 연구는 모든 almost-optimal 모델들을 생성하는 방법론에 대한 연구이며, TimberTrek이라는 형태로 시각화된 바 있습니다. 사실 Seltzer 교수님은 스스로를 systems person으로 정체화하고 있으며 본래 file system에 대한 연구로 박사 학위를 받으셨습니다. 그렇다면 데이터베이스 전공자들이 ML 분야와 어떻게 협력할 수 있는지에 대해 직접적인 정답을 주셨을까요? 아쉽게도 그것은 아니었지만, Seltzer 교수님이 최근에 진행해 온 공동 작업들을 읽어본다면 ‘데이터’라는 관점에서 ML 문제를 깊이 생각해보아야 한다는 조언이 아닐까 싶습니다.
Bernstein 선생님은 트랜잭션 프로세싱 연구의 역사를 산 증인으로서 설명해주셨습니다(링크는 직접 올려주신 ppt slide입니다). 지금은 모든 것이 이미 교과서 속에 정립된 지식처럼 여겨지지만, 과거에는 아무 것도 없는 상태에서 한 가지씩 쌓아올려져 왔다는 점을 다시금 생각할 수 있었습니다. 데이터베이스 전공자라면 반드시 알고 있어야 할 내용인 만큼 시간을 들여 천천히 원칙 기반으로 배워 나가야 할 부분이라고 생각합니다.
인상깊었던 패널 토론은 이 글로 제기된 Where Does Academic Database Research Go From Here?이었습니다. 사실 어떤 정답을 듣기 위한 자리는 아니었고, 모두가 각자의 관점을 이야기할 수 있는 자리였습니다. 본질적으로는 DB가 더 이상 지금까지의 DB에 갇혀 있어서는 안 된다는 데에는 모두가 동의를 하는 것 같았습니다. 물론 세부적으로는 '밖'으로 나가서 데이터를 가진 사람들에게 다가가 그들의 문제를 우리의 관점으로 도와주자는 주장, 세상에 도움이 되는 역할을 하고 DB의 사용성, 접근성을 높이기 위해 노력하자는 주장, 우리가 잘 하는 것을 충분히 밖에 알려야 한다는 주장 등 다양한 이야기가 나왔습니다.
개인적으로는 DB가 오늘날 하나의 필수적이고 당연한 '인프라'로 여겨지고 있고, 수많은 사람들이 DB의 내부에 대한 이해 없이도 잘 사용하고 있는 상황에서, 이는 DB뿐 아니라 광의의 컴퓨터 시스템 연구자들이 공유하는 문제 의식이라고 생각합니다. 저는 패널 토의에서 DB 분야의 선도적인 연구자나 엔지니어들도 비슷한 고민을 하고 있다는 데에서 위안과 용기를 얻을 수 있었습니다.
학회 본 세션들을 전후로 열리는 워크샵에도 잠시 참석할 수 있었는데요, 우리 연구실에서는 Data Management on New Hardware (DaMoN) 워크샵을 참관하였습니다.
이 워크샵은 CPU, memory, SSD, GPU 등 다양한 하드웨어의 관점에서 데이터 관리를 다시 생각해보게 해주는데요, 이번에도 어김없이 Fetch Me If You Can: Evaluating CPU Cache Prefetching and Its Reliability on High Latency Memory나 A Wake-Up Call for Kernel-Bypass on Modern Hardware 같은 논문들이 눈길을 사로잡았습니다.
첫번째 논문은 여러 다른 CPU에서의 software prefetching이 보이는 양상을 탐구하였고, 두번째 논문은 현대 SSD/NIC의 속도를 오늘날의 커널 스택이 못 따라오고 있다는(무척이나 우리 발표 논문과 비슷한 논지의) 주장을 펼쳤습니다.
워크샵은 확실히 특정 주제에 대해 높은 식견과 많은 관심을 가진 사람들이 모이는 자리인 만큼, 전체 세션에서의 발표 대비 훨씬 많은 것을 남겨갈 수 있는 분위기였습니다.
흥미로운 논문들이 상당히 많이 발표되었지만, 모든 논문을 여기에 담을 수는 없는 만큼 기억에 남거나 직접 포스터 발표를 들으며 질의응답을 나눌 수 있었던 논문들을 위주로 몇 개만 정리해보려고 합니다(대표성 있는 논문들을 선택한 게 아니라서 편향되어 있을 수 있습니다).
벡터 데이터 관련 연구가 꽤 많이 보였습니다. 대부분은 그래프 연구에 기반한 성과들로 보이는데요, 중국 연구자들의 강세가 뚜렷했습니다. 다만 그래프 알고리즘의 연장선 상에 있는 연구들을 제외하고 보면 vector data layout 자체를 다룬 연구가 한 편 있었습니다. 바로 PDX: A Data Layout for Vector Similarity Search입니다.
이름부터 PAX를 떠올리게 하는 데이터 레이아웃이고 실제로도 그러합니다. 마치 columnar data를 저장하듯이 각 dimension 데이터를 연속적으로 저장하는 레이아웃인데요, SIMD 연산을 통해 fmadd 등을 수행할 때 별도의 reduction이 필요없고 data load/store의 횟수도 줄일 수 있다고 합니다. 아이디어만 놓고 보면 단순해 보일지 모르지만 여기에 dimension pruning에 관한 치밀한 검토를 바탕으로 PDX가 강력하게 사용될 수 있는 use case를 제시했습니다. 일독할 만한 논문이라 생각됩니다.
LLM과 관련된 논문들이 여럿 있었는데, 굳이 나누자면 LLM 자체를 잘 사용하기 위한 논문과 LLM을 DB분야에 응용하는 논문으로 나누어 볼 수 있겠습니다.
전자의 사례로는 SpareLLM: Automatically Selecting Task-Specific Minimum-Cost Large Language Models under Equivalence Constraint이 있었습니다. LLM을 활용한 여러 DB 연구들을 쏟아내고 있는 Immanuel Trummer 교수님 (Cornell University) 그룹에서 나온 논문입니다. LLM은 비용과 품질이 trade-off 관계를 이루기 마련인데, 사용자가 원하는 한도 내에서 품질을 유지하면서 LLM들을 혼합 사용하여 비용을 절감시키는 방법론을 다루고 있습니다.
개인적으로는 대단히 유용한 프레임워크라고 생각하였는데, 그 이유는 LLM 모델의 종류와 개수가 증가하고 있는 상황에서 비싼 돈 주고 좋은 모델을 쓸 지 보다 저렴하지만 품질이 낮은(정말 낮은지조차 의문이지만) 모델을 쓸 지 결정하기 어려웠던 경험을 해보았기 때문입니다. 다만 어떤 분들께는 한 가지 궁금증이 들 수 있겠습니다. 이 논문이 왜 DB 학회에 있을까요? 저자분과 직접 이야기해보았을 때, 저자분은 접근 방법 자체가 AQP (Approximate Query Processing)과 매우 유사한 측면이 있기 때문에 DB 연구자들에게도 익숙했을 것이라고 하였습니다. 실제 생각해보면 profiling을 통해 품질의 수준을 확인하고, 낮은 비용으로 결과를 도출하는 방식이 AQP와 매우 닮아있었습니다(실제로 저자분은 AQP 연구 경험이 있는 분이었습니다). 한편으로는 LLM이 오늘날의 data system에 점점 통합되고 있다는 점도 무시할 수 없을 것 같습니다.
제가 다음으로 재미있게 들었던 발표는 Pneuma: Leveraging LLMs for Tabular Data Representation and Retrieval in an End-to-End System으로, 후자에 속합니다. Data table discovery 문제를 RAG로 푸는 방식인데요, 개인적으로 최근에 수업에서 진행한 프로젝트와도 유사한 방식이라 잘 이해가 되는 측면이 있었습니다. LLM을 이용해서 data table에 대한 요약을 생성하고, 이 요약을 바탕으로 hybrid search를 수행하여 적절한 table을 retrieve하는 시스템입니다. 아마 Information retrieval이나 Table QA 등 분야에 이해가 있는 분들이라면 쉽게 이해할 수 있을 것입니다. 개인적으로 semantic한 메타데이터가 DBMS 내에서 할 수 있는 역할이 많다고 보기 때문에 주목했던 논문입니다.
Query Processing은 주제가 주제이니만큼 정말 많은 논문들이 있었습니다.
그 중 흥미롭게 들었던 발표는 Jens Dittrich 교수님의 Extending SQL to Return a Subdatabase이었습니다. 이 논문은 기존의 SQL 문의 실행 결과가 단일 table 만을 반환하도록 하는 것에서 기인하는 문제점을 해결하고 있습니다. 첫번째 문제는 단일 table 을 반환해야 하기 때문에 JOIN 의 결과에는 중복된 데이터들이 담기고, 따라서 query 실행 결과의 데이터 사이즈가 증가한다는 점입니다. 특히 network 를 통해 실행 결과를 받아보는 경우 이러한 데이터 사이즈의 증가는 latency 가 더욱 늘어날 수 있다는 문제점이 있습니다. 두번째는 query 결과에는 기존 database 의 schema 정보가 사라지게 된다는 점입니다.
이러한 문제를 해결하기 위해 SELECT RESULTDB 라는 키워드를 추가해 단일 table 이 아닌 여러개의 table 로 구성된 subdatabase 를 반환하도록 하는 것이 이 논문의 핵심 아이디어입니다. 언뜻 보기에는 JOIN 되지 않은 결과가 도출되기에 JOIN operation 도 수행할 필요가 없어지는 것 아닌가 하는 생각이 들어 질문하였으나, 결국에는 subdatabase 를 도출하기 위해서는 JOIN operation 이 필요하다는 결론에 도달하게 되었습니다.
이 논문이 특히 기억에 남는 이유는 포스터 발표 방식이 독특했기 때문입니다. 포스터에는 투자자가 사무실로 이동하기 위해 엘레베이터를 타는 짧은 시간동안 투자자를 설득한다는 것에서 기인한 elevator speech 를 활용했습니다. 이 elevator speech 에 as-is to-be 를 이해하기 쉽게 그려놓아 많은 사람들이 모이는 포스터 세션에서도 저를 포함한 많은 사람들이 발걸음을 멈추고 관심을 가졌습니다.
제가 다음으로 관심을 가졌던 논문은 연세대학교 김영석 교수님의 연구팀에서 발표한 SPID-Join: A Skew-resistant Processing-in-DIMM Join Algorithm Exploiting the Bank- and Rank-level Parallelisms of DIMMs 논문으로, processing in memory 로 JOIN 을 하고자 할 때의 비효율성을 해결하고 있습니다. JOIN key 를 각 in-DIMM processor (IDP) 에 할당하는 기존의 방식에서는 skewness 가 심할 경우 특정 IDP 에 병목이 생기게 되는 문제점을 해결하고 있습니다. 이를 해결하기 위해 각 IDP 에서 JOIN key 들을 중복해서 갖고 있고, radix partitioning 으로 각 rank/bank 에 부하를 분산하여 skewness 가 높은 상황에서도 효율적으로 작동하게 합니다. 이 논문은 누구나 생각해낼 수 있을 법한 문제이기에 어떻게 효과적으로 해결하였느냐가 더욱 중요한데, 그러한 점에서 흥미롭게 포스터 발표를 청취하였습니다.
한편, 논문 Data Chunk Compaction in Vectorized Execution은 최근 많은 analytical database engine에서 활용되는 벡터화된 실행 과정에서 상당히 ‘비어있는’ data chunk가 발생할 수 있다는 데에 착안한 연구입니다. 우리에게 익숙한 volcano 모델(소위 ‘pull’을 통해 데이터 튜플을 하나씩 뽑아 올려서 operator들이 처리하는 모델)과 달리 morsel-driven parallelism을 적용한 벡터화된 실행 방식에서는 데이터를 뭉텅이(‘chunk’)로 밀어내어(‘push’) 병렬적으로 처리합니다. 그런데 DuckDB와 같은 engine에서는 zero-copy 접근법을 쓰다보니 ‘뭉텅이’의 껍데기를 계속 유지해야 해서 under-full chunk가 발생합니다.
저자들은 이 문제에 대한 해법을 차근차근 제시하는데요, 중간에 learned approach도 하나 있지만 눈길을 끄는 것은 logical compaction이라고 부른 기법입니다. hash join을 수행함과 동시에 compaction도 할 수 있는 방식인데, hash join key가 있는 벡터에 대해서는 zero-copy로 logical reference를 조작해주고, join key가 아닌 벡터들(payload)은 자연스럽게 compaction해서 써주는 것입니다. 여기서 logical reference를 조작한다는 것은 기존에 사용되어 온 일종의 논리적 표시 벡터인 selection vector(이 벡터의 값을 통해 해당되는 튜플이 유효한지 무효한지를 표시)를 약간 개조함으로써 가능해진 일이었습니다.
간단하면서도 강력한 아이디어라는 점에서 인상적이었고, 또 흥미롭게도 DuckDB에 실제로 반영되었다고 합니다.
High-Performance Query Processing with NVMe Arrays: Spilling without Killing Performance는 최근 NVMe SSD의 높은 성능을 바탕으로 in-memory와 out-of-memory를 오갈 수 있는 query processing operator를 제안합니다. 기존에는 physical operator의 작동 중에 spill이 필요할지 여부를 미리 알 수 없기 때문에, 비교적 속도가 빠른 in-memory operator를 쓰고 메모리 부족으로 인한 crash 가능성을 감당하든지, 아니면 파티셔닝 등으로 out-of-memory 상황을 감당할 수 있는 operator를 쓰되 속도 저하를 감수해야 했습니다. 하지만 이 논문은 operator 내에서 in-memory로 작업하다가 메모리가 부족해지면 out-of-memory로 전환할 수 있는 adaptive materialization을 통해 operator 선택의 필요성 자체를 없앴습니다. 코드는 공개하지 않았지만 구현에 대해 상당히 상세하게 서술하고 있으며 평가 부분도 성실하게 진행된 만큼 오늘날 analytical database를 공부하면서 귀감이 될 만한 작업으로 보입니다. 개인적으로 관련 학기말 프로젝트를 진행해 본 적 있는 BtrBlocks의 저자 Maximilian Kuschewski가 1저자로 작업한 논문이라 더욱 흥미로웠습니다.
이번 학회에는 시대의 흐름에 따라 learned, AI-assisted 어프로치들이 꽤 많이 보였습니다. 그 중에서 좀 인상깊었던 query optimization과 관련된 접근(QURE: AI-Assisted and Automatically Verified UDF Inlining)이 하나 있어 소개하고자 합니다. 요약하자면, 제목 그대로 사용자가 작성한 UDF 기반의 쿼리를 SQL-only 쿼리로 바꾸어 기존 쿼리 시스템을 이용할 수 있게해서 최적화된 실행을 하도록 바꾸는 그런 연구입니다. 이걸 하기 위해 LLM을 사용해 UDF를 SQL로 바꾸는 방법을 설계해두었고, 나온 쿼리는 따로 검증을 해서 굉장히 높은 확률로 변환에 성공시킬 수 있다고 합니다.
재밌게도 스폰서 세션 중 snowflake에서 AI 기반의 UDF(https://docs.snowflake.com/en/sql-reference/functions/ai_filter)등을 활용해서 기존에는 하지 못했던 optimize 기회를 찾을 수 있지 않을까 하는 얘기를 했었는데, AI를 사용하지만 완전 반대의 접근으로 최적화 기회를 보는 것이 흥미로웠던 것 같습니다.
트랜잭션 분야에서 한 가지 재미있는 연구가 있었습니다. 실제 응용 프로그램들에 대한 분석을 통해 연구자들의 트랜잭션과 관련된 가정들이 얼마나 잘 맞는지를 평가한 것입니다. Are Database System Researchers Making Correct Assumptions about Transaction Workloads?는 github에 공개된 응용 프로그램들 중 ORM(Object-Relational Mapping)을 사용한 코드 베이스들을 분석하여, 1) 트랜잭션의 read/write set은 실행 전에 미리 알 수 있다고 가정해도 될지 2) 트랜잭션을 non-interactive하다고 보아도 될지에 대해 의견을 내놓습니다. Daniel Abadi (UMD) 교수님 연구진에서 나온 논문으로, 아주 쉽게 읽히는 논문은 아니지만 우연히 지나가다가 들은 구연 발표가 인상적이었습니다.
Indexing 발표 세션에서는 난양공대에서만 3편을 발표했는데, 그 중에서 인상깊은 논문(How to Grow an LSM-tree? Towards Bridging the Gap Between Theory and Practice) 하나를 소개합니다. 보통 LSM tree는 들어오는 데이터를 버퍼에 append하면서, 어떤 조건을 만족하면 레벨 수를 늘리거나 확장하는 방법으로 트리가 커지는 구조를 가지고 있습니다. 레벨 수를 여러개 늘려가면서 트리를 키우는 방식을 vertical 방식이라고 하고, 고정된 레벨에서 레벨이 가질 수 있는 데이터양을 키우는 것을 horizontal 방식으로 생각할 수 있습니다. 각각 read-write trade off가 있고 space overhead가 있는 등의 특징이 있는데, 이 연구에서는 두 방식으로 기존 시스템들을 분류하고 각각의 장단점을 분석해서 장점을 취하는 방향으로, 둘을 하이브리드 형태로 합치는 일명 “vertiorization” 방식의 LSM tree grow 방법을 제안했습니다. LSM tree가 많이 연구가 이루어진 주제이지만, 이런 식의 하이브리드 어프로치가 없었다는 점이 의외였던 것 같고, 무엇보다 기억에 남는 이유는 발표자분께서 질문에 대한 답이나 설명을 굉장히 명확하게 잘 해서 인상에 깊었던 것 같습니다.