2011-01-24 23 views
31

Tôi đang tạo một trang web mà tôi nghĩ rằng phải có một cơ sở dữ liệu phía khách hàng. Các tùy chọn khác sẽ là để dính mọi thứ trên máy chủ với chi phí tăng độ phức tạp và giảm khả năng mở rộng. Tôi có những lựa chọn nào? Tôi có phải xây dựng một plugin không? Tôi có phải đợi cho đến khi HTML5 tuân thủ mọi người không?Tôi cần một cơ sở dữ liệu trình duyệt phía máy khách. Các lựa chọn của tôi là gì


Cập nhật Đã có rất nhiều ý kiến ​​về việc tại sao tôi sẽ thực sự cần điều này. Đây là suy nghĩ của tôi. Hãy cho tôi biết nếu tôi là ngớ ngẩn:

  • Khách hàng sẽ có trạng thái lớn và phức tạp yêu cầu tương tác dữ liệu mà tôi cần. Do đó (tôi nghĩ) các cookie đã hết ảnh.
  • Dữ liệu này là tạm thời, do đó, khách hàng sẽ không quan tâm nếu nó bị xóa ngay sau khi họ đóng một phiên. Tuy nhiên, họ sẽ cần phải giữ dữ liệu nếu họ truy cập một trang web khác và sau đó quay lại. Do đó (tôi nghĩ) bằng cách nào đó lưu trữ dữ liệu trong một số loại thực hiện SQL javascript sẽ không hoạt động.
  • Tôi chắc chắn có thể làm mọi thứ mà tôi muốn thực hiện trên máy chủ và máy chủ có thể quy mô để quản lý tải (Facebook). Nhưng (Tôi nghĩ) Tôi muốn xây dựng một plugin hơn là trả tiền cho cơ sở hạ tầng để hỗ trợ tải này. Điều này là cho một khởi động xương trần. (The giàu khởi động là, barer xương của tôi sẽ được.)
+2

Tại sao bạn cho rằng nó phải nằm ở phía khách hàng? Vui lòng giải thích? –

+2

"Tôi đang tạo một trang web mà tôi nghĩ phải có một cơ sở dữ liệu phía khách hàng" - Có lẽ mô tả vấn đề thực tế của bạn, và không phải là một giải pháp được nhận thức cho một vấn đề mà bạn chưa nói với chúng tôi .... –

+1

@John bạn muốn hỗ trợ? –

Trả lời

23
+1

tôi muốn danh sách các dbs được xây dựng trên đỉnh của các apis này. –

+0

IndexedDB * là * một cơ sở dữ liệu. –

+0

JSON được sử dụng để gửi dữ liệu giữa máy chủ và trình duyệt. –

1

Check-out HTML5 Local Storage:

http://people.w3.org/mike/localstorage.html

Bạn cũng có thể tìm thấy điều này hữu ích: HTML5 database storage (SQL lite) - few questions

Khi Windows 98 xuất hiện lần đầu tiên, có rất nhiều người trong chúng ta vẫn bị mắc kẹt trên MS-DOS 6.22. Đương nhiên, có những tính năng thực sự thú vị trên hệ điều hành mới không chạy trong MS-DOS.

Có một thời gian khi một số thứ phải được bỏ lại để nhường chỗ cho sự đổi mới. Nếu ứng dụng của bạn thực sự sáng tạo và sẽ cung cấp chức năng mới tuyệt vời sử dụng các công nghệ mới nhất và tuyệt vời nhất, thì một số trình duyệt cũ hơn sẽ tự nhiên bị bỏ lại phía sau.

Lợi thế mà bạn có là, không giống như nâng cấp hệ điều hành, nâng cấp từ IE7 lên Chrome 8 hoặc Firefox 3.6 là mục tiêu dễ tiếp cận hơn cho người dùng trung bình của ứng dụng của bạn, đặc biệt là khi bạn cung cấp liên kết và hướng dẫn nâng cấp.

4

Nếu bạn cảm thấy như bạn cần thì sử dụng nó cho các khách hàng có hỗ trợ nó và thực hiện một dự phòng server-side cho khách hàng mà không .

Một cách khác là bạn có thể sử dụng Flash và các đối tượng chia sẻ cục bộ có thể lưu trữ nhiều thông tin hơn cookie, sẽ hoạt động trong tất cả các trình duyệt có Flash (nhiều trình duyệt) và lưu trữ dữ liệu đã nhập. Bạn không cần phải làm toàn bộ ứng dụng trong Flash, bạn chỉ có thể viết một tiện ích nhỏ để đọc/ghi dữ liệu LSO. Điều này có thể được thực hiện bằng cách sử dụng các dự án ActionScript thẳng mà không có bất kỳ khung công tác nào và sẽ cung cấp cho bạn một swf 5-15kb nhỏ.

