Necesito almacenar una gran cantidad de texto en la base de datos mysql. Serán millones de registros con el tipo de campo LONGTEXT y el tamaño de la base de datos será enorme.Comprimir texto antes de almacenarlo en la base de datos
Por lo tanto, quiero preguntar, si hay una forma segura de comprimir el texto antes de almacenarlo en el campo TEXTO para ahorrar espacio, con la posibilidad de extraerlo de nuevo si es necesario?
Algo así como:
$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);
¿Hay una manera de hacer esto con PHP o MySQL? Todos los textos están codificados en utf-8.
ACTUALIZACIÓN
Mi aplicación es un sitio web de gran cantidad de literatura, donde los usuarios pueden añadir sus textos. Aquí está la tabla tengo:
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
Actualmente cuenta con unos 800k registros y pesos 4 GB, el 99% de las consultas son SELECT. Tengo todos los motivos para pensar que los números aumentan en forma de diagrama. No me gustaría almacenar textos en los archivos porque hay una lógica bastante pesada y mi sitio web tiene bastantes visitas.
Si está almacenando datos binarios, use un campo BLOB, no texto. – Brad
Es posible que desee reconsiderar su veto en el almacenamiento basado en archivos. No estoy seguro de lo que quiere decir con "lógica pesada", pero no veo cómo el almacenamiento de los textos en la base de datos será mejor que los archivos de un sitio con mucho tráfico. – grossvogel