Ho bisogno di memorizzare una quantità enorme di testo nel database mysql. Saranno milioni di record con il tipo di campo LONGTEXT e la dimensione del database sarà enorme.Compressione del testo prima di memorizzarlo nel database
Quindi, vorrei chiedere, se esiste un modo sicuro per comprimere il testo prima di memorizzarlo nel campo TESTO per risparmiare spazio, con la possibilità di estrarlo indietro se necessario?
Qualcosa di simile:
$archived_text = compress_text($huge_text);
// saving $archived_text to database here
// ...
// ...
// getting compressed text from database
$archived_text = get_text_from_db();
$huge_text = uncompress_text($archived_text);
C'è un modo per fare questo con PHP o MySQL? Tutti i testi sono codificati in utf-8.
UPDATE
La mia domanda è un grande sito web della letteratura in cui gli utenti possono aggiungere i loro testi. Ecco la tabella che ho:
CREATE TABLE `book_parts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`book_id` int(11) NOT NULL,
`title` varchar(200) DEFAULT NULL,
`content` longtext,
`order_num` int(11) DEFAULT NULL,
`views` int(10) unsigned DEFAULT '0',
`add_date` datetime DEFAULT NULL,
`is_public` tinyint(3) unsigned NOT NULL DEFAULT '1',
`published_as_draft` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `key_order_num` (`order_num`),
KEY `add_date` (`add_date`),
KEY `key_book_id` (`book_id`,`is_public`,`order_num`),
CONSTRAINT FOREIGN KEY (`book_id`) REFERENCES `books` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Attualmente ha circa 800k record e pesi 4 GB, il 99% delle query sono SELECT. Ho tutte le ragioni per pensare che i numeri aumentino schematicamente. Non mi piacerebbe archiviare i testi nei file perché c'è una logica piuttosto pesante e il mio sito web ha parecchi successi.
Se si memorizzano dati binari, utilizzare un campo BLOB, non testo. – Brad
Si consiglia di riconsiderare il proprio veto sull'archiviazione basata su file. Non sono sicuro di cosa intenda per "logica pesante", ma non vedo come la memorizzazione dei testi nel database sia automaticamente migliore dei file per un sito con molto traffico. – grossvogel