본문 바로가기

DB/indexedDB

IndexedDB

IndexedDB

  • Web Browser Storage이다.
  • Transaction Database를 사용하며, Key : Value 로 데이터를 관리한다.
  • Transaction Model을 따르며, 모든 변경은 Transaction 안에서 일어난다.
  • Transaction내에서 오류가 생긴다면 모든 변경사항을 폐기하고, 이전 상태로 돌아간다.
  • same-origin policy를 따른다. ( http 와 https 는 다른 indexedDB를 이용한다.)

IndexedDB 구조

  • Database > Object Store > Object 의 구조를 갖는다.
  • Object 를 Object Store로 그룹화한다.
  • Object Store를 DataBase로 그룹화한다.

IndexedDB 구조 이미지
IndexedDB 구조(출처 : 생활코딩)


IndexedDB 요소

  • Database
    • Database를 구축한다.
    • 브라우저는 N개의 Database를 가질 수 있다.
    • Database는 N개의 Object Store를 가질 수 있다.
    • 버전은 숫자 리터럴을 사용한다.
    • indexedDB.open('DataBase식별자', 버전) ;
  • Object Store
    • 데이터를 저장하는 공간이다.
    • 고유한 이름을 갖는다.
    • N개의 레코드를 가질 수 있다.
    • 레코드는 Key에 따라 오름차순으로 정렬된다.
    • createObjectStore('ObjStore식별자', { keyPath: 'KeyPath식별자' , autoIncrement : true } ) ;
    • keyPath 와 autoIncrement 를  설정하면 in-line key를 사용한다.
    • keyPath 와 autoIncrement 를  생략하면 out-line key를 사용한다.
  • Transaction
    • IndexedDB의 모든 API 작업은 transaction contect 내에서 이루어진다.
    • transaction 외부에서 indexedDB API를 호출하면 에러가 발생한다.
    • transaction 내부에서 작업이 실패하면 해당 작업 전의 상태로 돌아간다.
    • transaction('ObjectStore', '모드' , '옵션');
    • ObjectStore : 문자열/배열
      즉, 여러 오브젝트 저장소에 액세스 하는 경우 배열로 작성할 수 있다.
    • 모드 : 액세스 유형을 선택한다. 기본값은 'readonly' 이다.
      readonly : 읽기
      readwrite : 수정
    • 옵션 : 성능 및 전력에 영향을 미치는 옵션이다. 기본 값은 'default'이다.
      default : 기본 값
      strict : (데이터 손실 위험) 데이터 손실 위험을 줄인다
      relaxed :  (속도 성능) 캐시 또는 빠르게 변경되는 레코드와 같은 임시 데이터
  • Curser
    • 여러 레코드를 순회 또는 반복할 수 있다.
  • Index
    • Object Store를 참조한다.

 

'DB > indexedDB' 카테고리의 다른 글

IndexedDB 예제  (0) 2022.05.26