在MySQL数据库中存储XML数据的最佳方式,有一些特定要求[关闭]

w9apscun  于 12个月前  发布在  Mysql
关注(0)|答案(4)|浏览(155)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

7天前关闭
社区在7天前审查了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我正在从一个服务接收XML数据,我收到的测试数据有大约300个XML节点,显然太多了,无法在MySQL数据库中创建单独的行。
问题是我们需要存储 * 所有 * 数据,并且我们可能需要在将来的某个时候再次引用数据-我们不能只处理一次并删除XML字符串。
在MySQL数据库中存储这些数据的最佳方法是什么?
我预测,按照预测的速度,如果我们在几个月内以TEXT存储原始XML数据,数据库可能会增长到大约500 MB。

wnavrhmk

wnavrhmk1#

您可以创建一个blob列(即mediumtext列)。您可以压缩XML,然后存储在MySQL中,而不是将XML纯粹作为字符串插入DB中。
当你从MySQL中读取数据时,你需要再次解压缩它。由于XML是文本,你会得到非常高的压缩率(接近80%的压缩率)。这个想法是,磁盘IO比压缩/解压缩花费的时间要长得多,而压缩/解压缩主要是处理器限制的。
缺点是你将不再能够使用SQL查询或进行全文搜索。

8oomwypt

8oomwypt2#

最好的方法是不将XML存储在DB中,但我对这个特定问题有经验。
500 MB对于MySQL来说不算什么,尤其是对于TEXT数据库,因为它们不存储在行缓冲区中。

brtdzjyr

brtdzjyr3#

尝试使用LOAD XML命令。此语句在MySQL 5.5中可用。

gab6jxml

gab6jxml4#

这在很大程度上取决于您想对数据做什么--如果您想在XML中搜索内容,那么decomposing it into a tree将提供给予更好的查询性能。
500 Mb并不是一个巨大的数据量-问题在于如何引用和搜索它。如果它只是用于归档目的,或者你永远不需要在XML内部搜索,那么压缩它,然后(例如)base64编码将把它减少到80 Mb以下

相关问题