2015-03-23 15 views
6

WebSQL và IndexedDB là cả hai API DB để truy cập (CRUD) cơ sở dữ liệu nhúng bên dưới trong trình duyệt web. Trong đó, nếu tôi đúng, cũng giống như SQL để truy cập (CRUD) bất kỳ cơ sở dữ liệu client-server như Oracle vv (trong nhiều trường hợp hỗ trợ cho cả WebSQL và IndexedDB có sẵn trên cùng một trình duyệt)So sánh hiệu suất được lập chỉ mụcDB và IndexedDB v/s So sánh hiệu suất WebSQL

  1. Vì vậy, hiện nó có nghĩa là cả WebSQL và IndexedDB đều đang truy cập (CRUD) cùng cơ sở dữ liệu nhúng cơ bản và nếu đúng như vậy thì nó sẽ có cùng hiệu năng trên tất cả các trình duyệt web!
  2. Nhưng tôi nghĩ rằng đó không phải là trường hợp, do đó, nó có nghĩa là một trình duyệt web sẽ có nhiều hơn một cơ sở dữ liệu nhúng cơ bản? Và tại sao nên có 2 cơ sở dữ liệu nhúng cơ bản trong cùng một trình duyệt?

Và vì WebSQL và IndexedDB là API nên có nghĩa là không hoàn toàn chính xác khi nói hiệu suất của WebSQL và IndexedDB (vì chúng giống ngôn ngữ truy vấn/truy cập) hơn. cơ sở dữ liệu nhúng. Và, theo Google, LevelDB is faster than SQLite

  1. Là nó đúng để nói rằng đáng kể nó không phải là sự khác biệt về hiệu năng giữa WebSQL và IndexedDB, nhưng hiệu suất của cơ sở dữ liệu nhúng?
  2. Cơ sở dữ liệu nhúng bên dưới cho trình duyệt IE, Chrome, Android là gì? Tôi không thể tìm thấy thông tin này trên web, có ai tìm thấy hoặc biên dịch nó không?

Trả lời

15

Để giải quyết câu hỏi đầu tiên của bạn, WebSQL chưa bao giờ được triển khai trong Internet Explorer hoặc Firefox (http://diveintohtml5.info/storage.html, http://caniuse.com/#feat=sql-storage). Trong điều kiện của "trình duyệt lớn" mà lá Chrome và Safari, cả hai sinh ra từ WebKit (mặc dù kể từ khi v28 Chrome đã chạy trên một ngã ba từ WebKit, được gọi là 'Blink'). Trong quá khứ, cả hai trình duyệt này đều sử dụng SQLite làm cơ sở dữ liệu cơ bản cho cả WebSQL và IndexedDb, nhưng Chrome đã chuyển IndexedDb từ SQLite sang LevelDB.

Để trả lời câu hỏi thứ hai của bạn, Chrome sử dụng 2 công nghệ cơ sở dữ liệu cơ bản khác nhau:

WebSQL -> SQLite

IndexedDB -> LevelDB

tôi nghi ngờ họ giữ WebSQL như SQLite như họ biết nó hoạt động . WebSQL hiện không được chấp nhận và tại một thời điểm nào đó, WebSQL sẽ bị xóa, vậy tại sao họ lại dành thời gian chuyển nó sang LevelDB. Về mặt hiệu suất giữa WebSQL/IndexedDb so với hiệu suất của cơ sở dữ liệu bên dưới, từ kinh nghiệm trên iOS Safari, cả IndexedDb và WebSQL đều sử dụng cơ sở dữ liệu SQLite. Trong thử nghiệm của tôi, tôi thấy rằng WebSQL nhanh hơn gấp đôi so với 1000 lần chèn cơ sở dữ liệu đơn giản so với IndexedDb trên Safari trong iOS8.

Về câu hỏi cuối cùng của bạn, tôi thấy câu này ra:

Đối với IE:

WebSQL -> Không được hỗ trợ

IndexedDB -> Extensible Storage Engine

Đối Firefox:

WebSQL -> Không hỗ trợ

IndexedDB -> SQLite

Đối với Safari:

WebSQL -> SQLite

IndexedDB -> SQLite

Đối với Chrome:

WebSQL -> SQLite

IndexedDB -> LevelDB

(Nguồn: Dự án WebKit, https://bugzilla.mozilla.org/show_bug.cgi?id=837141, http://www.aaron-powell.com/posts/2012-10-05-indexeddb-storage.html)

+0

Tôi đồng ý với bạn về thông tin về việc trình duyệt cho hỗ trợ WebSQL và IndexedDB hay không. Nhưng tôi không chắc liệu Extensible Storage Engine có phải là cơ sở dữ liệu nhúng bên dưới cho IE hay không. Tôi đã đi qua Wiki của công cụ lưu trữ mở rộng và không có đề cập về cùng. Hãy sửa tôi nếu tôi sai. Nó có thể là SQL Server Compact. Theo nhận xét của bạn - 'nhưng chúng khác nhau rất nhiều về cách cơ sở dữ liệu cơ sở được xây dựng và cách chúng hoạt động. 'Bạn có thể ném ánh sáng lên điều này không. Bạn có nghĩa là IndxedDB và WebSQL xây dựng cơ sở dữ liệu riêng của họ trong trình duyệt trong thời gian chạy? – hagrawal

+0

Dựa trên nhiều bài báo tôi đã đọc trên internet, IE thực sự sử dụng ESE như là công cụ lưu trữ cơ bản của nó. Đặc biệt, nếu bạn duyệt đến thư mục "C: \ Users \% USER% \ AppData \ Local \ Microsoft \ Internet Explorer \ Chỉ mục DB", bạn sẽ thấy các tệp mà IndexedDB tạo ra. Tôi cũng tin rằng nếu bạn có quyền truy cập vào một bản sao của công cụ ESEUtil, bạn sẽ có thể đổ các nội dung của IndexedDb. –

+0

Xét về nhận xét của tôi về IndexedDB và WebSQL là khác nhau, điều này xuất phát từ kinh nghiệm đau đớn khi cố gắng sử dụng IndexedDB và WebSQL trên iOS8. Xét cả hai đều sử dụng SQLite bên dưới, WebSQL nhanh gấp hai lần IndexedDB. Với IndexedDB và WebSQL, khi bạn cố gắng mở một cơ sở dữ liệu, nếu cơ sở dữ liệu không tồn tại thì nó sẽ được tạo ra. Sự khác biệt lớn giữa 2 là khi bạn gọi openDatabase cho WebSQL, bạn cần xác định kích thước cơ sở dữ liệu tối đa mà bạn muốn tạo. Bạn dường như đang hỏi rất nhiều câu hỏi chuyên sâu. Bạn thực sự cần biết điều gì? –

Các vấn đề liên quan