2009-07-02 13 views
1

Ich habe mit DBfDotNet untersucht, um einige Sensordaten zu speichern. Für alle, die nicht wissen, worüber ich spreche, ist es eine Datenbank-Engine in C# geschrieben, überprüfen Sie es auf codeplex oder diese sehr gute codeproject Artikel. Die Datenbank, mit der im Codeprojekt Artikel für Timings verglichen wird, ist SQLite.Welche Probleme gibt es mit einfachen Dateidatenbanken?

Von den Tests, die ich getan habe, ist es wesentlich schneller als andere eingebettete Datenbanken, die ich ausprobiert habe. Es ist im Wesentlichen eine Objektdatenbank, so dass wir nur das Datum speichern können und uns nicht um schreckliche Dinge wie ADO.NET, ORM und SQL kümmern müssen!

Mit 500k Zeilen in der Datei, eine Abfrage wie:

IEnumerable<People> result = peoples.Where<People>(x => x.dob < DateTime.Now.AddYears(-30) 
                && x.dob > DateTime.Now.AddYears(-10) 
                && x.name.StartsWith("Ca") 
               ); 

dauerten etwa 5 Sekunden.

Was wären die Nachteile einer solchen Datenbank?

Ein Problem ist, dass die Spalten in der Datenbankdatei eine feste Breite haben. Wenn also die Daten variieren, wäre Platz verschwendet. Die Daten, die ich beim Speichern anspreche, sind sowieso fest, also wäre das für mich kein Problem.

Es ist nicht threadsicher. Dies ist kein Problem für mich, aber dies könnte immer als optionaler Wrapper hinzugefügt werden.

Auch seine weit von ACID und ein Fehler während eines Schreibvorgangs könnte einige Probleme verursachen!

Antwort

1

Ohne auf funktionale Fragen eingehen zu müssen, sollten Sie Unterstützung in Betracht ziehen. Gibt es genug Entwickler für das Projekt und Benutzer des Projekts, um sicherzustellen, dass Fehler schnell behoben werden können?

Oder anders gesagt: Ist die Zeitersparnis in der Entwicklung gerechtfertigt, wenn Sie alle Daten aufgrund eines Defekts in diesem Motor verlieren?

Können Sie auch die Datendateien sichern, während Sie sie verwenden, oder benötigen Sie einen Mechanismus zum Puffern der Sensordaten während der Sicherung?

+0

Ich denke, Unterstützung ist das Hauptproblem, das ich haben werde. Ich habe das Gefühl, dass ich die meisten Probleme beheben kann und ich habe die ganze Quelle gelesen. Aber es ist sehr anders als alles, was ich geschrieben habe und ich möchte nicht wirklich 6 Monate auf der ganzen Linie bekommen und einen Anruf bekommen, der mir sagt, dass eine Datenbank nicht eröffnet wird! – Tim

Verwandte Themen