웹 SQL 지원 중단 및 삭제

Web SQL Database API를 사용하면 사용자의 컴퓨터에 구조화된 방식으로 데이터를 저장 (내부적으로는 SQLite 데이터베이스 엔진), 즉 2009년 4월 도입2010년 11월에 폐기되었습니다. Safari를 구동하는 WebKit에서 구현되었고, Blink 엔진 (Chrome 구동), Gecko (Firefox 지원)는 이 기능을 구현하고 WebKit에서는 2019년에 이를 삭제했습니다.

W3C (World Wide Web Consortium) 자극적으로 웹 데이터베이스를 채택해야 하는 조직도 웹 스토리지 API 익스플로잇과 같은 localStoragesessionStorage, 또는 IndexedDB. 이러한 기술은 키-값 저장소 및 비정형 데이터를 구조화할 수 있지만, 구조화되지 않은 데이터 애널리스트와 같은 사용할 수 있습니다 사람들이 웹에서 SQL을 사용하려는 데에는 이유가 있습니다.

웹 SQL 지원 중단 및 삭제 단계

  • [ 완료] 서드 파티 컨텍스트에서 웹 SQL은 지원 중단 및 삭제되었습니다. Chromium 97 ( 2022년 1월 4일).
  • [ 완료] 안전하지 않은 컨텍스트의 웹 SQL 액세스가 현재 지원 중단됨 Chromium 105 ( 경고 메시지가 Chrome DevTools Issue 패널에 표시되었습니다.

비보안 컨텍스트의 웹 SQL 지원이 중단된다는 경고가 표시된 Chrome DevTools 문제 패널

  • [ 완료] 안전하지 않은 컨텍스트에서의 웹 SQL 액세스가 더 이상 작동하지 않음 Chromium 110부터 2022년 1월 4일). 이 기능을 계속 사용하기 위한 기업 정책은 다음에서 제공됩니다. Chromium 110 ( 2022년 1월 4일)에서 Chromium 123으로 변경합니다. 2022년 1월 4일).
  • [ 완료] 모든 컨텍스트의 웹 SQL 액세스가 현재 지원 중단됨 Chromium 115 ( 경고 메시지가 표시됨 오류 해결 방법을 확인하세요
  • [ 완료] 가 지원 중단 기능 트라이얼에서 웹 SQL 계속 사용은 Chromium 117부터 사용할 수 있었습니다. 2022년 1월 4일)부터 Chromium 123 ( 2022년 1월 4일). 지원 중단 기능 트라이얼에 대한 자세한 내용은 다음을 참고하세요. 오리진 트라이얼 시작하기
  • [ 완료] 모든 컨텍스트에서 웹 SQL 액세스를 더 이상 사용할 수 없음 Chromium 119에서 가져옵니다.

다음 단계

소개에서 언급했듯이 웹 스토리지 API 익스플로잇과 같은 localStoragesessionStorage, 또는 IndexedDB 표준이 많은 경우에 좋은 대안이지만, 모든 경우에 사용되는 것은 아닙니다.

스토리지를 웹 개발자에게 맡기는 이유

Wasm의 출현과 함께 SQL 또는 NoSQL 솔루션이 웹에 등장할 수 있게 되었습니다. 예시 DuckDB-Wasm이고 다른 하나는 absurd-sql 이러한 창작물을 기반으로 개발자 커뮤니티가 작업을 반복하고 새 스토리지를 만들 수 있다고 생각합니다. 더 빠르고 뛰어난 솔루션을 제공합니다.

웹 SQL만 삭제할 계획은 없습니다. 실제로 우리는 그것을 무언가를 오픈 소스 커뮤니티에서 유지 관리하며, 컨테이너 이미지를 수정이나 새로운 기능을 도입하는 부담 없이 원하는 대로 업데이트할 수 있습니다. 브라우저에 바로 삽입해야 합니다. 우리의 목표는 개발자가 배포할 수 있습니다

게다가 이 사례가 AI를 통한 새로운 인터넷 생태계의 오픈소스 데이터베이스를 살펴보겠습니다. The 출시 버전: 파일 시스템 액세스 핸들 마지막으로, Google Cloud에서 제공하는 커스텀 스토리지 솔루션에 대한 빌드되었습니다.

Web SQL이 지원 중단되는 이유

지속 가능성 및 보안 문제

