在将文本存储在数据库中之前对其进行压缩
我需要在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
目前它有大约80万条记录,权重为4 GB,99%的查询是SELECT。我完全有理由认为数字在图表上增加。我不想在文件中存储文本,因为周围有相当沉重的逻辑,我的网站有很多点击。