--- title: IndexedDB API slug: Web/API/IndexedDB_API translation_of: Web/API/IndexedDB_API ---
{{DefaultAPISidebar ( "IndexedDB")}}

IndexedDB เป็น API ระดับต่ำสำหรับการจัดเก็บข้อมูลจำนวนมากของโครงสร้างข้อมูลรวมถึงไฟล์ / blobs API นี้ใช้ดัชนีเพื่อให้สามารถค้นหาข้อมูลนี้ได้อย่างมีประสิทธิภาพสูง แม้ว่าที่เก็บข้อมูลเว็บจะเป็นประโยชน์สำหรับการจัดเก็บข้อมูลจำนวนน้อย แต่จะไม่ค่อยมีประโยชน์ในการจัดเก็บข้อมูลที่มีโครงสร้างจำนวนมาก IndexedDB มีวิธีแก้ปัญหา นี่คือหน้า Landing Page หลักสำหรับความครอบคลุม IndexedDB ของ MDN - ที่นี่เรามีลิงก์ไปยังคู่มืออ้างอิงและคู่มือการใช้งาน API แบบเต็มรูปแบบรายละเอียดการสนับสนุนเบราเซอร์และคำอธิบายเกี่ยวกับแนวคิดหลัก ๆ

{{AvailableInWorkers}}

หมายเหตุ : IndexedDB API มีประสิทธิภาพ แต่อาจดูเหมือนซับซ้อนเกินไปสำหรับกรณีง่ายๆ ถ้าคุณต้องการ API แบบธรรมดาลองใช้ไลบรารีเช่น  localForage , dexie.js , ZangoDB และJsStoreที่ทำให้ IndexedDB เป็นโปรแกรมเมอร์ที่เป็นมิตรมากขึ้น

แนวคิดหลักและการใช้งาน

IndexedDB เป็นระบบฐานข้อมูลการทำธุรกรรมเช่น RDBMS แบบ SQL แต่แตกต่างจาก RDBMSes ที่ใช้ SQL ซึ่งใช้ตารางคอลัมน์ถาวร IndexedDB เป็นฐานข้อมูลเชิงวัตถุที่ใช้ JavaScript IndexedDB ช่วยให้คุณสามารถจัดเก็บและดึงวัตถุที่มีการสร้างดัชนีด้วยที่สำคัญ ; วัตถุใด ๆ ที่สนับสนุนโดยอัลกอริทึมโคลนที่มีโครงสร้างสามารถจัดเก็บได้ คุณต้องระบุคีมาฐานข้อมูลเปิดการเชื่อมต่อกับฐานข้อมูลของคุณและจากนั้นดึงข้อมูลและปรับปรุงข้อมูลภายในชุดของการทำธุรกรรม

หมายเหตุ : เช่นเดียวกับโซลูชันการจัดเก็บข้อมูลเว็บส่วนใหญ่ IndexedDB จะใช้นโยบายแหล่งกำเนิดเดียวกัน ดังนั้นในขณะที่คุณสามารถเข้าถึงข้อมูลที่เก็บไว้ภายในโดเมนคุณจะไม่สามารถเข้าถึงข้อมูลในโดเมนต่างๆได้

Synchronous และ Asynchronous

การดำเนินงานที่ดำเนินการโดยใช้ IndexedDB ทำแบบอะซิงโครนัสเพื่อไม่ให้บล็อกแอพพลิเคชัน IndexedDB เดิมรวม APIs แบบซิงโครนัสและ  แบบอะซิงโครนัส API ซิงโครนัสมีไว้สำหรับใช้กับWeb Workersเท่านั้น แต่ถูกนำออกจาก spec เนื่องจากไม่ชัดเจนว่าจำเป็นหรือไม่ อย่างไรก็ตาม   API แบบซิงโครนัส  อาจได้รับคำแนะนำใหม่หากมีความต้องการเพียงพอจากนักพัฒนาเว็บ

ข้อ จำกัด ในการจัดเก็บและเกณฑ์การขับไล่

มีเทคโนโลยีเว็บจำนวนหนึ่งที่เก็บข้อมูลประเภทเดียวกันหรือแบบอื่นทางฝั่งไคลเอ็นต์ (เช่นบนดิสก์ภายในเครื่อง) IndexedDB เป็นเรื่องที่พูดถึงกันมากที่สุด กระบวนการที่เบราว์เซอร์ทำงานได้ว่าจะจัดสรรพื้นที่ในการจัดเก็บข้อมูลเว็บมากน้อยเพียงใดและจะลบอะไรเมื่อถึงขีด จำกัด นั้นไม่ง่ายและแตกต่างกันระหว่างเบราว์เซอร์ ขีด จำกัด ของพื้นที่เก็บข้อมูลเบราเซอร์และเกณฑ์การขับไล่พยายามอธิบายวิธีการทำงานนี้อย่างน้อยที่สุดในกรณีของ Firefox

อินเตอร์เฟซ

