Frage

Ich arbeite mit Apache, PHP und MySQL für Web-Entwicklung und lokale Anwendungen. Für die letzten paar Jahre habe ich langsam C ++ gelernt und will in diesem Sommer eine Anwendung erstellen. Genauer gesagt, ich mag eine „Bibliothek“ Anwendung machen, in dem ich Informationen über die Bücher speichern kann, CDs und Aufzeichnungen, die ich besitze. Ich weiß, dass diese Art von App existiert, aber ich mag lernen, C ++ und dies scheint wie ein guter Weg, um darüber zu gehen.

Hier sind ein paar Fragen:

  1. Ist es möglich, eine eigenständige Anwendung zu erstellen, die für die Speicherung von Daten keine Datenbank benötigt?

  2. Wenn die Antwort auf # 1 oben mit „Ja“ ist, ist es eine gute Idee, dies für eine Anwendung zu tun, die möglicherweise benötigen könnten eine Menge von Daten zu verwalten?

  3. Welche Daten-Storage-Optionen würden Sie für die Verwendung empfohlen mit einer C ++ Anwendung?

Danke!

Update Nun, es gab viele gute Antworten. Dies ist so eine großartige Seite mit so vielen Mitwirkenden. Es stellt sich heraus, dass ich vielleicht nicht wirklich die C ++ Weg jetzt gehen müssen. Ich jetzt merke, dass ich die meisten bin interessiert einen Antrag schriftlich, dass Dosen Funktion als „Bibliothek“ Organisationssystem mehr als ich möchte C ++ verfolgen. Vielen Dank an alle für eure Antworten!

War es hilfreich?

Lösung

Ist es möglich, eine eigenständige Anwendung zu erstellen, die für die Speicherung von Daten keine Datenbank erforderlich?

Ja, Sie könnten eine Art von benutzerdefinierten Dateiformat nicht zum Speichern von Daten.

Wenn die Antwort auf # 1 oben mit „Ja“ ist, ist es eine gute Idee, dies für eine Anwendung zu tun, die möglicherweise benötigen könnten eine Menge Daten zu verwalten?

Es ist nicht wirklich eine gute Idee, es sei denn, Sie wirklich über die Speicherung von Daten in einer strukturierten Datei lernen wollen.

Welche Daten-Storage-Optionen würden Sie für die Verwendung empfohlen mit einem C ++ Anwendung?

Ich würde Blick auf SQLite . Es ist eine Datenbank, aber es keinen separaten Motor benötigen.

Andere Tipps

Wenn Sie keine Datenbank verwenden möchten, können Sie Ihre Daten in einer Datei speichern (oder vielleicht mehr als eine). Wenn ja, ist die Frage wohl: Welches Dateiformat ist die beste? Die Antwort hängt von verschiedenen Faktoren ab:

1) Schneller Zugriff, geringe Größe und leicht zu analysieren? Die Antwort lautet „Binärdaten“. Schreiben Sie einfach Ihre Daten direkt als Service-Leistung in die Ausgabedatei mit Fwrite . Es gibt zwei Nachteile: Die Dateien sind nicht menschlich lesbar und es ist umständlich zu verschiedenen Versionen zu erhalten. Wenn die Daten, die Sie lesen nicht genau das, was Sie erwarten, laufen Sie schnell in Schwierigkeiten.

2) Menschen lesbare und leicht zu pflegen? Das ist, was XML ist für. Es gibt bereit Parser wie TinyXML zu verwenden, das sind hervorragende Werkzeuge für Daten-Datei zu schreiben. Der Nachteil ist, dass das Schreiben Laden / Speichern-Routinen mehr Zeit in Anspruch nimmt (viel ist, viele Fälle).

3) Bibliotheken, die die Arbeit für Sie tun. Das MFC bietet die CArchive-Klasse, aber es gibt auch andere und wahrscheinlich bessere Werkzeuge, um dies zu tun.

  1. Ja
  2. Es hängt von den Daten, „viele Daten“ relativ ist, können Sie die Informationen über 1000 Bücher finden, dass in mehreren MBs gespeichert werden können, dann wäre es zuviel des Guten zu speichern, dass in einem DB, es sei denn, es ein leichtes ist DB wie sQLite
  3. Ich würde empfehlen, zu einem reinen Textformat kleben wie CSV oder XML .

Im Interesse des Lernens, würde es Ihnen helfen, viel NICHT ein DB-Engine zu verwenden, es sei denn, Sie SQL und relationale DB-Design lernen wollen. Auf der anderen Seite ist eine DB-Engine wird die Entwicklung schneller und einfacher, da machen, weil es Indizes für verschiedene Daten erstellen werden Sie einfach und effizient suchen helfen.

So ist es bis zu Ihnen.

Hmmm ...

Natürlich können Sie dies tun.

