2010-11-15 7 views
20

Nach dem Lesen meiner anderen Frage, Using a Relational Database for Schema-Less Data, begann ich mich zu fragen, ob ein Dateisystem besser als eine relationale Datenbank zum Speichern und Abfragen von schemaless Daten geeignet ist.Verwenden eines Dateisystems (keine Datenbank!) Für schemalose Daten - Best Practices

Anstatt nur ein Dateisystem auf MySQL aufzubauen, warum speichern Sie nicht einfach die Daten direkt im Dateisystem? Indizierung muss herausgefunden werden, aber moderne Dateisysteme sind sehr stabil, haben großartige Funktionen wie Replikation, Snapshot und Backup-Möglichkeiten und sind flexibel beim Speichern von schemalosen Daten.

Allerdings kann ich keine Beispiele von jemandem finden, die ein Dateisystem anstelle einer Datenbank verwenden.

Wo finde ich weitere Ressourcen zur Implementierung einer schemalosen (oder "dokumentenorientierten") Datenbank als Layer über einem Dateisystem? Verwendet jemand ein modernes Dateisystem als schemalose Datenbank?

Antwort

0

Eine Sache, die Sie berücksichtigen sollten, ist Oracle BFILE-Datentyp, der ein Zeiger auf eine Datei auf der Festplatte ist. Vielleicht ist das das Beste aus beiden Welten? Microsoft SQL Server scheint diese Funktion nicht zu bieten.

+0

SQL Server bietet den 'FILESTREAM'-Modifizierer auf' varbinary (max) 'Spalten, mit denen die Daten in Abhängigkeit von der Größe der Daten in der Zeile oder in einer Datei auf der Festplatte gespeichert werden können. –

+0

Danke, wusste nicht, dass –

0

Es gibt ein großes Beispiel für eine Implementierung bei Amazon S3.

http://aws.amazon.com/s3/

Diese Art der Implementierung ist, wo eine Menge von Unternehmen zu bewegen, weil es grundsätzlich besser als eine relationale Datenbank kann skaliert werden kann. Der Ansatz ist einfach, und es funktioniert, und für einige Probleme ist es eine großartige Lösung. Im Fall von Amazon S3 ist es besonders schön für Cloud-Speicher, wenn Sie sich nicht um die lästige Speicherung der Daten kümmern müssen.

1

Sie können gerne einen Blick auf unsere Solid File System werfen, ein virtuelles Dateisystemprodukt mit integrierter Unterstützung für Dateimetadaten und SQL-ähnliche Suchmechanismen, die diese Daten durchsuchen. Bitte lesen Sie auch die article, die die Vorteile der Speicherung verschiedener Arten von Daten in verschiedenen Arten von Speichern beschreibt.

+0

Nur eine Verknüpfung zu Ihrer eigenen Bibliothek oder Tutorial ist keine gute Antwort. Verlinken, erklären, warum es das Problem löst, Code zur Verfügung stellen und ablehnen, dass du es geschrieben hast, ist eine bessere Antwort. Siehe: [** Was bedeutet "gute" Eigenwerbung? **] (http://meta.stackexchange.com/q/182212/200235) – JonasCz

14

Ja, ein Dateisystem könnte als Spezialfall eines NOSQL-ähnlichen Datenbanksystems betrachtet werden. Es kann einige Einschränkungen geben, die bei Designentscheidungen berücksichtigt werden sollten:

Pro: - - einfach, intuitiv.

  • nutzt Jahre Tuning und Caching-Algorithmen
  • einfache Datensicherung, möglicherweise leicht Clustering

Dinge zu denken:

  • Reichtum von Metadaten - welche Arten von Daten speichert es, wie lässt es Sie abfragen, können Sie hierarchical oder multival Ued-Attribute

  • Geschwindigkeit der Abfrage von Metadaten - nicht alle fs sind besonders gut optimiert mit etwas anderem als Größe, Daten.

  • Unfähigkeit Anfragen zu verbinden (obwohl , die ziemlich viel gemeinsam NoSQL ist)

  • ineffiziente Speichernutzung (es sei denn, die Datei Systemteilblockzuordnung durchführt, Sie in der Regel blasen 4-16K pro Artikel gespeichert unabhängig von ihrer Größe)

  • nicht die Art von Caching-Algorithmus Mai haben Sie es wünschen die Verzeichnisstruktur
  • neigt weniger abstimmbar zu sein usw.
  • Backup-Lösungen können Probleme haben je nachdem, wie Sie Dinge speichern - zu tief, zu viele Elemente pro Knoten, etc - die möglicherweise eine offensichtliche Vorteil einer solchen Struktur vermeiden. Verriegelung für ein lokales Dateisystem arbeitet ziemlich gut natürlich, wenn Sie die richtigen Routinen aufrufen, aber nicht unbedingt für eine Netzwerk-Basis fileesytem (die Probleme wurden in verschiedenen Weise gelöst worden, aber es ist sicherlich ein Design Ausgabe)