Potrzebuję bazy danych przeglądarki po stronie klienta. Jakie są moje opcje [Zamknięte]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 3 lata temu .

Popraw to pytanie

Tworzę stronę internetową, która moim zdaniem musi mieć bazę danych po stronie klienta. Inną opcją byłoby umieszczenie wszystkiego na serwerze kosztem zwiększonej złożoności i zmniejszona skalowalność. Jakie mam opcje? Czy muszę zbudować wtyczkę? Czy muszę czekać aż wszyscy będą zgodni z HTML5?


Update było wiele komentarzy na temat tego, dlaczego naprawdę potrzebuję tego. Oto moje myśli. Powiedz mi czy jestem głupi:

  • klienci będą mieli duży i złożony stan, który będzie wymagał czegoś w rodzaju bazy danych, aby zapewnić interakcję danych, której potrzebuję. Dlatego (myślę) ciasteczka są poza obrazem.
  • te dane są przejściowe, więc klient nie będzie obchodził się, czy zostaną usunięte, gdy tylko zamkną sesję. Jednak będą musieli zachować dane, jeśli przejdą do innej strony internetowej, a następnie wrócą. Dlatego (myślę) jakoś przechowywanie danych w jakiejś implementacji javascript SQL nie będzie działać.
  • z pewnością mogę zrobić wszystko, co chcę zrobić na serwerze, a serwery mogą skalować, aby zarządzać obciążeniem (Facebook). Ale (chyba) wolałbym zbuduj wtyczkę niż zapłacić za infrastrukturę do obsługi tego obciążenia. To na start z gołymi kośćmi. (Im bogatszy jest startup, tym barer moje kości będą.)
Author: JnBrymn, 2011-01-24

8 answers

 34
Author: Šime Vidas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-02 14:10:40

Jestem około 5 lat spóźniony w odpowiedzi na to, ale biorąc pod uwagę, że są błędy i nieaktualne dane w niektórych istniejących odpowiedziach i nieadresowane punkty w pierwotnym pytaniu, pomyślałem, że dorzucę moje dwa centy.

Po pierwsze, wbrew temu, co sugerują inni, localStorage nie jest bazą danych. Jest (lub powinien być postrzegany jako) trwały, oparty na łańcuchach łańcuchowych magazyn wartości klucza...

...co może być idealnie w porządku dla Twoich potrzeb (i prowadzi mnie do mojego drugiego punktu).

  • czy potrzebujesz wyraźnych lub dorozumianych relacji między elementami danych?
  • a co z możliwością odpytywania o wspomniane przedmioty?
  • czy więcej niż 5 MB w przestrzeni?

Jeśli odpowiedziałeś " nie " na wszystkie powyższe, skorzystaj z localStorage i uratuj się przed bólami głowy, którymi są interfejsy API WebSQL i IndexedDB. Cóż, może tylko ten ostatni ból głowy, ponieważ pierwszy został wycofany.

Istnieje również kilka innych obiekty pamięci po stronie klienta (natywne i nie natywne), do których warto zajrzeć, niektóre z nich są przestarzałe* , ale nadal są obsługiwane przez niektóre przeglądarki:

Sprawdź BakedGoods jeśli chcesz aby korzystać z tych urządzeń i nie tylko, bez konieczności pisania niskopoziomowego kodu operacji magazynowania. Dzięki niemu umieszczenie danych w jednym (lub więcej) z nich, na przykład, jest tak proste, jak:

bakedGoods.set({
    data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}],
    storageTypes: ["silverlight", "fileSystem", "localStorage"],
    options: optionsObj,
    complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){}
});
Aha, i dla pełnej przejrzystości, pieczenie jest utrzymywane przez tego gościa tutaj :) .
 9
Author: Kevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-16 12:20:24

Natknąłem się na bazę danych JavaScript http://www.taffydb.com / wciąż próbuję, mam nadzieję, że to pomoże.

 8