웹 SQL 사양을 지속 가능한 방식으로 구현할 수 없으며, 이로 인해 혁신과 새로운 기능을 제공합니다. 표준의 마지막 버전은 문자 그대로 Google은 "사용자 에이전트는 Sqlite 3.6.19에서 지원되는 SQL 언어를 구현합니다.

SQLite가 처음부터 악성 SQL 문을 실행하도록 설계되었지만, 웹 SQL을 구현하는 것은 브라우저는 정확히 이 작업을 수행해야 합니다. 최신 보안과 최신 기능을 안정성 수정으로 Chromium에서 SQLite를 업데이트해야 합니다. 이는 바로 정확히 SQLite 3.6.19와 동일하게 동작해야 하는 웹 SQL의 요구사항과 충돌합니다.

API 형태

웹 SQL은 사용 기간을 보여주는 API이기도 합니다. 2000년대 후반의 어린이이기 때문에 "콜백 지옥"의 좋은 예입니다. 다음 코드 샘플로 (놀란 로슨 제공) 보여줍니다 보시다시피 SQL 문( SQLite SQL 언어)는 문자열로 전달됩니다. 데이터베이스 메서드에 전달하면 됩니다.

openDatabase(
  // Name
  'mydatabase',
  // Version
  1,
  // Display name
  'mydatabase',
  // Estimated size
  5000000,
  // Creation callback
  function (db) {
    db.transaction(
      // Transaction callback
      function (tx) {
        // Execute SQL statement
        tx.executeSql(
          // SQL statement
          'create table rainstorms (mood text, severity int)',
          // Arguments
          [],
          // Success callback
          function () {
            // Execute SQL statement
            tx.executeSql(
              // SQL statement
              'insert into rainstorms values (?, ?)',
              // Arguments
              ['somber', 6],
              // Success callback
              function () {
                // Execute SQL statement
                tx.executeSql(
                  // SQL statement
                  'select * from rainstorms where mood = ?',
                  // Arguments
                  ['somber'],
                  // Success callback
                  function (tx, res) {
                    // Do something with the result
                    var row = res.rows.item(0);
                    console.log(
                      'rainstorm severity: ' +
                        row.severity +
                        ',  my mood: ' +
                        row.mood,
                    );
                  },
                );
              },
            );
          },
        );
      },
      // Error callback
      function (err) {
        console.log('Transaction failed!: ' + err);
      },
      // Success callback);
      function () {
        console.log('Transaction succeeded!');
      },
    );
  },
);
드림 <ph type="x-smartling-placeholder">

이 코드를 실행하고 생성된 테이블을 Chrome DevTools로 검사하기 결과는 다음과 같습니다.

Chrome DevTools의 웹 SQL 섹션을 살펴보면 &#39;폭풍우&#39;라는 테이블이 있는 mydatabase라는 데이터베이스가 표시되며, 여기에는 우울한 분위기와 심각도가 6인 열 분위기 (텍스트) 및 심각도 (정수)가 포함되어 있습니다.

구현자 지원 부족

적어도 오늘날의 관점에서 보면, 신비로운 API 형태와는 별개로 Mozilla는 여러 번 있었다 문제 SQLite를 기반으로 빌드되는 웹 SQL에 관해 자세히 알아보세요.

"[SQLite] 가 일반 웹에 노출되는 API의 올바른 기반이라고 생각하지 않습니다. 무엇보다 신뢰할 수 있고 널리 인정되는 표준으로 대체되었습니다. 또한 포드가 SQLite에 대한 수정은 나중에 웹에 영향을 미치게 되며, 주요 브라우저를 릴리스 (및 웹 표준)를 SQLite로 이전하는 것이 신중해야 합니다."

자세한 내용은 이전 모질라안 블라디미르 부키체빅의 블로그 게시물 더 많은 역사에 대해 알아보려면 W3C 웹 애플리케이션 실무 그룹 회의 시간 (자세한 내용은 IRC 로그) 및 메일링 리스트 보관 파일). 또한 놀란 로슨의 블로그 게시물 상황을 파악할 수 있습니다.

의견

궁금한 점이 있으면 blink-dev 메일링 리스트에 오신 것을 환영합니다. 이 그룹의 회원은 누구든지 가입할 수 있으며 누구나 게시물을 올릴 수 있습니다.

감사의 말씀

이 도움말은 Joe Medley가 검토했으며 벤 모스, 조슈아 벨