Có hai API bạn sẽ cần. SharedObject.getLocal() để truy cập vào một LSO và đọc/ghi dữ liệu của nó, và ExternalInterface.addCallback mà bạn có thể sử dụng để đăng ký một phương pháp AS3 làm gọi lại để gọi phương thức đọc/ghi LSO của bạn.

SharedObject

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2

ExternalInterface

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

Các liên kết này để Flex tài liệu tham khảo nhưng đối với điều này, bạn chỉ có thể tạo ra một dự án không có nhu cầu sử dụng Flex ActionScript khuôn khổ và do đó giảm đáng kể kích thước swf. Có một số IDE tốt bao gồm các mã nguồn mở miễn phí như FlashDevelop.

FlashDevelop

http://www.flashdevelop.org/

+0

Đây là một cách tiếp cận thú vị. Bạn có thể chỉ cho tôi một số tài liệu đọc ở đây không? – JnBrymn

+0

@ John Berryman, tôi đã thêm một số liên kết có liên quan. –

3

Tôi đã xem qua một cơ sở dữ liệu JavaScript http://www.taffydb.com/ vẫn đang cố gắng nó ra bản thân mình, hy vọng điều này sẽ giúp.

3

Nếu bạn đang tìm kiếm một db kiểu NoSQL trên máy khách, bạn có thể xem http://www.forerunnerdb.com. Nó hỗ trợ ngôn ngữ truy vấn giống như MongoDB và có một mô-đun ràng buộc dữ liệu nếu bạn muốn DOM của bạn tự động phản ánh các thay đổi đối với dữ liệu của bạn.

Đây cũng là nguồn mở, liên tục được cập nhật với các tính năng mới và cộng đồng xung quanh nó đang phát triển nhanh chóng.

Tuyên bố từ chối trách nhiệm, tôi là nhà phát triển chính của dự án.

2

Tôi trễ khoảng 5 năm để trả lời câu hỏi này, nhưng có lỗi và dữ liệu lỗi thời trong một số câu trả lời hiện có, và các điểm không được thêm vào câu hỏi ban đầu, tôi nghĩ mình sẽ ném hai xu của mình .

Đầu tiên, trái với những gì người khác đã ngụ ý ở đây, localStorage không phải là cơ sở dữ liệu. Đó là (hoặc nên được coi là) một kho lưu trữ khóa-giá trị liên tục, chuỗi ...

... có thể hoàn toàn phù hợp với nhu cầu của bạn (và đưa tôi đến điểm thứ hai).

  • Bạn có cần mối quan hệ rõ ràng hoặc ngầm định giữa các mục dữ liệu của mình không?
  • Khả năng truy vấn các mục đã nói như thế nào?
  • Hoặc nhiều hơn 5 MB trong không gian?

Nếu bạn trả lời "không" cho tất cả những điều trên, hãy truy cập localStorage và lưu chính mình khỏi những cơn đau đầu là API WebSQL và IndexedDB. Vâng, có thể chỉ là đau đầu sau, kể từ trước đây has been deprecated.

Ngoài ra còn có một số cơ sở lưu trữ client-side khác (có nguồn gốc và không có nguồn gốc), bạn có thể muốn xem xét vào, một số trong đó đang bị phản đối * nhưng vẫn thấy sự hỗ trợ của một số trình duyệt:

Check-out BakedGoods nếu bạn muốn sử dụng bất kỳ của các cơ sở này, và nhiều hơn nữa, mà không cần phải viết mã hoạt động lưu trữ ở mức độ thấp. Với nó, đặt dữ liệu trong một (hoặc nhiều hơn) trong số họ, ví dụ, là đơn giản như:

bakedGoods.set({ 
    data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}], 
    storageTypes: ["silverlight", "fileSystem", "localStorage"], 
    options: optionsObj, 
    complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){} 
}); 

Oh, và vì lợi ích của tính minh bạch đầy đủ, BakedGoods được duy trì bởi anh chàng này ngay tại đây :).

+0

bạn vẫn chủ động duy trì 'BakedGoods'? – ktkaushik

1

Sử dụng PouchDB.

Giúp xây dựng các ứng dụng hoạt động trực tuyến cũng như ngoại tuyến.

Về cơ bản, nó lưu trữ dữ liệu được tìm nạp lần cuối trong cơ sở dữ liệu trong trình duyệt (sử dụng IndexedDB, WebSQL dưới mui xe) và sau đó đồng bộ lại khi mạng hoạt động.

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