컴퓨터와 디지털 · 데이터와 기록
SQLite — 앱의 기록은 어디에 모여 있을까
작은 데이터베이스가 정보를 정리하고 다시 찾는 방법

요리 기록 앱에 좋아하는 메뉴를 하나 저장한다. 다음에는 이름으로 찾고, 조리 시간이 짧은 것만 골라 본다. 화면에는 몇 번의 터치만 있지만 그 뒤에서는 기록을 정리하고 다시 꺼내는 일이 필요하다. 앱의 기억은 어떻게 관리될까.
SQLite는 이런 내부 저장에 쓰일 수 있는 작은 데이터베이스 기술이다. 여기서는 실제 특정 요리 앱을 분석한 것이 아니라 가상의 기록장을 통해 원리를 살펴본다. 코드를 배우지 않아도 저장된 자료에 질문을 던지는 방식이라는 점은 충분히 이해할 수 있다.
01. 한 줄씩 적는 것과 항목을 나누는 것
노트에 된장국, 20분이라고 적으면 사람은 이름과 시간을 알아서 나눈다. 컴퓨터에서 같은 일을 하려면 어떤 값이 이름이고 어떤 값이 조리 시간인지 정리해야 한다. 데이터베이스에서는 표의 열을 이용해 이런 항목을 구분할 수 있다.
한 행에 하나의 기록을 넣으면 비슷한 형식의 정보가 계속 쌓인다. 물론 어떤 항목을 둘지는 앱을 설계하는 사람의 선택이다. SQLite가 요리에 필요한 모든 정보를 스스로 정하는 것은 아니다. 잘 정리할 구조와 그 안에 넣을 내용은 사람이 마련해야 한다.
02. 표는 화면에 보이지 않아도 있다
사용자는 예쁜 카드나 목록으로 기록을 볼 수 있다. 하지만 내부의 저장 방식이 화면의 카드와 똑같은 모양일 필요는 없다. 기록을 표로 관리하고 필요한 결과만 꺼내 원하는 화면으로 보여 줄 수 있다.
그래서 데이터베이스라는 말이 붙었다고 항상 커다란 표 화면을 직접 다루어야 하는 것은 아니다. 많은 경우 사용자는 저장과 검색 버튼만 만난다. 눈에 보이는 디자인과 그 뒤의 정보 조직은 서로 다른 역할을 맡고 있다.
03. 기록을 찾는 일도 질문으로 표현한다
데이터베이스에는 어떤 기록을 원하는지 질의할 수 있다. 예를 들어 조리 시간이 20분 이하인 메뉴를 찾아 달라고 하는 식이다. 실제 프로그램은 이를 SQL이라는 언어의 정해진 형태로 전달할 수 있다.
여기서 중요한 것은 문법을 외우는 일이 아니다. 저장한 모든 기록을 사람에게 보여 주고 하나씩 골라내게 하는 대신, 필요한 조건을 데이터에 질문할 수 있다는 점이다. 기록이 많아질수록 이런 정리와 질문의 방식이 사용 경험에 영향을 준다.
04. 별도의 서버 없이 앱 안에서 쓰기
파이썬의 공식 문서는 SQLite를 별도의 서버 프로세스가 필요하지 않은 가벼운 디스크 기반 데이터베이스로 소개한다. 데이터베이스를 떠올릴 때 반드시 멀리 떨어진 큰 서버실부터 상상할 필요는 없다는 뜻이다.
앱이 자체 기록을 관리하는 데 이를 사용할 수 있다. 데이터와 필요한 기능이 기기에 준비되어 있다면 인터넷이 없는 상황에서도 일부 기능을 제공하는 구조를 만들 수 있다. 다만 모든 앱이 SQLite를 쓰거나 언제나 오프라인으로 작동한다는 말은 아니다. 앱의 설계와 다른 서비스 의존성에 따라 달라진다.
05. 바꾸었다고 모두 확정된 것은 아니다
데이터를 고치는 과정에는 여러 변경을 하나의 작업 단위로 다루는 경우가 있다. 트랜잭션이라는 말이다. 준비한 변경을 확정하거나, 아직 확정하지 않은 작업을 되돌리는 기능을 이용할 수 있다. 문서의 초안을 확인한 뒤 저장하는 경험과 닮은 부분이 있다.
그러나 이 비유가 프로그램의 모든 동작을 설명하지는 않는다. 어떤 시점에 무엇을 확정할지는 사용하는 방식과 설정에 관계가 있다. 중요한 것은 변경을 정리하고 적용할 규칙이 있으며, 화면에 한 번 값을 넣는 행위와 내부 기록을 일관되게 관리하는 일이 같지 않다는 점이다.
06. 하나의 정보가 여러 자리에 필요할 때
요리 이름과 식재료 정보를 각각 관리하고 관계를 맺는 방식도 생각할 수 있다. 같은 재료의 이름을 매번 다른 철자로 적는 문제를 줄이고, 어떤 메뉴에 쓰였는지 찾아볼 수 있다. 이것은 데이터 구조를 설명하기 위한 가상 예다.
실제 앱에서 표를 어떻게 나눌지는 자료의 성격과 필요에 따라 정한다. 모든 기록을 잘게 나누는 것이 언제나 최선은 아니고, 한 표에 전부 적는 것이 언제나 간편한 것도 아니다. 잘 쓰는 데이터베이스 뒤에는 무엇을 같게 보고 어떤 관계를 남길지에 대한 판단이 있다.
07. 저장과 공유, 백업은 다른 일이다
내 기기에 기록이 있다는 사실만으로 다른 기기에도 자동으로 나타나는 것은 아니다. 여러 기기에서 함께 쓰려면 동기화 같은 별도의 설계가 필요하다. 데이터베이스 기술의 이름 하나가 이런 모든 서비스를 대신하지는 않는다.
또 파일에 기록이 있다는 것과 안전한 백업이 따로 있다는 것도 구분해야 한다. 파이썬 공식 문서에는 데이터베이스 백업 기능도 설명되어 있다. 이는 백업을 마련할 수 있는 방법이 있다는 뜻이지, SQLite를 사용하는 모든 앱이 같은 보관 정책을 자동으로 갖는다는 뜻은 아니다.
08. 작은 기록을 오래 쓰게 만드는 구조
함께 실은 AI 삽화는 요리 노트와 기기를 놓고 기록을 정리하는 장면이다. 실제 SQLite의 화면이나 특정 앱의 기능을 재현하지 않았다. 조용히 자료를 모으고 다시 찾는 일의 분위기를 담았다.
SQLite의 재미는 크고 복잡한 기술이 있어야만 데이터베이스라는 생각을 바꾸어 준다는 데 있다. 작은 기록에도 구조와 질문, 변경을 다루는 약속이 필요하다. 다음에 앱에서 오래전 저장한 항목을 찾으면 그 간단한 결과 뒤에 정보를 정리해 둔 방식도 잠깐 떠올려 볼 수 있다.
이야기의 바탕이 된 자료
- Python 공식 문서 — SQLite와 데이터 저장·질의·트랜잭션 ↗확인일 2026-10-30
별도 서버 프로세스가 필요 없는 가벼운 디스크 기반 DB·앱 내부 저장 · 표·열·행·질의·조건 검색 및 변경의 commit/rollback·백업 기능 · 가상의 요리 앱 예시를 실제 제품 분석으로 제시하지 않음. 동기화·백업의 자동 보장을 주장하지 않음