เมื่อต้องการเข้าถึงฐานข้อมูลให้เรียกopen()ใช้indexedDBแอ็ตทริบิวต์ของออบเจ็กต์หน้าต่าง เมธอดนี้ส่งกลับค่า {{domxref ("IDBRequest")}} object; การดำเนินการแบบอะซิงโครนัสจะสื่อสารกับแอพพลิเคชันการเรียกโดยการยิงเหตุการณ์บน {{domxref ("IDBRequest")}} วัตถุ

กำลังเชื่อมต่อกับฐานข้อมูล

{{domxref ( "IDBEnvironment")}}
ให้การเข้าถึงฟังก์ชันการทำงาน IndexedDB มีการใช้งานโดย {{domxref ("window")}} และวัตถุ {{domxref ("worker")}} อินเทอร์เฟซนี้ไม่ใช่ส่วนหนึ่งของข้อกำหนด 2.0
{{domxref ( "IDBFactory")}}
ให้การเข้าถึงฐานข้อมูล นี่คืออินเทอร์เฟซที่ใช้งานโดยอ็อบเจ็กต์ทั่วโลกindexedDBและเป็นจุดเริ่มต้นของ API
{{domxref ( "IDBOpenDBRequest")}}
หมายถึงคำขอให้เปิดฐานข้อมูล
{{domxref ( "IDBDatabase")}}
หมายถึงการเชื่อมต่อกับฐานข้อมูล เป็นวิธีเดียวที่จะได้รับธุรกรรมในฐานข้อมูล
กำลังเรียกและแก้ไขข้อมูล
{{domxref ( "IDBTransaction")}}
หมายถึงธุรกรรม คุณสร้างธุรกรรมในฐานข้อมูลระบุขอบเขต (เช่นที่เก็บออบเจ็กต์ที่คุณต้องการเข้าถึง) และกำหนดชนิดของการเข้าถึง (อ่านอย่างเดียวหรือเขียน readwrite) ที่คุณต้องการ
{{domxref ( "IDBRequest")}}
อินเทอร์เฟซทั่วไปที่จัดการคำขอฐานข้อมูลและให้การเข้าถึงผลการค้นหา
{{domxref ( "IDBObjectStore")}}
หมายถึงเก็บออบเจ็กต์ที่อนุญาตให้เข้าถึงชุดข้อมูลในฐานข้อมูล IndexedDB โดยค้นหาคีย์หลัก
{{domxref ( "IDBIndex")}}
นอกจากนี้ยังช่วยให้สามารถเข้าถึงชุดย่อยของข้อมูลในฐานข้อมูล IndexedDB ได้ แต่ใช้ดัชนีเพื่อดึงข้อมูลระเบียนแทนที่จะเป็นคีย์หลัก บางครั้งก็เร็วกว่าการใช้ {{domxref ("IDBObjectStore")}}
{{domxref ( "IDBCursor")}}
Iterates มากกว่าเก็บวัตถุและดัชนี
{{domxref ( "IDBCursorWithValue")}}
Iterates มากกว่าเก็บวัตถุและดัชนีและส่งกลับค่าปัจจุบันของเคอร์เซอร์
{{domxref ( "IDBKeyRange")}}
กำหนดช่วงสำคัญที่สามารถใช้เพื่อดึงข้อมูลจากฐานข้อมูลในช่วงที่กำหนด
{{domxref ("IDBLocaleAwareKeyRange")}} {{Non-standard_inline}}
กำหนดช่วงที่สำคัญที่สามารถนำมาใช้เพื่อดึงข้อมูลจากฐานข้อมูลในช่วงที่กำหนดซึ่งจัดเรียงตามกฎของโลแคลที่ระบุสำหรับดัชนีที่ระบุ (โปรดดูที่createIndex()พารามิเตอร์ที่ไม่บังคับ ) อินเทอร์เฟซนี้ไม่ใช่ส่วนหนึ่งของข้อกำหนด 2.0

อินเทอร์เฟซเหตุการณ์ที่กำหนดเอง

ข้อกำหนดนี้จะเริ่มต้นกิจกรรมด้วยอินเทอร์เฟซที่กำหนดเองต่อไปนี้:

{{domxref ( "IDBVersionChangeEvent")}}
IDBVersionChangeEventอินเตอร์เฟซแสดงให้เห็นว่ารุ่นของฐานข้อมูลที่มีการเปลี่ยนแปลงเป็นผลมาจากการ {{domxref ( "IDBOpenDBRequest.onupgradeneeded")}} ฟังก์ชั่นจัดการเหตุการณ์

อินเตอร์เฟซล้าสมัย

เวอร์ชันก่อนหน้าของข้อกำหนดยังกำหนดการเชื่อมต่อที่ลบออกไปแล้วในขณะนี้ เอกสารเหล่านี้จะได้รับการจัดทำเป็นเอกสารไว้ในกรณีที่คุณจำเป็นต้องอัพเดตโค้ดที่เขียนไว้ก่อนหน้านี้:

