<?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>Persistence on PolarBear</title><link>https://polar7bear.dev/tags/persistence/</link><description>Recent content in Persistence 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>Wed, 25 Feb 2026 16:16:22 +0900</lastBuildDate><atom:link href="https://polar7bear.dev/tags/persistence/index.xml" rel="self" type="application/rss+xml"/><item><title>In-Memory DB 구현 10편 - Decoder와 Checksum으로 영속화 된 데이터 불러오기</title><link>https://polar7bear.dev/posts/computer-science/in-memory-db-10-decoder-checksum/</link><pubDate>Wed, 25 Feb 2026 16:16:22 +0900</pubDate><guid>https://polar7bear.dev/posts/computer-science/in-memory-db-10-decoder-checksum/</guid><description>&lt;h2 id="들어가며"&gt;들어가며&lt;/h2&gt;
&lt;p&gt;이전 포스팅에서 구현 했던 Encoder와 SAVE 명령으로 데이터가 바이너리 파일로 저장되어 생성되긴 하지만 아직 복원 기능이 없어서 서버를 재시작하면 저장된 바이너리 파일이 있어도 해당 바이너리 파일을 역직렬화하고 로드하는 기능은 구현하지 않았기때문에 데이터는 전부 사라진다. 이번 포스팅에서는 바이너리 파일을 읽어 메모리 자료구조로 복원하는 Decoder를 구현하고 CRC32 Checksum으로 파일이 손상되지 않았는지 검증하는 메커니즘을 추가해보자. 서버 시작 시 자동으로 RDB 파일을 로드하여 영속성 사이클을 완성하는 것이 최종 목표다.&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;h2 id="데이터-무결성"&gt;데이터 무결성&lt;/h2&gt;
&lt;p&gt;데이터 무결성은 데이터가 저장, 전송, 처리되는 전 과정에서 의도하지 않은 변경이 발생하지 않았음을 보장하는 성질이다. 데이터베이스 이론에서는 ACID의 Consistency와 연결되지만 여기서 다루는 것은 더 낮은 레벨의 문제인 &lt;strong&gt;파일 자체가 물리적으로 온전한가&lt;/strong&gt;에 대한 것이다.&lt;/p&gt;</description></item><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>