¿Alguien tiene experiencia en el almacenamiento de pares clave-valor en una base de datos?Pares de valores clave en la base de datos relacional
He estado usando este tipo de tabla:
CREATE TABLE key_value_pairs (
itemid varchar(32) NOT NULL,
itemkey varchar(32) NOT NULL,
itemvalue varchar(32) NOT NULL,
CONSTRAINT ct_primarykey PRIMARY KEY(itemid,itemkey)
)
Entonces, por ejemplo, pueden existir las siguientes filas:
itemid itemkey itemvalue
---------------- ------------- ------------
123 Colour Red
123 Size Medium
123 Fabric Cotton
El problema con este esquema es la sintaxis SQL necesario para extraer datos es bastante complejo. ¿Sería mejor simplemente crear una serie de columnas clave/valor?
CREATE TABLE key_value_pairs (
itemid varchar(32) NOT NULL,
itemkey1 varchar(32) NOT NULL,
itemvalue1 varchar(32) NOT NULL,
itemkey2 varchar(32) NOT NULL,
itemvalue2 varchar(32) NOT NULL,
. . .etc . . .
)
Esto será más fácil y rápido de consultar pero carece de la extensibilidad del primer enfoque. ¿Algún consejo?
A ++, esto es lo que traté de decir, pero lo articulaste mucho mejor. Tengo varias tablas de pares clave/valor en la base de datos con la que trato y Lamento todos los días. Cada vez que lo hacían porque "ahora necesitamos una solución", y cada vez, sabía que era lo incorrecto. –
¿Hay algún sistema de almacenamiento de datos más allá de SQL que maneje mejor KVP? no hacerlo bien, ¿nadie lo hace bien o no se puede hacer bien? – quillbreaker
@quillbreaker Las soluciones de NoSql giran con frecuencia en torno al almacenamiento eficiente de los pares de kv – mavnn