{{domxref ("IDBVersionChangeRequest")}} {{obsolete_inline}}
หมายถึงคำขอให้เปลี่ยนเวอร์ชันของฐานข้อมูล วิธีเปลี่ยนเวอร์ชันของฐานข้อมูลได้เปลี่ยนไปแล้ว (โดยเรียก {{domxref ("IDBFactory.open")}} โดยไม่ต้องเรียก {{domxref ("IDBDatabase.setVersion")}}) และอินเทอร์เฟซ {{domxref ("IDBOpenDBRequest")}} มีฟังก์ชันการทำงานของ {{domxref ("IDBVersionChangeRequest")}} ที่ถูกลบ
{{domxref ("IDBDatabaseException")}} {{obsolete_inline}}
หมายถึงสภาวะข้อยกเว้นที่สามารถพบได้ในขณะดำเนินการฐานข้อมูล
{{domxref ("IDBTransactionSync")}} {{obsolete_inline}}
ซิงค์เวอร์ชันของ {{domxref ("IDBTransaction")}}
{{domxref ("IDBObjectStoreSync")}} {{obsolete_inline}}
ซิงค์เวอร์ชันของ {{domxref ("IDBObjectStore")}}
{{domxref ("IDBIndexSync")}} {{obsolete_inline}}
ซิงค์เวอร์ชันของ {{domxref ("IDBIndex")}}
{{domxref ("IDBFactorySync")}} {{obsolete_inline}}
ซิงค์เวอร์ชันของ {{domxref ("IDBFactory")}}
{{domxref ("IDBEnvironmentSync")}} {{obsolete_inline}}
ซิงค์เวอร์ชันของ {{domxref ("IDBEnvironment")}}
{{domxref ("IDBDatabaseSync")}} {{obsolete_inline}}
ซิงค์เวอร์ชัน {{domxref ("IDBDatabase")}}
{{domxref ("IDBCursorSync")}} {{obsolete_inline}}
ซิงค์เวอร์ชันของ {{domxref ("IDBCursor")}}

ตัวอย่าง

ข้อมูลจำเพาะ

สเปค สถานะ คิดเห็น
{{SpecName ( 'IndexedDB')}} {{Spec2 ( 'IndexedDB')}} ความหมายเบื้องต้น
{{SpecName ("IndexedDB 2")}} {{Spec2 ("IndexedDB 2")}}  

ความเข้ากันได้ของเบราเซอร์

{{CompatibilityTable}}

ลักษณะ โครเมียม ขอบ Firefox (ตุ๊กแก) Internet Explorer อุปรากร Safari (WebKit)
การสนับสนุนขั้นพื้นฐาน {{CompatChrome (23)}} {{property_prefix ("webkit")}}
{{CompatChrome (24)}} (ไม่เป็นที่รู้จัก)
{{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
{{CompatChrome (57)}} ( คำนำหน้านำออก)
{{CompatVersionUnknown}} {{CompatGeckoDesktop ("10.0")}} {{property_prefix ("moz")}}
{{CompatGeckoDesktop ("16.0")}}
10 15

7.1 ส่วนที่
10

มีอยู่ในคนงาน {{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
{{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
{{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}} {{CompatGeckoDesktop ("37.0")}} [1] {{CompatVersionUnknown}} {{CompatVersionUnknown}} 10
ใช้ได้ในโหมดความเป็นส่วนตัว[3] {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
IDBLocaleAwareKeyRange {{CompatNo}} {{CompatNo}} {{CompatGeckoDesktop ("43.0")}} [2] {{CompatNo}} {{CompatNo}} {{CompatNo}}
ฐานข้อมูลที่ทำดัชนี 2.0 {{CompatChrome (58)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatOpera (45)}} {{CompatUnknown}}
ลักษณะ Android Webview Chrome สำหรับแอนดรอยด์ ขอบ Firefox Mobile (ตุ๊กแก) Firefox OS โทรศัพท์ IE / Edge Opera Mobile Safari มือถือ
การสนับสนุนขั้นพื้นฐาน {{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
{{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
{{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
{{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
{{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}} {{CompatGeckoMobile ( "22.0")}} 1.0.1 10 {{CompatOpera (22)}} 8 บางส่วน
10
มีอยู่ในคนงาน {{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
{{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
{{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}} (ไม่เป็นตัวเป็นตน)
{{CompatChrome (38)}} (คำนำหน้าเลิกใช้แล้ว)
{{CompatChrome (57)}} (นำหน้านำหน้าออก)
{{CompatVersionUnknown}} {{CompatGeckoMobile ("37.0")}} [1] {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} 10
ใช้ได้ในโหมดความเป็นส่วนตัว[3] {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatUnknown}} {{CompatUnknown}}
IDBLocaleAwareKeyRange {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatGeckoMobile ("43.0")}} [2] 2.5 [2] {{CompatNo}} {{CompatNo}} {{CompatNo}}
ฐานข้อมูลที่ทำดัชนี 2.0 {{CompatChrome (58)}} {{CompatChrome (58)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatOpera (45)}} {{CompatUnknown}}

ดูสิ่งนี้ด้วย