Jak ukládáte Key-Value data?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
enumag
Člen | 2118
+
0
-

Potřebuji administrátorovi dát možnost aby si nastavil několik konfiguračních direktiv (např. u e-shopu adresa a číslo účtu které se zobrazí na fakturách jako dodavatel). Potřebuji tedy nějaké Key-Value úložiště.

Ukládat to jen tak do MySQL tabulky se sloupci name a value by znamenalo buď spoustu dotazů nebo nad tím nějaké kešování + invalidaci při změně. Tahat vždy celou tabulku taky nechci protože direktiv časem může být hodně. Relační databáze tedy možná není nejlepší nápad.

Vygooglil jsem několik možností, ale chci se zeptat ještě tady co se vám osvědčilo.

Mimochodem co si myslíte o doctrine/KeyValueStore? Máte s tím někdo zkušenosti?

Editoval enumag (4. 1. 2016 18:17)

Pavel Kravčík
Člen | 1196
+
0
-

Co třeba JSON v nějakém textovém souboru? Nebo možná ideálně mít generovaný config.custom.neon a předávat si to jako parametry.

GEpic
Člen | 566
+
0
-

Kolega využívá PrestaShop s dost vysokou návštěvností a vytížeností (několik desítek objednávek denně, spousty produktů) a tam je toto řešeno klasickou databází. Kvalitní server s tím nemůže mít přeci žádný problém. :)

INSERT INTO `configuration` (`id_configuration`, `id_shop_group`, `id_shop`, `name`, `value`, `date_add`, `date_upd`) VALUES
(1, NULL, NULL, 'PS_LANG_DEFAULT', '1', '2015-04-28 12:48:18', '2015-04-28 12:48:18'),
(2, NULL, NULL, 'PS_VERSION_DB', '1.6.0.14', '2015-04-28 12:48:18', '2015-04-28 12:48:18'),
(3, NULL, NULL, 'PS_INSTALL_VERSION', '1.6.0.14', '2015-04-28 12:48:18', '2015-04-28 12:48:18'),
(4, NULL, NULL, 'PS_SEARCH_INDEXATION', '1', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(5, NULL, NULL, 'PS_ONE_PHONE_AT_LEAST', '1', '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
(6, NULL, NULL, 'PS_CARRIER_DEFAULT', '7', '0000-00-00 00:00:00', '2015-10-17 18:03:46'),
(7, NULL, NULL, 'PS_GROUP_FEATURE_ACTIVE', NULL, '0000-00-00 00:00:00', '2015-10-17 18:48:38'),
....

Samozřejmě sloupeček value je typu text a name klasický varchar(254), čili záhul.

Editoval GEpic (5. 1. 2016 16:22)

Martk
Člen | 661
+
+1
-

@enumag Používám databázi, protože většinou nemám možnost mít vlastní server. Pro usnadnění práce jsem vytvořil: správce parameterů . Definuji výchozí parametery v neonu, importuji přes panel (panel vypisuje seznam všechny parametery, u nich výchozí hodnotu, aktuální hodnotu, zda se jedná o nový parameter) nově zadané parametery a pracuji. Automaticky se invaliduje cache apod.

Editoval Antik (5. 1. 2016 17:54)

GEpic
Člen | 566
+
0
-

Antik napsal(a):

@enumag Používám databázi, protože většinou nemám možnost mít vlastní server. Pro usnadnění práce jsem vytvořil: správce parameterů . Definuji výchozí parametery v neonu, importuji přes panel (panel vypisuje seznam všechny parametery, u nich výchozí hodnotu, aktuální hodnotu, zda se jedná o nový parameter) nově zadané parametery a pracuji. Automaticky se invaliduje cache apod.

To je hodně sympatické! Taktéž využiji, díky moc!

Editoval GEpic (5. 1. 2016 20:28)

Luděk Veselý
Člen | 29
+
+1
-

enumag napsal(a):

Relační databáze tedy možná není nejlepší nápad.

wix.com pouziva mysql jako key-value storage a ocividne s vykonem problem nemaji :) http://engineering.wix.com/…etter-nosql/