Author: DogBot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-09 16:46:04

Użyj PouchDB .

PouchDB jest otwartoźródłową bazą danych JavaScript inspirowaną Apache CouchDB, która została zaprojektowana tak, aby działała dobrze w przeglądarce.

Pomaga budować aplikacje, które działają zarówno online, jak i offline.

Zasadniczo przechowuje Ostatnie pobrane dane w bazie danych w przeglądarce (używa IndexedDB, WebSQL pod maską), a następnie synchronizuje się ponownie, gdy sieć jest aktywna.

 7
Author: Dhruvdutt Jadhav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-11 09:13:25

Jeśli szukasz dB W Stylu NoSQL na kliencie możesz sprawdzić http://www.forerunnerdb.com . obsługuje ten sam język zapytań co MongoDB i posiada moduł wiązania danych, jeśli chcesz, aby DOM automatycznie odzwierciedlał zmiany w Twoich danych.

Jest również open source, jest stale aktualizowany o nowe funkcje, a społeczność wokół niego szybko rośnie.

Disclaimer, jestem głównym deweloperem projektu.

 6
Author: Rob Evans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 13:25:37

Jeśli czujesz, że potrzebujesz go, użyj go dla klientów, którzy go obsługują i zaimplementuj awaryjne wsparcie po stronie serwera dla klientów, którzy tego nie robią.

Alternatywą jest użycie Flash i lokalnych obiektów współdzielonych, które mogą przechowywać o wiele więcej informacji niż plik cookie, będą działać we wszystkich przeglądarkach z Flashem (czyli prawie wszystkimi przeglądarkami) i przechowywać wpisane dane. Nie musisz robić całej aplikacji we Flashu, możesz po prostu napisać małe narzędzie do odczytu / zapisu danych LSO. Można to zrobić za pomocą proste projekty ActionScript bez żadnego frameworka i da ci malutki 5-15kb swf.

Są dwa API, których będziesz potrzebować. SharedObject.getLocal() aby uzyskać dostęp do LSO i odczytać / zapisać jego dane oraz ExternalInterface.addCallback, których możesz użyć do zarejestrowania metody AS3 jako wywołania zwrotnego, aby wywołać Odczyt/Zapis LSO metoda.

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

Te linki są do odniesień Flex, ale w tym celu możesz po prostu utworzyć projekt ActionScript bez potrzeby dla Flex framework, a tym samym znacznie zmniejszony rozmiar swf. Istnieje wiele dobrych Idów, w tym darmowe open-source, takie jak FlashDevelop.

FlashDevelop

Http://www.flashdevelop.org/

 5
Author: Samuel Neff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-24 12:57:55

Sprawdź lokalne przechowywanie HTML5:

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

Może to również okazać się pomocne: HTML5 database storage ( SQL lite) - kilka pytań

Kiedy pojawił się Windows 98, wielu z nas wciąż tkwiło na MS-DOS 6.22. Oczywiście w nowym systemie operacyjnym były naprawdę fajne funkcje, które nie działały w MS-DOS.

Przychodzi czas, kiedy pewne rzeczy muszą zostać pozostawione, aby zrobić miejsce dla innowacji. Jeśli Twoja aplikacja jest naprawdę innowacyjna i będzie oferować fajne nowe funkcje, które wykorzystują najnowsze i najlepsze technologie, niektóre starsze przeglądarki będą oczywiście musiały zostać pozostawione.

Zaletą jest to, że w przeciwieństwie do aktualizacji systemu operacyjnego, aktualizacja z IE7 do Chrome 8 lub Firefox 3.6 jest bardziej osiągalnym celem dla przeciętnego użytkownika aplikacji, zwłaszcza jeśli podasz link i Instrukcje aktualizacji.

 2
Author: jmort253,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:55

Wypróbowałbym localForage Mozilli. https://localforage.github.io/localForage/

 1
Author: Dmitry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-03 07:13:51