<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Binary-Encoding on PolarBear</title><link>https://polar7bear.dev/tags/binary-encoding/</link><description>Recent content in Binary-Encoding on PolarBear</description><image><title>PolarBear</title><url>https://polar7bear.dev/og-default.jpg</url><link>https://polar7bear.dev/og-default.jpg</link></image><generator>Hugo -- 0.160.1</generator><language>ko-kr</language><lastBuildDate>Tue, 24 Feb 2026 00:12:30 +0900</lastBuildDate><atom:link href="https://polar7bear.dev/tags/binary-encoding/index.xml" rel="self" type="application/rss+xml"/><item><title>In-Memory DB 구현 9편 - 데이터 영속화하기</title><link>https://polar7bear.dev/posts/computer-science/in-memory-db-9/</link><pubDate>Tue, 24 Feb 2026 00:12:30 +0900</pubDate><guid>https://polar7bear.dev/posts/computer-science/in-memory-db-9/</guid><description>&lt;h2 id="들어가며"&gt;들어가며&lt;/h2&gt;
&lt;p&gt;현재까지 구축한 데이터베이스로는 서버를 종료하거나 장애가 발생하면 저장된 데이터는 전부 사라진다. 이번 포스팅에서는 메모리의 현재 상태를 바이너리 파일로 기록하는 SAVE 명령어를 구현한다. 이 과정에서 바이너리 인코딩, 직렬화 포맷 설계, 파일 I/O의 핵심 개념을 다뤄보자.&lt;/p&gt;
&lt;br&gt;
&lt;h2 id="영속성과-스냅샷"&gt;영속성과 스냅샷&lt;/h2&gt;
&lt;p&gt;데이터베이스에서 영속성(Persistence)이란, 데이터가 프로세스의 생명주기를 넘어서 유지되는 성질이다. 인메모리 데이터베이스는 기본적으로 영속성이 없다. 메모리는 휘발성 저장장치이기 때문이다.&lt;/p&gt;
&lt;p&gt;레디스는 두 가지 방식으로 영속성을 제공한다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RDB (Redis Database)&lt;/strong&gt; - 특정 시점의 메모리 상태를 통째로 파일에 덤프하는 스냅샷 방식이다. 파일이 작고 로딩이 빠르지만 마지막 스냅샷 이후의 데이터는 유실될 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AOF (Append Only File)&lt;/strong&gt; - 모든 쓰기 명령을 로그 파일에 순서대로 기록하는 저널링 방식이다. 데이터 유실이 거의 없지만 파일 크기가 크고 로딩이 느리다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;필자는 RDB 방식을 구현할 생각이다. &lt;code&gt;SAVE&lt;/code&gt; 명령을 실행하면 메모리의 모든 데이터를 바이너리 파일에 기록한다.&lt;/p&gt;</description></item></channel></rss>