2013-03-13 16 views
8

È accettabile archiviare dati JSON in una riga della tabella MySQL? Ho bisogno di memorizzare gli array in un database mysql. Il problema è che non so quante colonne avrò bisogno per ogni utente. Quindi ho pensato di archiviare JSON in una riga denominata array per esempio. È questo il modo migliore?Memorizzazione di JSON nel database MySQL?

Edit:

Inoltre, sto usando text come tipo di colonna della tabella.

+3

Se si è sicuri che non è mai necessario fare nulla con i dati JSON (come la query per proprietà specifiche al suo interno), perché no ... ma in ogni caso non è una buona pratica. –

+0

Perché avresti bisogno di una quantità diversa di colonne per utenti diversi? – beny23

+0

@Pekka 웃 Ho bisogno di interrogare all'interno di esso – user1947561

risposta

12

Sì, è una buona idea usare mysql come archivio di valore-chiave, infatti Facebook lo fa per alcuni usi.

CREATE TABLE `json` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `data` blob NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

La struttura della tabella sopra ti porterà lontano. È molto facile da tagliare o raggruppare.

Modifica: il punto qui è utilizzare PHP, Ruby ecc. Per gestire json/data. Fai SELECT ..., fai le tue modifiche, quindi INSERT ... ON DUPLICATE KEY UPDATE ....

+0

Potrebbe essere necessario interrogare alcuni dei dati nel JSON, quindi questo * non * potrebbe essere l'idea migliore. –

+5

Beh, non è nella domanda ... – Gustav

+1

Sì, lo so. Ha aggiunto questo come commento alla domanda. –

0

Non è un problema. mySQL può già gestire la maggior parte delle parentesi e caratteri funky nel loro campo di testo.

0

Penso che non lo sia. Che ne dici di quattro mesi dopo decidi di aggiungere un nuovo attributo alla tua entità o di rimuovere alcuni attributi dalla tua entità? Come analizzerete i vostri vecchi contenuti json? Se non sai quante colonne hai bisogno nella tua tabella, dovresti pensare in un modo diverso e magari creare una struttura dinamica come usare la tabella user_column

2

Memorizzare più di un pezzo di dati in un campo di database relazionale è generalmente sbagliato . È possibile pensare a casi in cui sarebbe accettabile, ma non per memorizzare un intero utente.

Se un utilizzo di una struttura di database relazionale non è sufficiente, si potrebbe voler esaminare un database NoSQL inestead di MySQL.

Problemi correlati