일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- it
- javascript
- tool
- 요리
- IntelliJ
- 맛집
- jenkins
- Oracle
- Gradle
- devops
- db
- redis
- Spring
- Design Patterns
- jsp
- ReactJS
- Git
- Spring Boot
- laravel
- AWS
- java
- Web Server
- springboot
- ubuntu
- Spring Batch
- elasticsearch
- php
- MySQL
- linux
- JVM
Archives
- Today
- Total
아무거나
indexedDB 본문
반응형
- indexedDB: WebStorage 로 커버가 불가능한 복잡한 데이터 구조 또는 많은 데이터를 저장하고 관리해야 하는 경우에 사용하며 메일 클라이언트, 할 일 목록 등 작업에 유용
- 특징
- javascript 기반의 객체지향 데이터 베이스 즉, javascript 가 인식할 수 있는 자료형과 객체를 저장할 수 있다. (localStorage 는 String 형태만 저장 가능)
- 트랜잭션을 사용하며 Key-Value 데이터 베이스이다.
- 비동기 API 이다.
- 색인을 사용하여 복잡한 쿼리를 가능하게 하여 검색 성능을 향상
- 장기 데이터 저장, 브라우저 재 시작 및 시스템 충돌 방지 기능을 제공
- 그 외
- localStorage 에 비해 속도가 느림(Trade-Off)
- 사용자가 수동으로 삭제하지 않는 이상 데이터가 계속 남아있음
- 사용법
- indexed DB 를 사용한 예제
// IndexedDB 데이터베이스를 열기 var request = indexedDB.open('myDatabase', 1); // 데이터베이스 버전 업그레이드 이벤트 처리 request.onupgradeneeded = function(event) { var db = event.target.result; // 객체 저장소 생성 var objectStore = db.createObjectStore('friends', { keyPath: 'id', autoIncrement: true }); // 인덱스 생성 objectStore.createIndex('name', 'name', { unique: false }); }; // 데이터 추가 함수 function addFriend() { // 데이터베이스에 연결 request.onsuccess = function(event) { var db = event.target.result; // 트랜잭션 시작 var transaction = db.transaction(['friends'], 'readwrite'); // 객체 저장소 열기 var objectStore = transaction.objectStore('friends'); // 'patric' 데이터 추가 var request = objectStore.add({ name: 'patric' }); // 요청 성공 및 실패 시 이벤트 처리 request.onsuccess = function(event) { console.log('Successfully added patric to friends!'); }; request.onerror = function(event) { console.error('Error adding patric:', event.target.error); }; }; } // 함수 호출 addFriend();
- dexie.js 를 사용한 예제 (indexed DB 의 Wrapper 라이브러리 -> 기존 indexed DB 의 코드 복잡성을 간소화 하기 위해 사용)
// Dexie.js를 사용하여 데이터베이스를 생성합니다. var db = new Dexie('myDatabase'); // 데이터베이스 스키마를 정의합니다. db.version(1).stores({ friends: '++id, name' // '++id'는 자동으로 증가하는 기본 키를 의미합니다. }); // 'patric'이라는 데이터를 저장하는 함수를 정의합니다. function addFriend() { db.friends.add({ name: 'patric' }).then(function() { console.log('Successfully added patric to friends!'); }).catch(function(error) { console.error('Error adding patric:', error); }); } // 함수 호출 addFriend();
- indexed DB 를 사용한 예제
- 특징
반응형
'Javascript & HTML & CSS > HTML' 카테고리의 다른 글
모바일 키패드에서 숫자만 입력 가능하며 type=password 와 같이 만드는법 (0) | 2020.04.06 |
---|---|
input file 찾아보기 버튼 image로 변경 (0) | 2019.12.24 |
[html5 / html4] 모바일웹 이미지/갤러리 제어 accept 속성 (0) | 2019.12.24 |
html에서 카메라 호출하는 태 (0) | 2019.12.24 |
파일 첨부 시 특정 확장자만 보이게 하기 (0) | 2019.12.24 |
Comments