Bester Ansatz für eine Datenbank mit langen Zeichenfolgen

12

Ich muss Fragen und Antworten in einer Datenbank speichern. Die Fragen werden ein bis zwei Sätze sein, aber die Antworten werden lang sein, mindestens ein Absatz, wahrscheinlich mehr.

Der einzige Weg, den ich derzeit kenne, ist eine SQL-Datenbank. Ich halte dies jedoch nicht für eine gute Lösung, da diese Datenbanken meines Erachtens nicht für Daten dieses Typs oder dieser Größe verwendet werden. Ist dies der richtige Weg oder gibt es einen besseren Weg, um diese Daten zu speichern? Gibt es einen besseren Weg als das Speichern von rohen Saiten?

gsingh2011
quelle
Haben Sie sich mit Volltextsuche befasst? en.wikipedia.org/wiki/Full_text_search
FrustratedWithFormsDesigner
Bitte definieren Sie "lang" 1k, 5M, 1GB ??
James Anderson
Warum magst du keine "rohen" Saiten? Handelt es sich bei den Daten tatsächlich um Zeichenfolgen oder handelt es sich um strukturierte Daten? Planen Sie etwas damit zu tun, das für Streicher nicht funktioniert? Ihre Frage enthält keinen eindeutigen Grund, warum eine Datenbank nicht geeignet wäre. Das gleiche gilt für Zeichenfolgen (oder CLOBS, wenn sie zu groß sind und je nachdem, welche Datenbank Sie verwenden).
Psr
Ich bezog mich auf eine clevere Art, sie zu speichern, vielleicht durch irgendeine Art von Komprimierung, nicht durch Klartextzeichenfolgen. Ich mache mir Sorgen um die Größe der Datenbank hier.
Gsingh2011
1
Welches RDBMS verwenden Sie? Oracle bietet eine hervorragende Unterstützung für die Verarbeitung und Suche nach Text.
Matthew Flynn

Antworten:

19

Mongodb ist großartig, aber Sie kennen sich mit SQL aus. Es ist nichts Falsches daran, lange Antworten in Feldern zu speichern. Sie können Bilder oder sogar Dateien in SQL speichern. Ich denke, die maximale Feldgröße beträgt 2 GB.

Ich bin mir fast sicher, dass diese Antwort selbst irgendwo in einem Tabellenfeld gespeichert wird.

Tausende von ihnen sind kein Problem. Auch Millionen sollten kein Thema sein. Sie können die Volltextindizierung verwenden, wenn Sie das Feld nach Schlüsselwörtern oder Ähnlichem durchsuchen. Aber ich versuche nicht zu optimieren, bis ich ein Problem sehe. Computer sind billig, Speicherplatz ist grundsätzlich kostenlos.

DanielEli
quelle
11
+1 auf nicht optimieren, bis Sie tatsächlich das Problem haben!
Großmeister
4
Die maximale Feldgröße wird in ANSI SQL nicht angegeben, sondern hängt vom DBMS ab (und normalerweise von einigen anderen Faktoren wie Zeichensatz, Spaltendatentyp, Speicher-Engine, Betriebssystem usw.).
tdammers
6

Es ist kein Problem, Langtext in Datenbanken (SQL oder auf andere Weise) zu speichern. So werden praktisch alle Blogeinträge (Think Wordpress), Nachrichtenartikel und Forenbeiträge (Think Phpbb) im Internet gespeichert. Ich kenne die spezifischen Details des Setups von Stack Exchange nicht, aber ich bin sicher, dass Ihre Frage auch in einer Datenbank gespeichert ist. Die meisten SQL-Datenbanken haben einen TEXTFeldtyp oder einen entsprechenden Typ, nur um Textdaten beliebiger Länge zu speichern. Viele haben auch Volltextsuchsysteme eingerichtet.

Treffen Sie technische Entscheidungen basierend auf technischem Wissen und Verständnis, nicht auf Gefühlen.

GroßmeisterB
quelle
5

Ja, es ist der richtige Weg. Das Speichern von Zeichenfolgen in einer SQL-Datenbank ist das, was Sie tun möchten. Eine meiner Tabellen in der Datenbank enthält mehr als einen Gig an Klartextdaten und funktioniert einwandfrei.

Wenn Sie sich Sorgen um Speicherplatz machen, denken Sie daran, dass es billig ist!

Wenn Sie sich Sorgen um die Leistung machen - keine Sorge, eine gute Datenbank kann auf so viele Daten skaliert (oder verkleinert) werden, wie Sie sie einwerfen möchten.

Das Letzte, was Sie tun möchten, ist, jetzt mit der Optimierung zu beginnen (Komprimieren von Zeichenfolgen, bevor Sie sie in die Datenbank einfügen, oder etwas Nussiges), bevor es tatsächlich zu einem Problem wird. Du gibst dir nur mehr Arbeit.

Rocklan
quelle
2

Es ist kein Problem, große Zeichenfolgen oder Binärdaten zu speichern. Ich habe mit einer Datenbank mit mehr als einem Terabyte Binärdaten gearbeitet und sehr gut gearbeitet (postgres). Das einzig schlechte war die Sicherungszeit.

Die große Frage lautet: "Müssen Sie in diesem Text ständig suchen?"

Wenn Sie im Text nach Zeichenfolgen suchen, können Sie an eine Indexlösung denken:

Rodrigo Menezes
quelle