2013-02-18 6 views
16

Welche Lösungen gibt es für abfragbare clientseitige Datenspeicher? Dies würde als temporärer Cache verwendet werden, um grundlegende Operationen wie das Sortieren und Aggregieren über benutzerdefinierte Datumsbereiche im Client auszuführen. Ich habe ein paar vielversprechende Kandidaten gefunden, aber ich bin nicht sicher, was die besten Optionen sindAbfragbarer clientseitiger Speicher

Es gibt auch einige andere weniger optimalen Optionen:

  • HTML5 localstorage/session (benötigen eine Abfrage Schicht oben zu bauen dieser ... wie lawnchair oder localstoragedb)
  • IndexedDB (Browser-Kompatibilität)
  • Google Getriebe (eingestellte)
  • WebSQL (Spezifikation gestoppt)

würde ich gespannt sein, deine Erfahrungen mit diesen Optionen zu wissen,/wenn es andere, die ich verpaßt habe

+2

kennen Sie diese Bibliotheken Wrapper nur benutzen können um was Sie als "weniger optimale" Lösungen betrachten. Sie müssen nur den besten Wrapper auswählen, der zu Ihnen passt. – adrian

+0

Das ist der Grund, warum ich nach den Erfahrungen der Leute mit diesen Projekten frage, in der Hoffnung, das Rad nicht neu zu erfinden (oder etwas zu vermissen, das ich nicht komplett gefunden habe) – user1424744

+3

Warum zur Hölle ist diese Frage als nicht konstruktiv geschlossen ? Es ist super hilfreich – KJW

Antwort

0

ich lawnchair für ein kleines Paar Maßstäbe internen Tools verwendet habe, wo ich arbeite und die Die Erfahrung war insgesamt sehr positiv.

Etwas, was ich in dem Prozess gelernt: Douglas Crockford JSON-js cycle.js löste meine stringify-Probleme beim Speichern/auf doppelt verknüpften Objekte zu bekommen.

Jemand schrieb ein Problem auf dem Rasenstuhl Github Repo beschreibt das gleiche Problem und ersparte mir eine Menge Kopfschmerzen. https://github.com/brianleroux/lawnchair/issues/105

+1

Die Art, wie es Abfragen ist, dass es über die Hash-Tabelle wiederholt ... es ist nicht nützlich für DB> 10K Zeilen – delphi

+0

Ein guter Punkt, Danke für die Rückmeldung. Obwohl die ursprüngliche Frage das Sortieren und Aggregieren von benutzerdefinierten Datumsbereichen erwähnt. Ich kann mir kein Szenario vorstellen, in dem diese Art von Use Case die 10K-Rekordschwelle überschreiten würde. –

1

Haben Sie meine Open-Source-Bibliothek https://bitbucket.org/ytkyaw/ydn-db/wiki/Home versuchen. Es unterstützt IndexedDB, WebSQL und localStorage. Abfrage ist NoSQL-Format, d. H. Indexbasisschlüsselbereichsabfrage. Mehrere Indexabfragen erfordern die Verwendung eines zusammengesetzten Index- oder Schlüsselverbindungsalgorithmus. Gegenwärtig gibt es eine grundlegende Abfrage-Schnittstelle zu SQL, die im Laufe der Zeit besser wird.

Große Web-App, die meisten von ihnen sind CRM, verwenden Sie die Bibliothek in der Produktion.

+0

Das sieht ziemlich interessant aus! Wie behandelt es die Schlüsselbereichabfrage und SQL, wenn es localStorage statt IndexedDB verwendet? – user1424744

+0

LocalStorage Schlüsselbereich Abfrage verwenden AVL-Baum auf dem Arbeitsspeicher. es ist seit 0.4.9 release implementiert. SQL für localStorage ist noch nicht implementiert. –

1

Ich habe zwei einfache APIs geschrieben, um mit Storage API umzugehen. Einer von ihnen ist ein Wrapper, um es einfach mit den beiden Speicher lokalen und Sitzung zu arbeiten: https://github.com/chambs/minidb/

Etwas wie:

minidb.local.set('name', 'Willian');

minidb.local.get('name'); //gives you "Willian"

minidb.session.set('userData', {id:333, name: 'Joseph'});

minidb.session.get('userData'); //gives that object

Der andere ist ein Namespace, der nur für die localStorage-API (keine Sitzung) verwendet wird. Basicly können Sie "Zeilen" gruppiert in Namespaces hinzufügen, so dass Sie die Daten auf der Grundlage dieser Namensräume trennen kann: https://github.com/chambs/zonjs

Etwas wie:

zon('user').insert({name: 'Willian', email: '[email protected]'});

zon('user').del('8739874397494');

Wo 'user' ist den Namespace, den Sie definiert haben. Es ist möglich, wie viele Namensräume zu haben, wie Sie für die gleiche Herkunft/Domain

Hoffe, es hilft :)

Verwandte Themen