Ist es empfehlenswert, die Serialisierung in PHP zu verwenden, um Daten in der Datenbank zu speichern?

Ich bin auf einen interessanten Kommentar in gestoßenphp.net über die Serialisierung von Daten, um sie in der DB zu speichern.

Es heißt:

Bitte! Bitte! Bitte! Serialisieren Sie KEINE Daten und platzieren Sie sie in Ihrer Datenbank. Serialize kann auf diese Weise verwendet werden, es fehlen jedoch der Punkt einer relationalen Datenbank und die Datentypen, die in Ihrem Datenbankmodul enthalten sind. Auf diese Weise werden Daten in Ihrer Datenbank nicht portierbar, schwer lesbar und können Abfragen erschweren. Wenn Sie möchten, dass Ihre Anwendung in andere Sprachen portierbar ist, beispielsweise, dass Sie Java für einen Teil Ihrer Anwendung verwenden möchten, für den es sinnvoll ist, Java zu verwenden, wird die Serialisierung zu einem schmerzhaften Problem. Sie sollten immer in der Lage sein, Daten in der Datenbank abzufragen und zu ändern, ohne ein Vermittlungstool eines Drittanbieters zum Bearbeiten der einzufügenden Daten zu verwenden.

Ich habe dies in meiner Karriere zu oft erlebt. Es ist schwierig, Code zu warten, Code mit Portabilitätsproblemen und Daten, die schwieriger auf andere RDMS-Systeme, neue Schemata usw. zu migrieren sind. Es hat auch den zusätzlichen Nachteil Es ist nicht einfach, Ihre Datenbank anhand eines der Felder zu durchsuchen, die Sie serialisiert haben.

Das heißt nicht, dass serialize () nutzlos ist. Es ist nicht ... Ein guter Ort, um es zu verwenden, kann eine Cache-Datei sein, die beispielsweise das Ergebnis einer datenintensiven Operation enthält. Es gibt Unmengen anderer ... Missbrauche Serialize nur nicht, weil der nächste Typ, der mitkommt, einen Wartungs- oder Migrations-Albtraum haben wird.

Ich möchte wissen, ob dies eine Standardansicht über die Verwendung von Serialisierungsdaten für DB-Zwecke ist. Das heißt, wenn es eine gute Praxis ist, es manchmal zu verwenden, oder wenn es vermieden werden sollte.

Zum Beispiel wurde ich vor kurzem angewiesen, mich selbst zu serialisieren.

In diesem Fall mussten wir folgende Daten in eine MySQL-Tabelle speichern:

Automarke.Auto Model.Auto-Version.Auto info.

Auto-Informationen waren ein Array, das alle Eigenschaften einer Version darstellte. Es handelte sich also um eine große variable Menge von Eigenschaften (unter 100 Eigenschaften). Dieses Array sollte serialisiert werden.

Der Hauptgrund, warum ich angegeben wurde, um serialize zu verwenden, war der folgende:

Da es sich um eine große Anzahl von Feldern handelt, ist es besser, die Daten zu serialisieren, um die Leistung zu verbessern, anstatt für jede Eigenschaft oder mehrere Tabellen ein Feld zu erstellen.

Persönlich stimme ich mehr mit dem Kommentar in php.net als mit dieser letzten Überlegung überein, aber ich möchte hier mehr als meine qualifizierte Meinung dazu abgeben.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage