Indexed Database API
1. 개요
Indexed Database API(IndexedDB)는 웹 브라우저 내에서 트랜잭션 방식으로 데이터를 저장하고 관리할 수 있는 API이다. 파이어폭스 4, 크롬 11, 인터넷 익스플로러 10, 사파리 8, 엣지 12 버전부터 지원이 시작되었다. 이전에는 Web SQL 데이터베이스가 사용되었으나 파이어폭스의 반대로 표준화되지 못하고 IndexedDB로 대체되었다. IndexedDB는 NoSQL 데이터베이스와 유사하게 JSON 객체를 저장하며, 2015년 1.0, 2018년 2.0 버전이 W3C 권고안으로, 2021년 3.0 버전이 작업 초안으로 발표되었다. IndexedDB는 브라우저 내에서 실행되어 보안 계층으로 인해 성능 저하가 있을 수 있으며, 북마크, 이메일 등 웹 애플리케이션에 활용된다.
| 종류 | NoSQL 데이터베이스 |
|---|
| 이름 | Indexed Database API |
|---|---|
| 다른 이름 | 색인화된 데이터베이스 API |
| 약칭 | IndexedDB |
| 상태 | 첫 번째 공개 작업 초안 |
|---|---|
| 버전 | 3.0 |
| 버전 날짜 | 2021년 3월 11일 |
| 시작 년도 | 알 수 없음 |
|---|---|
| 최초 게시 | 알 수 없음 |
| 조직 | W3C 구글 마이크로소프트 모질라^ 오라클^ |
| 위원회 | 웹 애플리케이션 워킹 그룹 |
| 편집자 | Ali Alabbas^ Joshua Bell^ |
| 이전 편집자 | Nikunj Mehta Jonas Sicking Eliot Graff Andrei Popescu Jeremy Orlow |
| 기반 표준 | HTML DOM 파일 API Infra Standard JSON 스토리지 표준 |
| 관련 표준 | HTTP 쿠키 Web SQL Database |
| 웹사이트 | IndexedDB 공식 웹사이트 |
-
데이터베이스 API -
임베디드 SQL
임베디드 SQL은 호스트 프로그래밍 언어 내에 SQL 문을 삽입하여 데이터베이스와 상호 작용하는 기술로, 데이터베이스 액세스를 표준화하지만 보안 취약점과 이식성 저하의 단점도 가진다. -
데이터베이스 API -
ODBC
ODBC는 응용 프로그램이 데이터베이스 관리 시스템에 접근하도록 하는 표준 API로서, 서로 다른 데이터베이스에 대한 접근 방식을 표준화하여 응용 프로그램이 데이터베이스 종류에 관계없이 동일한 코드로 데이터에 접근하도록 하며, 드라이버 관리자와 데이터베이스 시스템에 특화된 명령으로 변환하는 드라이버로 구성된다. -
W3C 표준 -
HTML
HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다. -
W3C 표준 -
타임드 텍스트
타임드 텍스트는 영상이나 오디오 콘텐츠에 시간 정보를 담아 표현되는 텍스트로, 자막이나 캡션 등에 활용되며 TTML, WebVTT 등의 표준이 존재한다.
2. 역사
IndexedDB는 파이어폭스 4, 구글 크롬 11, 인터넷 익스플로러 10, 사파리 8, 마이크로소프트 엣지 12 버전에 지원이 추가되었다.
Web SQL 데이터베이스는 애플이 개발한 이전 API였다. 그러나 파이어폭스는 SQLite의 특징을 코드화한다는 이유로 표준이 되는 것에 반대하며 지원을 거부했다. 그 결과, Web SQL 데이터베이스는 IndexedDB에 밀려 더 이상 사용하지 않게 되었다.
IndexedDB 1.0은 2015년 1월 8일에 W3C 권고안이 되었다. IndexedDB 2.0은 2018년 1월 30일에 W3C 권고안이 되었다. IndexedDB 3.0은 2021년 3월 11일에 최초 공개 작업 초안으로 출시되었으며, 2024년 12월 3일 현재 작업 초안 상태이다.
2.1. 개발 배경
IndexedDB에 대한 지원은 파이어폭스 4 버전, 구글 크롬 11 버전, 인터넷 익스플로러 10 버전, 사파리 8 버전, 및 마이크로소프트 엣지 12 버전에 추가되었다.
Web SQL 데이터베이스는 애플이 개발한 이전 API였으나, 파이어폭스는 SQLite의 특징을 코드화할 것이라는 이유로 표준이 되는 것에 반대하며 지원을 거부했다. 따라서 Web SQL 데이터베이스는 IndexedDB에 밀려 더 이상 사용하지 않게 되었다.
IndexedDB 1.0은 2015년 1월 8일에 W3C 권고안이 되었다. IndexedDB 2.0은 2018년 1월 30일에 W3C 권고안이 되었다. IndexedDB 3.0은 2021년 3월 11일에 최초 공개 작업 초안으로 출시되었으며, 2024년 12월 3일 현재 작업 초안으로 남아 있다.
2.2. Web SQL 데이터베이스와의 관계
Web SQL 데이터베이스는 애플이 개발한 이전 API였다. 그러나 파이어폭스는 이에 대한 지원을 거부했으며, SQLite의 특징을 코드화할 것이라는 이유로 표준이 되는 것에 반대했다. 따라서 IndexedDB를 선호하여 더 이상 사용하지 않게 되었다.
Safari 3.1, Google Chrome 4, Opera 10.50은 SQLite를 기반으로 한 또 다른 유사한 클라이언트 측 데이터베이스인 Web SQL Database도 구현했다. 2010년 11월 18일, W3C는 Web SQL Database를 폐기 사양으로 지정했다. 파이어폭스 개발자는 파이어폭스에서 Web SQL Database를 구현하지 않은 것은 의도적인 것이며, SQLite를 기반으로 하여 중립성이 결여된 문제가 있는 사양이므로 다른 사양(Indexed DB)이 필요하다고 공언했다.
2.3. 버전별 발전 과정
IndexedDB는 파이어폭스 4 버전, 구글 크롬 11 버전, 인터넷 익스플로러 10 버전, 사파리 8 버전, 및 마이크로소프트 엣지 12 버전에 추가되었다.
IndexedDB 이전에는 Web SQL 데이터베이스라는 API가 존재했다. 이 API는 애플이 개발했지만, 파이어폭스는 SQLite의 특징을 코드화한다는 이유로 표준이 되는 것에 반대하며 지원을 거부했다. 결국 Web SQL 데이터베이스는 IndexedDB에 밀려 더 이상 사용하지 않게 되었다.
IndexedDB 1.0은 2015년 1월 8일에 W3C 권고안이 되었다. IndexedDB 2.0은 2018년 1월 30일에 W3C 권고안이 되었다. IndexedDB 3.0은 2021년 3월 11일에 최초 공개 작업 초안으로 출시되었으며, 현재 작업 초안으로 남아 있다.
Indexed DB는 Internet Explorer 10, Mozilla Firefox 4, Google Chrome 11에서 부분적으로 구현되었다. Opera는 Chromium 기반으로 변경된 Opera 15의 안정 버전이 2013년 7월에 출시된 결과, Indexed DB가 구현되었다. 애플은 2014년 6월 2일, iOS 8.0(같은 해 9월 17일 출시)과 OS X 10.10 Yosemite(같은 해 10월 17일 출시)의 표준 브라우저인 Safari 8.0에 Indexed DB가 구현될 것을 발표했다. 2015년 7월 29일에 출시된 Windows 10의 표준 브라우저인 Microsoft Edge에는 Internet Explorer 10의 Indexed DB 기능을 개선한 것이 구현되었다.
오픈 소스 참조 구현도 테스트 및 실험을 위해 존재한다.
Safari 3.1, Google Chrome 4, Opera 10.50은 Web SQL Database라는 SQLite를 기반으로 한 또 다른 유사한 클라이언트 측 데이터베이스도 구현했다. 2010년 11월 18일, W3C는 Web SQL Database를 폐기 사양으로 지정했다. Firefox 개발자는 Firefox에서 Web SQL Database를 구현하지 않은 것은 의도적인 것이며, 문제가 있는 사양(사양이 SQLite를 기반으로 하여 중립성이 결여됨)이므로, 다른 사양(즉, Indexed DB)이 필요하다고 공언하고 있다.
3. 기능
IndexedDB는 브라우저 내에 임베디드되는 트랜잭셔널 데이터베이스이다. 이 데이터베이스는 NoSQL 데이터베이스인 몽고DB나 카우치DB와 비슷하게 JSON 객체의 컬렉션 개념으로 정리된다. 각 객체는 삽입 중에 생성되는 키로 식별되며, 인덱싱 시스템은 저장된 객체로의 접근을 최적화한다.
4. 구현
Indexed DB는 Internet Explorer 10, Mozilla Firefox 4, Google Chrome 11에서 부분적으로 구현되었다. Opera는 Chromium 기반으로 변경된 Opera 15의 안정 버전이 2013년 7월에 출시된 결과, Indexed DB가 구현되었다. 애플은 2014년 6월 2일, iOS 8.0(같은 해 9월 17일 출시)과 OS X 10.10 Yosemite(같은 해 10월 17일 출시)의 표준 브라우저인 Safari 8.0에 Indexed DB가 구현될 것을 발표했다. 2015년 7월 29일에 출시된 Windows 10의 표준 브라우저인 Microsoft Edge에는 Internet Explorer 10의 Indexed DB 기능을 개선한 것이 구현되었다.
또한, 오픈 소스 참조 구현이 테스트 및 실험을 위해 존재한다.
Safari 3.1, Google Chrome 4, Opera 10.50은 Web SQL Database라는 SQLite를 기반으로 한 또 다른 유사한 클라이언트 측 데이터베이스도 구현했다. 2010년 11월 18일, W3C는 Web SQL Database를 폐기 사양으로 지정했다. Firefox 개발자는 Firefox에서 Web SQL Database를 구현하지 않은 것은 의도적인 것이며, 문제가 있는 사양(사양이 SQLite를 기반으로 하여 중립성이 결여됨)이므로, 다른 사양(즉, Indexed DB)이 필요하다고 공언하고 있다.