Alternativen zu MySQL [geschlossen]

7

Ich möchte Daten persistent für meine Anwendung speichern, aber ich brauche keine vollständige relationale Datenbank. Ich könnte wirklich mit einem grundlegenden "Cache" -artigen persistenten Speicher auskommen, wo die Struktur nur ein (Schlüssel, Wert) Paar ist.

Anstelle einer Datenbank, was sind meine besten, skalierbaren Optionen?

    
Dave Andrews 28.11.2008, 16:49
quelle

11 Antworten

13

Es gibt immer SQLite , eine Datenbank, die in einer Datei gespeichert ist. SQLite hat bereits eine integrierte Nebenläufigkeit, so dass Sie sich nicht um Dinge wie Dateisperren kümmern müssen, und es ist wirklich schnell für Lesevorgänge.

Wenn Sie jedoch viele Datenbankänderungen vornehmen, sollten Sie sie alle gleichzeitig in einer Transaktion ausführen . Dadurch werden die Änderungen nur einmal in die Datei geschrieben, und nicht bei jeder Ausgabe einer Änderungsabfrage. Dies erhöht die Geschwindigkeit der Durchführung mehrerer Änderungen dramatisch.

Wenn eine Änderungsanfrage ausgegeben wird, unabhängig davon, ob sie sich in einer Transaktion befindet oder nicht, wird die gesamte Datenbank gesperrt, bis diese Abfrage beendet ist. Dies bedeutet, dass extrem große Transaktionen die Leistung anderer Prozesse beeinträchtigen können, da sie auf den Abschluss der Transaktion warten müssen, bevor sie auf die Datenbank zugreifen können. In der Praxis habe ich nicht festgestellt, dass dies so auffällig ist, aber es ist immer eine gute Übung, zu versuchen, die Anzahl der von Ihnen ausgeführten Datenbankmodifizierungsabfragen zu minimieren.

    
Kyle Cronin 28.11.2008 16:53
quelle
6

Wenn Sie einen 'persistenten Cache' haben möchten und bereits memcached verwenden, überprüfen Sie memcachedb . Es ist eine persistente Hashtable mit dem Memcached-Protokoll, keine Notwendigkeit für einen neuen Client (aber einen neuen Daemon)

    
Javier 28.11.2008 17:16
quelle
3

Ich frage kürzlich eine ähnliche Frage . Hier sind einige Möglichkeiten:

Foredecker 28.11.2008 19:19
quelle
2

Wenn Sie Skalierbarkeit benötigen, ist ein RDBMS die beste Wahl. Auf der grundlegendsten Ebene können Sie Datenstrukturen in Dateien serialisieren - allerdings müssten Sie dann Probleme mit der Dateisperrung berücksichtigen, die den gleichzeitigen Zugriff einschränken würden.

SQLite ist eine SQL-Datei-basierte Datenbank-Engine, die ohne persistenten Datenbank-Daemon (in PHP zum Beispiel läuft es als eine Erweiterung) ausgeführt werden kann, aber es hat auch Nebenläufigkeit Probleme (lesen Sie die Antworten zu diese Frage , die Ihnen helfen könnte zu entscheiden, ob SQLite das Richtige für Sie ist).

Wenn Sie nicht wirklich einen guten Grund haben, kein echtes DRBMS zu verwenden, würde ich vorschlagen, dass Sie bei MySQL oder anderen "vollwertigen" Engines bleiben.

    
Eran Galperin 28.11.2008 16:55
quelle
1

Wenn Sie etwas wirklich Skalierbares wollen, würde ich mich nicht für eine flache oder XML-Datei entscheiden. Wenn Ihre Daten wachsen, könnte Ihre Leistung beeinträchtigt werden.

Wenn Sie irgendwann eine Menge Daten haben , würde ich mich trotzdem für eine Datenbank entscheiden - ich würde mir etwas wie SQLIte mit einem sehr einfachen Schema, das Ihren Anforderungen entspricht.

    
Galwegian 28.11.2008 16:53
quelle
1

Ich bin wirklich nicht sicher, ob Sie sollten , aber haben Sie darüber nachgedacht, einfach Informationen in einem XML-Dokument zu speichern, wenn es wirklich dieses Licht ist? Und wenn nicht, hast du SQLite in Erwägung gezogen?

    
annakata 28.11.2008 16:54
quelle
1

Wenn Sie ein Java-Programm schreiben, das eine eingebettete Datenbank haben möchte, schauen Sie sich hsqldb an, da es in Java geschrieben ist und viel besser funktioniert als sqlite, wenn es aufgerufen wird von Java-Programmen.

    
Jared 28.11.2008 17:04
quelle
1

Wenn Sie Java schreiben, dann gibt es Java-Datenbank-Implementierungen (Jared erwähnt hsqldb, es gibt andere), die Sie direkt einbeziehen können.

SQLite eignet sich für die statische Einfügung, Sie können jedoch auch MySQL in Ihre Anwendung einschließen, wenn Sie eine kompatible Sprache wie C verwenden.

Ich denke, dass Sie es begrüßen würden, auch SQL zur Verfügung zu haben. XML-Dateien schneiden es einfach nicht mehr ab, vielleicht vor ein paar Jahren beim Schreiben von PDA-Software, aber auch das iPhone und Android enthalten nun SQLite.

    
JeeBee 28.11.2008 17:08
quelle
1

Für Schlüssel = Wert-Paare können Sie das INI-Dateiformat mit einfachen Lade- und Speicherprozeduren verwenden, um es zu laden und in der Hash-In-Memory-Tabelle zu speichern.

Das kann später zu irgendwas hochskalieren, nur durch Ändern der Lade- und Speicherprozeduren, um mit db zu arbeiten.

    
dmajkic 28.11.2008 18:00
quelle
1

Sie können CounchDB ausprobieren, es ist eine sehr flexible dokumentenorientierte Datenbank, die Sie nicht zur Definition eines Schemas zwingt im Voraus. Es wurde in Erlang geschrieben und ist daher eine sehr skalierbare Lösung. Es kann leicht über eine REST-Schnittstelle abgefragt werden.

    
Adam Byrtek 28.11.2008 18:28
quelle
1

hsqldb im In-Memory-Modus wird Ihnen eine viel bessere Leistung als Flat-File-basierte Datenbanken geben. Es ist ziemlich einfach zu benutzen. Und wenn die Tabelle zu groß wird, gibt es eine Option, sie auch auf der Festplatte zwischenzuspeichern. Sehen Sie sich diesen Leistungsvergleich an:

Ссылка

    
anand.trex 28.11.2008 17:15
quelle