💾 웹 브라우저에서 데이터를 저장하는 방법
웹 브라우저에서 데이터를 저장하는 방법에는 여러 가지가 있어요. 대표적으로 IndexedDB, Dexie.js, localStorage, cookie가 있죠. 각각의 개념과 차이점을 정리해 볼게요.
저장 방식 | 특징 | 용량 | 동기/비동기 | 데이터 타입 | 서버 전송 |
---|---|---|---|---|---|
IndexedDB | 대용량 데이터 저장 가능, 트랜잭션 지원 | 수백 MB~GB | 비동기 | 객체 저장 가능 | ❌ |
Dexie.js | IndexedDB를 쉽게 사용할 수 있도록 해주는 라이브러리 | 수백 MB~GB | 비동기 | 객체 저장 가능 | ❌ |
localStorage | 간단한 키-값 저장 방식 | 5MB | 동기 | 문자열만 가능 | ❌ |
Cookie | 서버와 자동으로 데이터 주고받음, 만료기간 설정 가능 | 4KB | 동기 | 문자열만 가능 | ⭕ |
🏗 IndexedDB: 대용량 데이터를 저장할 때!
IndexedDB는 웹 브라우저에서 제공하는 데이터베이스로, 대량의 구조화된 데이터를 저장할 수 있어요. 트랜잭션을 지원하고 비동기로 작동해서 성능 면에서도 좋죠.
// IndexedDB 사용 예제
let request = indexedDB.open("MyDatabase", 1);
request.onupgradeneeded = function(event) {
let db = event.target.result;
db.createObjectStore("users", { keyPath: "id" });
};
✅ 장점:
- 대량의 데이터 저장 가능 (MB~GB 수준)
- 객체 저장 지원
- 트랜잭션을 통해 데이터 무결성 유지 가능
❌ 단점:
- API가 복잡함 (초보자에게 부담)
- 단순한 데이터 저장에는 과할 수 있음
🔧 Dexie.js: IndexedDB의 복잡함을 줄이자!
IndexedDB가 너무 복잡하다면? Dexie.js를 쓰면 돼요! IndexedDB를 더 쉽게 사용할 수 있도록 해주는 라이브러리입니다.
// Dexie.js 사용 예제
var db = new Dexie("MyDatabase");
db.version(1).stores({
users: "++id, name"
});
db.users.add({ name: "Alice" })
.then(() => console.log("User added!"))
.catch(error => console.error("Error:", error));
✅ 장점:
- IndexedDB보다 코드가 간결함
- 자동화된 트랜잭션 관리
- Promise 기반 API로 사용 편리
❌ 단점:
- IndexedDB에 대한 기본적인 이해가 필요함
🗃 localStorage: 간단한 데이터 저장용
localStorage는 브라우저에 키-값 형태의 데이터를 저장하는 간단한 방식이에요. 하지만 문자열만 저장 가능하고, 용량 제한(5MB)이 있다는 점이 단점이죠.
// localStorage 사용 예제
localStorage.setItem("username", "JohnDoe");
console.log(localStorage.getItem("username")); // "JohnDoe"
localStorage.removeItem("username");
✅ 장점:
- API가 간단해서 쉽게 사용 가능
- 세션과 관계없이 영구 저장
❌ 단점:
- 문자열만 저장 가능 (JSON으로 변환해야 객체 저장 가능)
- 동기 방식이라 저장 속도가 느릴 수 있음
- 용량이 5MB로 제한됨
🍪 Cookie: 서버와 데이터를 주고받아야 한다면?
Cookie는 서버와 클라이언트 간 상태 정보를 저장하고 주고받는 용도로 사용돼요. 하지만 용량이 4KB로 매우 제한적이고, 보안 이슈가 있을 수 있어요.
// Cookie 설정 예제
document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2025 23:59:59 GMT; path=/";
✅ 장점:
- 서버와 자동으로 데이터 교환 가능
- 만료 기한 설정 가능
❌ 단점:
- 용량 제한 (4KB)
- 보안 문제 (XSS 공격 등에 취약)
- 성능 문제 (모든 요청마다 자동 전송됨)
🔎 어떤 저장 방식을 선택해야 할까?
사용 목적 | 추천 저장 방식 |
---|---|
대용량 데이터 저장 | IndexedDB, Dexie.js |
간단한 설정값 저장 | localStorage |
서버와 상태 유지 | Cookie |
오프라인 웹앱 개발 | IndexedDB, Dexie.js |
💡 결론!
- 단순한 데이터 저장? localStorage
- 서버와 상태 공유? Cookie
- 대량 데이터 처리? IndexedDB (복잡하면 Dexie.js 활용)
각각의 기술을 상황에 맞게 잘 사용하면 브라우저에서 데이터를 효과적으로 관리할 수 있어요! 🚀
'뉴스' 카테고리의 다른 글
구글 에이전트 리뷰: 진짜 'AI 비서'의 탄생인가? (0) | 2025.02.08 |
---|---|
Next.js + TypeScript Boilerplate: 왜 만들고 어떻게 쓰나? (0) | 2025.02.07 |
2025년 해외투자 펀드 세제 변경, 우리한테 무슨 의미일까? ISA를 해지해야 할까요? (0) | 2025.02.05 |
빗썸 가입하고 비트코인 투자하는 방법 (feat. 코린이도 따라할 수 있음) (0) | 2025.02.04 |
1년치 수익형 블로그 키워드 준비 전략: 캘린더 활용법 (0) | 2025.02.03 |