Ich versuche ein gutes Gleichgewicht zwischen Suchbarkeit und Geschwindigkeit zu finden. Ich experimentiere mit verschiedenen Methoden.
Option 1: Serialisieren Sie das Array als serialisiertes JSON / PHP-Array und speichern Sie es in einer 'Meta'-Spalte.
id | name | meta
1 Bob {"city":"GoTown","birthdate":"1980\/8\/14","cat":"Felix"}
2 Alice {"city":"Streamville","birthdate":"1986\/6\/6","dog":"Rex"}
Option 2: Speichern Sie Schlüssel und Werte zusammen in einem Stapel.
user_id | key | value
1 name Bob
1 city GoTown
1 birthdate 1980/8/14
1 cat Felix
2 name Alice
2 city Streamville
2 birthdate 1986/6/6
2 dog Rex
Option 3: 3 Tabellen: Entites, Schlüssel, Werte. Speichern Sie jeden Schlüsselnamen nur einmal.
user_id | name
1 Bob
2 Alice
key_id | keyname
1 city
2 birthdate
3 cat
4 dog
user_id | key_id | value
1 1 GoTown
1 2 1980/8/14
1 3 Felix
2 1 Streamville
2 2 1986/6/6
2 4 Rex
Gibt es Fallstricke bei der Verwendung einer dieser Strategien? Ich möchte einige von ihnen beseitigen, wenn sie unüberwindbare Nachteile haben.
BEARBEITEN: Einige Daten wurden hinzugefügt, um schemalose Daten darzustellen
Wenn Sie sich nicht für die Verwendung von MySQL entschieden haben, können Sie DB2 als Option in Betracht ziehen. Es bietet native Unterstützung für JSON-Daten, mit denen Sie JSON-Fragmente einfach abfragen und bearbeiten können ( http://publib.boulder.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.swg.im.dbclient.json) .doc / doc / c0061316.html ).
Eine andere Alternative ist XML. Auch hier bietet DB2 native Unterstützung, einschließlich der Indizierung von XPath-Ausdrücken für die schnelle Suche. ( http://publib.boulder.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.xml.doc/doc/c0022308.html )
DB2 Express-C ist die kostenlose Edition ohne Einschränkung der Produktionsnutzung oder der Datenbankgröße.
quelle
Sie können
json
Daten auch in MySQL speichern . MySQL 5.7 unterstütztjson
Daten nativ .Siehe mysql json-Datentyp
quelle
Haben Sie NoSQL in Betracht gezogen?
Da ich für einen NoSQL-Anbieter arbeite, bin ich ein bisschen parteiisch, aber ich habe versucht, Ihre Problemdefinition zu übernehmen und sie aus einer Perspektive der besten Technologie zu betrachten. Diese Beschreibung ist ideal für NoSQL, da sie unstrukturierte Daten unterstützt und alle von Ihnen freigegebenen Optionen in NoSQL ausgeführt werden können. Meiner Meinung nach ist Option 3 ziemlich attraktiv, da Sie diese Tabellen in minimaler Zeit erstellen und damit fertig werden können. Und wenn Sie zusätzliche Spalten hinzufügen müssen, ist dies trivial und Sie können Versionen Ihrer Daten behalten. Die meisten NoSQL-DBs unterstützen das Abfragen auf viele verschiedene Arten, und die meisten davon fallen in Ihr Modell.
Die meisten NoSQL-DBs wie FatDB und RavenDB kommen in den Sinn und würden für den Windows-Bereich gut funktionieren. MongoDB usw. für andere.
quelle