Embedded couchDB

8

CouchDB ist großartig, ich mag seine p2p Replikation Funktionalität, aber es ist ein bisschen größer (weil wir Erlang installieren müssen) und langsamer, wenn es in der Desktop-Anwendung verwendet wird.

Wie ich in Intel Duo Core CPU getestet,

  1. 12 Sekunden zum Laden von 10000 Dokumenten
  2. 10 Sekunden zum Einfügen von 10000 doc, aber 20 Sekunden zum Aktualisieren der Ansicht, also insgesamt 30 Sekunden

Gibt es keine SQL-Implementierung, die die gleiche P2P-Replikation -Funktionalität hat, aber die Größe ist sehr klein wie sqlite und die Geschwindigkeit ist ziemlich gut (1 Sekunde, um 10000 Dokumente zu laden).

    
Chang 23.12.2010, 05:50
quelle

2 Antworten

3

Leider enthält die Frage nicht genügend Details zu Ihren App-Anforderungen, daher ist es schwierig, eine Empfehlung zu geben. Wie auch immer, mir ist keine andere Speicherlösung bekannt, die eine ähnliche / fortgeschrittene P2P-Replikation bietet.

Ein paar Fragen / Kommentare zu Ihren Anforderungen:

  1. Was für eine Desktop-App benötigt 10.000 Einschübe / Sekunde?
  2. wenn Sie Größe sagen, worauf genau beziehen Sie sich?

Vielleicht möchten Sie sich Folgendes ansehen:

  • Redis
  • RavenDB

Überprüfen Sie auch einige der anderen NoSQL-Lösungen, die auf Ссылка aufgeführt sind, gegen Ihre App-Anforderungen.

    
alexpopescu 23.12.2010 20:57
quelle
3

Haben Sie versucht, das Hovercraft und / oder den Erlang View Server zu benutzen? Ich hatte ein ähnliches Problem und fand, dass ich in der Erlang VM blieb (und dadurch Ausflüge zu SpiderMonkey vermeiden konnte), was mir den nötigen Schub verschaffte. Ich habe 3 Dinge gemacht ...

  1. Verbesserte Abfragen: Die Portierung Ihrer mapreduce-Funktionen von js auf "native" Erlang bietet normalerweise eine enorme Leistungssteigerung bei der Abfrage von Couch (http://wiki.apache.org/couchdb/EnableErlangViews). Auch das Verwalten von Ansichten ist einfacher, da Sie externe Bibliotheken oder Ihre eigenen kompilierten Module aufrufen können (fügen Sie sie einfach zu Ihrem ebin dir hinzu), wodurch die Anzahl der Uploads während der Entwicklung reduziert wird.

  2. Boosting-Einsätze: Die Verwendung von Hovercraft für Einsätze führt zu einer Leistungssteigerung von X100 (https://github.com/jchris/hovercraft). Dies wurde im CouchDB-Buch (http://guide.couchdb.org) erwähnt /draft/performance.html)

  3. Pre-Run Views: Das letzte, was Sie für Desktop-Apps tun können, ist das Starten Ihrer Ansichten während des Starts der Anwendung (zB wenn der Splash-Screen angezeigt wird). nachfolgende Läufe sind schneller.

Diese haben mir sehr geholfen.

  • Edmond -
Edmond Begumisa 27.12.2010 19:29
quelle