2008-09-25 7 views
5

Bei sehr kleinen Datensätzen besteht die Richtlinie, in der ich arbeite, im Allgemeinen darin, sie in Textdateien zu stecken, aber das kann nach meiner Erfahrung ein Entwicklungskiller sein. Daten stammen in der Regel aus der Datenbank, und wenn dies nicht der Fall ist, ist der Prozess, der zum Einstellen/Speichern des Prozesses führt, im Allgemeinen im Code verborgen. Mit der Datenbank können Sie allgemein alle Ihnen zur Verfügung stehenden Daten und die Art und Weise, wie sie sich auf andere Daten bezieht, sehen.Wie gehen Sie mit kleinen Datensätzen um?

Manchmal für wirklich kleine Sätze von Daten ich nur speichern sie in einer internen Datenstruktur im Code (wie ein Perl-Hash), aber dann, wenn eine Änderung benötigt wird, ist es in den Händen eines Entwicklers.

Wie gehen Sie also mit kleinen, selten geänderten Datensätzen um? Haben Sie Kriterien für die Verwendung einer Datenbanktabelle oder einer Textdatei oder ..?

Ich bin versucht, nur für absolut alles eine Datenbanktabelle zu verwenden, aber ich bin mir nicht sicher, ob es irgendwelche Auswirkungen darauf gibt.

Edit: Für Kontext:

Ich habe gelegentlich auch in Zukunft ein neues Formular auf der Website für eine Handvoll von Unternehmen zu setzen, frage, wird mit mehr hinzugefügt. Außer, Unternehmen haben keine Kontakt-E-Mail-Adressen .. die Benutzer innerhalb dieser Unternehmen tun (wie sie Jobs über ihre eigenen Konten). Jetzt wollen wir jedoch eine "spekulative Anwendung" -Funktionalität und das Formular benötigt eine E-Mail-Adresse, um diese Anwendungen zu senden. Aber wir möchten auch keine E-Mail-Adresse als eine Eigenschaft in das Formular stellen oder Spammer können es einfach als offenes E-Mail-Gateway verwenden. Also, klar, wir brauchen eine ID -> contact_email Art Beziehung mit Unternehmen.

SO kann ich entweder eine Spalte zu einer Tabelle mit Millionen von Zeilen hinzufügen, die im wahrsten Sinne des Wortes etwa 20 mal verwendet werden ODER eine neue Tabelle erstellen, die höchstens etwa 20 Zeilen enthält. Normalerweise geht es in der Vergangenheit darum, eine fiese Textdatei zu erstellen und sie von dort zu lesen. Aber dies erzeugt Wartungs-Albträume und diese Textdateien werden häufig überprüft, wenn Daten von Änderungen abhängig sind. Vielleicht ist das ein Fehler im Prozess, aber ich bin nur daran interessiert, Ansichten dazu zu hören.

+0

Ich denke, dass Sie hier einige Kontext hinzufügen müssen, um eine gute Antwort zu erhalten. – Galwegian

Antwort

1

Wenn dies kleine Konfig-ähnliche Daten sind, verwende ich ein einfaches und allgemeines Format. Ini, Json und Yaml sind normalerweise in Ordnung. Java- und .NET-Fans mögen auch XML. Kurz gesagt, verwenden Sie etwas, das Sie leicht zu einem In-Memory-Objekt lesen und vergessen können.

2

Legen Sie es in die Datenbank. Wenn es sich selten ändert, cache es in deiner mittleren Stufe.

2

Das Beispiel, das sofort in den Sinn kommt, ist das, was geeignet ist, als eine Aufzählung gespeichert zu haben und was geeignet ist, in einer "Nachschlage" -Datenbanktabelle gespeichert zu sein.

Ich neige dazu, "die Linie zu zeichnen" mit der Regel, dass, wenn es zu einer Spalte in der Datenbank führen wird, die eine "magische Zahl" enthält, die einem Enumerationswert zugeordnet wird, die Enumeration wirklich als Nachschlagetabelle vorhanden sein sollte. Wenn es nicht mit den in der Datenbank gespeicherten Daten zusammenhängt (z. B. Anwendungskonfigurationsdaten statt von Benutzern generierten Daten), dann ist es eine Aufzählung auf dem ganzen Weg.

2

Sicher hängt es vom Benutzer des Software-Tools ab, das Sie entwickelt haben, um den Datensatz unabhängig von der Größe zu verwenden?

Es kann nur sein, dass sie Excel kennen, also müsste Ihr Tool eine .csv-Datei analysieren, die sie erstellen.

Wenn es für die Entwickler geschrieben wird, dann wen kümmert es, was Sie verwenden. Ich bin jedoch kein Fan von überladenen Datenbanken mit kleinen oder flüchtigen Daten.

2

Wir haben ein Standardkonfigurationsdateiformat (Schlüssel: Wert) und eine Klasse, um es zu handhaben. Wir verwenden das nur für alle Projekte. Meistens setzen wir nur persistente Eigenschaften für unsere Anwendungen (Handy-Entwicklung), also ist das eine passende Sache.YMMV

+0

Danke, das ist eine interessante Idee! –

2

In Fällen, in denen das Programm auf eine Datenbank zugreift, werde ich alles darin speichern: einfacher für das Backup und das Bewegen von Daten herum.

Für kleine Programme ohne Datenbankzugriff speichere ich meine Daten in den .net-Einstellungen, die in einer XML-Datei gespeichert sind - natürlich ist dies eine Funktion von C#, so dass es möglicherweise nicht für Sie gilt.

Wie auch immer, ich sorge dafür, alle Daten an einem Ort zu speichern. Normalerweise eine Datenbank.

1

ich es in die Datenbank in der Haupttabelle hinzufügen würde:

  1. Backup und Recovery (Sie wollen diese Textdatei erholen, nicht wahr?)
  2. Adhoc anfragende (da Sie es tun können, wird ein SQL-Tool und verbinden Sie es mit den anderen Datenbankdaten)
  3. Wenn die Datenbankspalte leer ist, sollte die Speicheranforderungen für sie minimal sein (nichts, wenn es eine NULL-Spalte am Ende der Tabelle in Oracle ist)
  4. Es wird einfacher sein, wenn Sie mehrere Anwendungsserver haben möchten, da Sie t nicht benötigen o halten mehrere Kopien von einigen zusätzlichen Konfigurationsdatei um
  5. es in ein kleines Kind Tisch Putting erschwert nur das Design ohne jede echte Vorteile zu geben

Sie können auch bereits in der Datenbank als Teil derselben Zeile gehen werden von Ihrer Verarbeitung sowieso, so ist die Leistung wahrscheinlich kein Problem. Wenn nicht, könnten Sie es im Speicher zwischenspeichern.

2

Haben Sie in Betracht gezogen sqlite? Es ist dateibasiert, was Ihrem Gefühl entspricht, dass "nur eine Datei funktioniert" (Zero-Konfiguration), aber es ist eine vollkommen gute Datenbank und skaliert bemerkenswert gut. Es unterstützt eine Reihe von APIs und es gibt numerous front ends für die Verwaltung.

Verwandte Themen