Мне нужно хранить очень большое количество текста в базе данных MySQL.Это будут миллионы записей с типом поля LONGTEXT, а размер базы данных будет огромным.
Итак, я хочу спросить, есть ли безопасный способ сжатия текста перед его сохранением в поле TEXT для экономии места, с возможностьючтобы извлечь его обратно, если необходимо?
Что-то вроде:
$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);
Есть ли способ сделать это с php или mysql?Все тексты имеют кодировку utf-8.
ОБНОВЛЕНИЕ
Мое приложение представляет собой большой литературный веб-сайт, где пользователи могут добавлять свои тексты.Вот таблица, которая у меня есть:
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
В настоящее время она имеет около 800 тыс. Записей и весит 4 ГБ, 99% запросов - это SELECT.У меня есть все основания полагать, что цифры увеличиваются схематически.Я не хотел бы хранить тексты в файлах, потому что вокруг довольно тяжелая логика, и у моего сайта довольно много посещений.