我需要在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
目前有大约800k条记录,占用4 GB的空间,99%的查询是SELECT。 我有充分的理由认为这些数字将呈几何级增长。 因为周围存在相当重的逻辑,并且我的网站有相当多的点击量,所以我不想在文件中存储文本。