Was Sie sprechen über das Tun in der Zeit zurück in die Zeit verstärkt vor dem RDBMS erfolgreich wurde. Das ist nicht schwer zu tun, aber man könnte auch nimmt einige Lektionen gelernt:

  1. Bevor Sie beginnen Codierung - oder zumindest, bevor Sie Daten-Zugangscode zu schreiben, tun Sie Ihre Datenbank-Design, als ob Sie eine Datenbank verwenden würden - welche Daten brauchen Sie? Können Sie die Anzahl der Attribute ( „Felder“) reduzieren Sie brauchen? Was sind die Gemeinsamkeiten zwischen Medientypen in Ihrer Bibliothek? etc.
  2. Betrachten Verwendung von Verzeichnisstrukturen und Dateinamen als Bit einer Ad-hoc-Speicherstruktur. Dadurch werden die Daten direkt in die Hände der Befehlszeilenprogramme setzen, sollten Sie brauchen oder wollen die Daten über Ihr Programm vorhanden Fähigkeiten verwalten. Zum Beispiel Bücher könnten alle in einem Unterverzeichnis Bücher sein, und innerhalb diesem, könnten Sie ISBN oder Titel als Dateinamen verwenden. Ich suche nach Dingen, die natürlich Art als Dateinamen ls, dir wird, oder was auch immer Ihre CLI Anwendungen.
  3. Eine weitere gute Wahl wäre es in einem XML-Format zu setzen. Möglicherweise beide - eine Verzeichnishierarchie für das Gesamtdatenlayout verwenden und die Bibliothek Eingabedaten in Textdateien in einem XML-Format setzen. Dies könnte sich irgendwann praktisch sein.
  4. Legen Sie die Daten nur im Textformat als Strings - keine Binärdaten! Dies ist wichtig, wieder für den Zugriff der Lage zu sein / manipulieren die Daten außerhalb des Programms.
  5. Mit einer solchen Strategie können Sie System-Tools wie grep, sed lex und so weiter völlig ungeplante Dinge mit den Daten zu tun, sollte die entstehen muss.
  6. Haben Sie ein Merkmal - oder ein separates Leseprogramm schreiben -, die Ihre „Datenbank“ geht und gibt den gesamten Inhalt als einfacher Text, eine Zeile pro Eintrag. Sie könnten auch Optionen, die ihm sagen, welche Art von Medien ausgeben, etc. Auch einen Flag enthalten, die Sie das Trennzeichen zwischen den Attributen für die Ausgabe läßt gesetzt - durch Komma getrennt eine gemeinsame Wahl ist, aber Sie mögen vielleicht auch nur einen Raum, eine carrage Rückkehr, neue Linie, oder was auch immer. Wenn Sie es ein optionales Flag lassen den Benutzer Gebrauch machen alles und geben Sie Ihren Liebling Standard, sollte es in Ordnung sein.
  7. Ihren Code modular, so dass Sie Ihre Speicherstrategie später ersetzen können, wenn Sie so wählen, und haben nicht das ganze Programm neu hacken. Sie könnten sogar mehrere Speicherstrategien liefern.

Das sollte es tun.

Beachten Sie, dass die Menge an Daten, die Sie verwalten sein werden, mit moderner Computer-Hardware, ist nicht wahrscheinlich jemals eine Leistung oder Raum Problem zu werden, also keine Sorge um ein paar Bytes Sparend -. Es ist nicht die Mühe wert

Viel Glück, und die Fahrt genießen.

  1. Ja.
  2. Es kann sein, aber es sei denn, Ihre Bedürfnisse mehr sind darauf spezialisiert, als sie erscheinen, ein Mehrzweck-Datenbankmanager ist wahrscheinlich ein besserer Weg zu gehen.
  3. Für so etwas, ich denke, würde einer der (vielen) integrierbare Datenbank-Manager verwenden, die verfügbar sind.

Da du bist (scheinbar) tut dies in erster Linie für Selbsterziehung, nicht wirklich Gebrauch, es könnte sinnvoll, den Code ohne Datenbankmanager zu schreiben, um die Speicherung zu handhaben. Schreiben Sie den gesamten Code auf Ihrem eigenen Willen (mit einem bisschen Pflege) in der Regel in etwas höheren Geschwindigkeit führt, auf Kosten ziemlich viel zusätzlicher Arbeit und in der Regel eines gewissen Verlust an Flexibilität. Das größte Problem von einem Lern ??Gesichtspunkt ist, dass ziemlich viel, was Sie diese lernen tun wird nur unter ziemlich engen Verhältnisse gelten (dh für die meisten typischen Anwendungen Sie wird wollen eine Datenbank-Manager verwenden, so Lernen ohne zu tun, selten gewinnt viel).

Ein bisschen hängt auch von Ihrer beabsichtigten Verwendung / Publikum. Wenn Sie mehr als einen Benutzer zu einer Zeit unterstützen wollen, werden die Dinge viel schwieriger fast sofort (zumindest so effizient tun). Wenn Sie nur in einem Benutzer in der Lage interessiert zu sein in einer Zeit, auf die Datenbank zuzugreifen, hält die Dinge viel einfacher.

Ich würde auch empfehlen SQLite .

Von ihrer Web-Seite:

"SQLite ist eine Software-Bibliothek, dass Geräte eine in sich geschlossene, serverless, Zero-Konfiguration, Transaktions- SQL-Datenbank-Engine. SQLite ist die am weitesten verbreitete SQL-Datenbank-Engine in der Welt. Der Quellcode für SQLite ist in der Public Domain . "

„Denken Sie an SQLite nicht als Ersatz für Oracle aber als Ersatz für fopen ()“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top